CV
CSC223: Software Engineering
Smith College, Fall 2024
Instructor: Dr. Johanna Brewer (deadroxy.com)
Place: Bass 204
Time: Tuesdays 1:20-4pm
Prereqs: CSC210, confidence in coding ability, and willingness to learn new languages
Course Overview
All software that is used in the real world was created under real constraints. In this course you learn how to engage in the messy-guessy process of specing, planning, designing, and building a software product that you intend to deploy in the wild.

Classes meet weekly on Tuesdays and sessions follow a workshop format. We begin with an interactive lecture to unpack the readings, then switch to hands-on activities and group project work. You should expect to devote 9 hours per week outside of class to complete your readings and assignments.

The structure of the course simulates the experience of a junior software engineer and teaches you to learn on the job through contemporary readings and trainings. The majority of the class is devoted to a 10-week group project to build a fully functional web-based bike share application in Ruby on Rails. Students have complete 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 & design methodologies
  • Practice rapid prototyping & human-centered design
  • Collaborate with your scrum team through agile development
  • Model complex system architectures with UML/iStar diagrams
  • Design software for the needs of specific user personas
  • Build a web application in Ruby on Rails, MySQL, HTML/CSS/JS
  • Manage a codebase on GitHub (and possibly deploy to Heroku)
Moodle
Access course materials, submit assignments
Discord
Post reflections, ask all questions, get updates
Calendly
Book an office hours spot
Gather
Join remote meetings (office hours, group work)
Reading Materials
Readings draw mainly from three books, all of which are recommended, none of which are required. You will be expected to reflect on ~2 chapters each week during the first half of the course. Readings will all be provided via Moodle and thus you are not obliged to obtain them yourself. However, the books listed below are certainly worth reading in their entirety.
Ian Sommerville. Engineering Software Products: An Introduction to Modern Software Engineering.
Don Norman. The Design of Everyday Things.
Frederick P. Brooks, Jr. The Mythical Man-Month: Essays on Software Engineering.
Assignments
The majority of your work will be devoted to a 10-week group project during which you specify, plan, design and build a software system using the Ruby on Rails web framework. You will submit documentation, code, and reports jointly, and you will demo your product at the end of the semester as a team. Before the project begins you will individually set up your own development environment and complete a ~12 hour series of trainings. You will share eight brief reflections (~100 words) on readings with each other; and you’ll compose a short (500-700 words) research report. All assignments are due Mondays at midnight.
Weekly Schedule
Week 1
Sept. 3
Welcome & Introductions
What is software engineering?
Syllabus review, origins of SE, meeting classmates, using the console
Week 2
Sept. 10
Product Management & Communication
Why is software engineering challenging?
Retrospectives, who/what/why, PMing, prototyping, stack overview
Readings
  • Sommerville - Chap. 1: Software Products
  • Sommerville - Ap. 1: Product & System Engineering Processes
  • Brooks - Chap. 2: The Mythical Man-Month
  • Brooks - Chap. 5, 7, 10, 11, 12, 13, or 14
Assignments
A1 - Hello Stack (Due: Sept. 9)
Week 3
Sept. 17
Agile Methods & Feature Driven Development
How do modern software engineering teams operate?
Agile, extreme programming, scrum, planning, estimation, features, stories, stack exploration
Readings
  • Sommerville - Chap. 2: Agile Software Engineering
  • Sommerville - Chap. 3: Features, Scenarios, and Stories
Assignments
T1 - Ruby Training (Due: Sept. 16)
S1 - Group Preferences Survey (Due: Sept. 18)
Week 4
Sept. 24
Architecture & Abstraction
How do we model complex systems?
System architecture, model view controller (MVC), diagramming
Readings
  • Sommerville - Chap. 4: Software Architecture
  • O'Reilly - Learning UML 2.0 Chap. 3, 4, 6: Activity, Class, and Object Diagrams
  • Dalpiaz, Franch, Horkoff - iStar 2.0 Language Guide
Assignments
T2 - Rails Basics Training (Due: Sept. 23)
Week 5
Oct. 1
User-Centered Design
How do we decide what to build?
Design thinking, qualitative methods, paper prototyping, personas, inclusive/universal design
Readings
  • Norman - Chap. 1: The Psychopathology of Everyday Things
  • Norman - Chap. 6: Design Thinking
Assignments
A2 - Competitor Analysis & Group Contract (Due: Sept. 30)
T3 - Rails MVC Training (Due: Sept. 30)
Week 6
Oct. 8
Patterns & Services
How do we build elegantly for complexity?
Microservices, statelessness, coupling, cohesion, coordination, design patterns, REST, CRUD, DRY, KISS, MVC redux
Readings
  • Sommerville - Chap. 6: Microservices Architecture
  • Sommerville - Chap. 8: Reliable Programming
  • Gamma, Helm, Johnson, Vlissides - Design Patterns Chap. 1: Introduction
Assignments
T0 - Bonus HTML/CSS/JS Training (Due: Oct. 7, Optional)
Week 7
Oct. 15
Autumn Recess
Enjoy your break!
Week 8
Oct. 22
Risk Mitigation
How do we engineer robust systems?
Tech debt, code smells, refactoring, project pre-mortems, scrum redux
Readings
  • Norman - Chap. 5: Human Error? No, Bad Design
  • Freakonomics - Failure Is Your Friend (Podcast)
Assignments
A3 - Project Plan (Due: Oct. 21)
T00 - Bonus Git/GitHub Training (Due: Oct. 21, Optional)
Week 9
Oct. 29
Tools & Techniques
How do we collaborate on code?
Pair programming, DevOps, version control, continuous integration, TDD/BDD
Readings
  • Sommerville - Chap. 10: DevOps & Code Management
  • Sommerville - Chap. 9: Testing (Optional)
Assignments
S2 - Midway Self Review (Due: Nov. 1)
Week 10
Nov. 5
Programming Ethics
How do we engineer just systems?
Ethical responsibility, dark patterns
Readings
  • Génova, González, Fraga - Ethical Responsibility of the Software Engineer
  • Gray, Kou, Battles, Hoggatt, Toombs - The Dark (Patterns) Side of UX Design
  • ACM Code of Ethics
Week 11
Nov. 12
Cromwell Day
Time to reflect
Assignments
A4 - Prototype (Due: Nov. 11)
Week 12
Nov. 19
(Re)Assessing Challenges + Deployment
Why does this feel so hard? When do we launch?
Scope creep, deploying to production
Assignments
J1 - Jargon Report (Due: Nov. 18)
Week 13
Nov. 26
Thanksgiving Break
Backup day
Week 14
Dec. 3
Starting Up
How do we do this for real for real?
Founding a tech startup
Week 15
Dec. 10
Final Presentations
Demo day!
Assignments
A5 - Minimum Viable Product (Due: Dec. 9)
S3 - Self-Team-Peer Review (Due: Dec. 13)
Communication
All online communication for this course will take place via Discord. If you do not already have an account, please create one. Join our server, then follow the instructions in the #welcome channel to set your nickname and pronouns.

CSC223-F24 Discord Server Invitation: https://discord.gg/DWH9nFM6gU

  • #announcements: Important notices about class times, deadlines, office hours, etc.
  • #general: Introduce yourself and discuss course-related material, off-topic ideas, etc.
  • #questions: Ask any non-personal questions you have here. Use threads to respond. And don’t be shy; if you are wondering something, someone else is probably puzzled too!
  • #reflections: Share your reactions, thoughts, or confusion about the weekly readings.
  • DMs: Message me directly for matters that require individual communication.

I will try to answer questions within 24hrs during the work week, but please ask your peers and TAs for help first. They will generally assist you more quickly; also remember I’m not available on weekends! Sometimes I miss DMs, so don’t worry about pinging me again if you’re waiting on a reply. Lastly, please note that I’m terrible at responding to email. I’ll read it, but you’ll either get a reply right away, or between two days and two years later.
Office Hours
Office hours are a time when you can ask me questions about... anything! Weekly hours are for any student who would like to chat with me and I hold them on a variable schedule. To see upcoming office hours and ensure you get a slot, please book a time via Calendly. Most office hours are hybrid; students can stop by in person in Bass 106 or virtually, but I will announce during class the weeks when appointments will only be held remotely on Gather.

Reserve Time via Calendly: https://calendly.com/johannabrewer

Virtual Meetings on Gather: https://gather.town/app/NfY57eEoJJb22wzP/InclusiveDesignLab
Grading
This course follows an “ungrading” approach. In keeping with how software is evaluated, you will primarily receive qualitative feedback and only be assessed on a simple scale: unacceptable (D/E); needs improvement (C); meets expectations (B); exceeds expectations (B+/A-); distinguished (A/A+). Additionally, you will review your own performance and weigh in on your final letter grade. Your overall assessment will be weighted to reflect the workload.

  • 50% Major project assignments & trainings
  • 20% Reading reflections & research report
  • 30% Class participation & presentations

Your success in this class will depend on your active engagement with both the material and your classmates because software engineering is not a solo endeavor. To do well, you must demonstrate that you are working to master both coding and communication.
Academic Integrity
As honorable software engineers, when we build on the code of those who came before us, we credit their contributions. Whenever you collaborate with others, whether in designated groups or informally as study partners, you must acknowledge your collaborators. Likewise, I expect you to always cite all sources used when preparing your assignments. This includes books, papers, articles, websites, blog posts, YouTube videos, StackOverflow pages, ChatGPT conversations, etc.
Participation & Absences
Though formal attendance will not be taken, you won’t be able to participate in class if you are not there. We only meet twelve times so your presence in each class matters. You should tell me in advance of a planned absence; and if you have an emergency, please inform me after you are safe. If you must isolate for health reasons, please use Discord to ask your peers to stream class for you via Zoom or Gather. Inform me ahead of time, but try to organize this yourself. Regardless, remember to stay home if you feel unwell.
Extensions & Lateness
It is important you work in a timely fashion. Programming assignments and reading reflections are due by midnight on Mondays. But if you need additional time to complete your individual work, DM me to request it, late is better than never. Extensions on group assignments will only be given when a team member’s Dean provides a written request.
Comfy Class Policies
Laptops and phones can be distracting, but they are important tools for us. Please avoid using your devices in class for purposes other than coursework. Hydration is essential, so bring beverages, but you must use closed containers to avoid spills. We have two breaks during which you can have a snack, but please refrain from eating during class. Everyone is welcome to use concentration accommodations like fidget toys, knitting, doodling, moving around, or sitting on the floor; just be mindful your focus doesn't disrupt others.
Fostering Respect & Inclusion
During this course we will be working closely together. When communicating with one another, I expect you to practice active listening. When someone is talking, focus on understanding what they are expressing rather than thinking of how you will respond. Additionally, keep in mind that our wide array of individual backgrounds shape our unique perspectives, so please respect one another when we have sincere differences of opinion.
Diversity Statement & Equity Commitment
As a mixed-race, Native, non-binary, neurodivergent person who was the first in their family to earn a doctoral degree, I have a stake in bettering, and first-hand knowledge regarding, the experience of marginalized folks in our society. I know that a welcoming learning environment can have a real impact, and so I am committed to making this classroom a comfortable place for all my students. Please let me know if you ever have thoughts, questions, or concerns about ensuring that we treat one another equitably.
Accessibility & Accommodations
Written course materials including readings, slides, and lecture notes will be provided as PDFs that are screen reader compatible and all audio/visual media will offer captions. If you have any issues accessing the materials, let me know as soon as possible and I will work to find a solution. Should you encounter barriers to participation in this or any other course, contact the Accessibility Resource Center via email at arc@smith.edu or by calling (413) 585-2071 to make an appointment to discuss support and accommodations.
Health Resources
College can be stressful, but you are not alone. Reach out for help if you are feeling unwell or overwhelmed. The Schacht Center on campus provides a variety of free & confidential health and counseling services. Email healthservices@smith.edu or call (413) 585-2250 for any medical concerns. To set up an appointment for mental health support you can email counselingservices@smith.edu or call (413) 585-2840 if you are in crisis.
Acknowledgments
Some of the materials used in this course are derived from previous classes at Smith, as well as similar courses taught at other institutions. Thanks to my academic colleagues, especially Alicia M. Grubb, for sharing their syllabi.