CV
CSC223: Software Engineering (Spring 2022)
Instructor: Johanna Brewer
TA: Wakana Ninohira and Yanning Tan
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
Jan 25, 2022
Welcome & Introduction
What is Software Engineering (SE)?
Week 2
Feb 1, 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: Jan 31)
Week 3
Feb 8, 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
Feb 15, 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. 2: Use Cases, Chap. 3: Activity Diagrams, Chap. 4: Class Diagrams, and Chap. 6: Object Diagrams.
Week 5
Feb 22, 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: Feb 21)
Week 6
Mar 1, 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 7
Mar 8, 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: Mar 7)
Week 8
Mar 15, 2022
Spring Recess
Week 9
Mar 22, 2022
Tools & Techniques
How Do We Collaborate On Code?
Ian Sommerville. (2021). Engineering Software Products Chap. 10: DevOps & Code Management.
Week 10
Mar 29, 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
Apr 5, 2022
(Re)Assessing Challenges
Why Does This Feel So Hard?
Prototype (Due: Apr 4)
Week 12
Apr 12, 2022
Deployment & Evaluation
When Do We Launch? What Do We Do After?
Jargon Report (Due: Apr 12)
Week 13
Apr 19, 2022
Student-Led Topic
What Do We Want to Learn More About?
Week 14
Apr 26, 2022
Demo Day
Final Presentations
Minimum Viable Product (Due: Apr 25)