15-313 - COURSE PROFILE
Course Level: Undergraduate
Frequency Offered: Generally offered every fall semester - confirm course offerings for upcoming semesters by accessing the university Schedule of Classes.
Course Relevance (who should take this course?): Any students that expect to write code in large scale and collaborative software projects. Students who are interested in taking on more responsibilities in a software team, including interests toward software project management. Students interested in the larger picture and tradeoffs involved in software engineering in practice.
Key Topics: |
Background Knowledge: |
Learning Resources: |
- Practical skills for software engineers in real-world projects and teams.
- Making real-world tradeoff decisions regarding:
- Includes process consideration for software development:
- requirements documentation
- elicitation and evaluation
- designing for qualities such as
- security
- robustness
- scalability
- quality assurance
- time and team management
- economics of software development
|
Solid technical foundation of software construction from 15-214 or equivalent (solid programming skills, unit testing, and object-oriented analysis and design, design patterns, and frameworks).
|
- Various readings provided (see course web page)
- Canvas
- Piazza
- Class slides
|
Course Goals/Objectives: |
Assessment Structure: |
|
Students will learn to:
- Understand software engineering as a human activity and business concern.
- Elicit, describe, and evaluate a system's requirements.
- Apply measurements and metrics to make deliberate judgements about process, quality assurance, and other decisions in the development process.
- Design a software system and evaluate a design with regard to various quality attributes, including security, scalability, robustness, and usability.
- Develop and justify a quality-assurance strategy for a software project, including making decisions about when and how to use testing, inspection, static and dynamic analysis, and formal methods.
- Plan the process and manage a software project, including deciding how much upfront design to perform, agile practices, monitoring risk, understanding team dynamics, open source software.
|
- Assignments: 50%
-
Midterm: 15%
-
Final: 20%
-
Participation: 10%
-
Quizzes: 5%
|
- Prerequisites Required: 15214 or equivalent experience
- Minimum Grades in Prereqs:
D in 15214
- Corequisites: None
- Prerequisite for: 15-210
- Anti-requisites: None
- Cross-Listed: None
- Substitutes: 15211 for 15214
- Related Courses: Builds on 15-214 (Principles of Software Construction), provides a good foundation for 15-413 (Software Engineering Practicum) and 17-413 (Software Engineering Reflection)
- Reservations: Some reservations are for Undergraduates in Electrical and Computer Engineering; Some reservations are for Undergraduates in Computer Science
|
Most Recent Syllabus: https://www.cs.cmu.edu/~ckaestne/15313/ |
Special Permission Required: No (if yes, please see Notes) |
Units: 12 |
Course Website: https://www.cs.cmu.edu/~ckaestne/15313/ |
Department Website: https://www.csd.cs.cmu.edu |
College Website: http://www.cs.cmu.edu/ |
Sample class notes: Slides: https://www.cs.cmu.edu/~ckaestne/15313/2016 |
Sample Assignment: https://www.cs.cmu.edu/~ckaestne/15313/2016/extra/Homework6.pdf |
Sample Lecture Recording: Typically no recorded lectures |
Notes:
|
Back to Course Profile List |