15-313 Foundations of Software Engineering 15-313 - COURSE PROFILECourse Level: UndergraduateFrequency 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:riskqualitycostIncludes process consideration for software development:requirements documentationelicitation and evaluationdesigning for qualities such assecurityrobustnessscalabilityquality assurancetime and team managementeconomics of software developmentSolid 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)CanvasPiazzaClass slidesCourse 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 experienceMinimum Grades in Prereqs:D in 15214Corequisites: NonePrerequisite for: 15-210Anti-requisites: NoneCross-Listed: NoneSubstitutes: 15211 for 15214Related 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 ScienceMost Recent Syllabus: https://www.cs.cmu.edu/~ckaestne/15313/Special Permission Required: No(if yes, please see Notes)Units: 12Course Website:https://www.cs.cmu.edu/~ckaestne/15313/Department Website:https://www.csd.cs.cmu.eduCollege Website:http://www.cs.cmu.edu/Sample class notes:Slides: https://www.cs.cmu.edu/~ckaestne/15313/2016Sample Assignment:https://www.cs.cmu.edu/~ckaestne/15313/2016/extra/Homework6.pdfSample Lecture Recording:Typically no recorded lecturesNotes: Back to Course Profile List