CV
CSC223: Software Engineering (Fall 2022)
Instructor: Johanna Brewer
TA: Mariem Snoussi
Place: Seelye 301
Time: Tuesdays, usually 1:20-4pm, occasionally 7-9:30pm
Course Overview
All software that is used in the real world was created under real constraints. In this course students learn how to engage in the messy-guessy process of specing, planning, designing, and building a software product that they intend to deploy in the wild.

Classes follow a workshop format. We begin with a short lecture to unpack the readings, then switch to hands-on activities and group project work. The structure of the course simulates the experience of a junior software engineer and teaches students to learn on the job through contemporary readings and assignments, the largest of which is a 6-week group project to build a functional web application in Ruby on Rails. Students have full control over the design decisions, but they must impress one another with their choices as the semester culminates in a final demo day where teams vie to have their software voted Most Valuable Minimum Viable Product.
Learning Goals
  • Compare engineering methodologies
  • Practice rapid prototyping & agile development
  • Model complex system architectures
  • Design software that satisfies needs & constraints
  • Build & maintain a real system
Schedule
Week 1
Sep 6, 2022
Welcome & Introduction
What is Software Engineering (SE)?
Week 2
Sep 13, 2022
Product Management & Communication
Why is SE Challenging?
Ian Sommerville. (2021). Engineering Software Products Chap. 1: Software Products.
Ian Sommerville. (2021). Engineering Software Products Appx. 1: Product & System Engineering Processes.
Frederick Brooks. (1975). Mythical Man-Month Chap. 2: The Mythical Man-Month.
Frederick Brooks. (1975). Mythical Man-Month Chap. 5, 7, 9, 10, 11, 12, 13, or 14.
Hello Stack (Due: Sep 12)
Week 3
Sep 20, 2022
Agile Methods & Feature Driven Development
How Do Modern SE Teams Operate?
Ian Sommerville. (2021). Engineering Software Products Chap. 2: Agile Software Engineering.
Ian Sommerville. (2021). Engineering Software Products Chap. 3: Features, Scenarios, and Stories.
Week 4
Sep 27, 2022
Architecture & Abstraction
How Do We Model Complex Systems?
Ian Sommerville. (2021). Engineering Software Products Chap. 4: Software Architecture.
Russ Miles and Kim Hamilton. (2006). Learning UML 2.0 Chap. 3: Activity Diagrams, Chap. 4: Class Diagrams, and Chap. 6: Object Diagrams.
Fabiano Dalpiaz, Xavier Franch, and Jennifer Horkoff. (2016). iStar 2.0 Language Guide.
Week 5
Oct 4, 2022
User-Centered Design
How Do We Decide What to Build?
Don Norman. (2013). The Design of Everyday Things Chap. 1: The Psychopathology of Everyday Things.
Don Norman. (2013). The Design of Everyday Things Chap. 6: Design Thinking.
Group Contract & Competitor Analysis (Due: Oct 3)
Week 6
Oct 11, 2022
Autumn Recess
Week 7
Oct 18, 2022
Patterns & Services
How Do We Build Elegantly for Complexity?
Ian Sommerville. (2021). Engineering Software Products Chap. 6: Microservices Architecture.
Ian Sommerville. (2021). Engineering Software Products Chap. 8: Reliable Programming.
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. (1995). Design Patterns Chap. 1: Introduction.
Week 8
Oct 25, 2022
Risk Mitigation
How Do We Engineer Robust Systems?
Don Norman. (2013). The Design of Everyday Things Chap. 5: Human Error? No, Bad Design.
Project Plan (Due: Oct 24)
Week 9
Nov 1, 2022
Tools & Techniques
How Do We Collaborate On Code?
Ian Sommerville. (2021). Engineering Software Products Chap. 10: DevOps & Code Management.
Week 10
Nov 8, 2022
Programming Ethics
How Do We Engineer Just Systems?
Gonzalo Génova, M. Rosario González, and Anabel Fraga. (2006). Ethical Responsibility of the Software Engineer.
Colin M. Gray, Yubo Kou, Bryan Battles, Joseph Hoggatt, and Austin L. Toombs. (2018). The Dark (Patterns) Side of UX Design.
Week 11
Nov 15, 2022
Cromwell Day
Week 12
Nov 22, 2022
(Re)Assessing Challenges
Why Does This Feel So Hard?
Prototype (Due: Nov 21)
Week 13
Nov 29, 2022
Deployment & Evaluation
When Do We Launch? What Do We Do After?
Jargon Report (Due: Nov 28)
Week 14
Dec 6, 2022
Starting Up
How Do We Do This For Real For Real?
Week 15
Dec 13, 2022
Demo Day
Final Presentations
Minimum Viable Product (Due: Dec 12)