CV
CSC223: Software Engineering (Fall 2021)
Instructor: Johanna Brewer
TA: Ananda Montoly and Zampa Provenzale
Place: Seelye 106
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 7, 2021
Welcome & Introduction
What is Software Engineering (SE)?
Week 2
Sep 14, 2021
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 13)
Week 3
Sep 21, 2021
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 28, 2021
Architecture & Abstraction
How Do We Model Complex Systems?
Ian Sommerville. (2021). Engineering Software Products Chap. 4: Software Architecture.
Fabiano Dalpiaz, Xavier Franch, and Jennifer Horkoff. (2016). iStar 2.0 Language Guide.
Week 5
Oct 5, 2021
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 4)
Week 6
Oct 12, 2021
Autumn Recess
Week 7
Oct 19, 2021
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 26, 2021
Risk Mitigation
How Do We Engineer Robust Systems?
Project Plan (Due: Oct 25)
Week 9
Nov 2, 2021
Programming Ethics
How Do We Engineer Just Systems?
Don Norman. (2013). The Design of Everyday Things Chap. 5: Human Error? No, Bad Design.
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 10
Nov 9, 2021
Tools & Techniques
How Do We Collaborate On Code?
Ian Sommerville. (2021). Engineering Software Products Chap. 10: DevOps & Code Management.
Week 11
Nov 16, 2021
(Re)Assessing Challenges
Why Does This Feel So Hard?
Prototype (Due: Nov 15)
Week 12
Nov 23, 2021
Deployment & Evaluation
When Do We Launch? What Do We Do After?
Jargon Report (Due: Nov 23)
Week 13
Nov 30, 2021
Student-Led Topic
What Do We Want to Learn More About?
Week 14
Dec 7, 2021
Demo Day
Final Presentations
Minimum Viable Product (Due: Dec 6)