UNDER CONSTRUCTION! This notice will be removed when syllabus is stable.





Readings • Videos covering material not in lecture • Videos with more detail on material covered lightly in lecture

Lecture topics

Section activity (Thu/Fri)

HW due by following Monday 11:59pm


Tue 1/22

Course goals, organization, logistics, expectations

Intro to SW Engrg, Agile vs Plan & Document, SaaS, How to learn a new language and stack

Thu 1/24

2nd ed. draft Ch 1

1st ed.: 3.1–3.4

Ruby Intro

Pair programming; cloud computing; SW quality, legacy vs. beautiful code; productivity; trying some Ruby

Jumping into Ruby: start pairing on some exercises + Ruby Intro HW

Ruby intro HW

automatic extension to Feb 4


Tue 1/29

2e draft chapter: SaaS architecture

Ruby part 2

SaaS architecture; routes; SOA & microservices; REST & resources; RESTful APIs

Thu 1/31


Recommended: Work through “HTML— Structuring the Web” section of W3C HTML tutorial and “Bootstrap 4 in 30 minutes” FreeCodeCamp tutorial

Finish RESTful APIs; HTML & CSS; Hello World on Sinatra

more Ruby pairing; Hello World on Sinatra; play around with an API

HTTP intro (peer review due on 2/8 at 11:59pm)


Tue 2/5

Rails part 1


Ruby review; Hello World with cookies/sessions; RESTful thinking for app design

Thu 2/7

Rails part 2


Model-View-Controller & Rails; ActiveRecord intro; controllers, views

Rails walkthrough

Hangperson/Sinatra HW


Tue 2/12

Re-watch Rails Part 1 in edX, and/or re-read 4.1-4.3

Bonus content: SaaS TV: former Twitter VPE Raffi Krikorian on "Rails doesn't scale"

ActiveRecord intro; Rails debugging, forms, params, flash; SaaS on Sinatra vs. Rails

Thu 2/14

Re-watch Rails Part 2 in edX, and/or re-read 4.4-4.12

Finish Rails controllers/views

Rails; hints on "Enhancing RottenPotatoes" homework

Hangperson on Rails (peer grading component)


Tue 2/19

ESaaS 7.1-7.5

BDD with Cucumber & Capybara

SMART user stories & agile cost estimation

Running Cucumber & Capybara, Declarative/imperative scenarios

Effective customer meetings

Thu 2/21

ESaaS 7.6-7.9, 8.1-8.4

TDD with RSpec

Power Cucumber & Capybara

Intro to Rspec & Rails; Seams

Cucumber & Capybara / Mock customer meetings

HW due:

Enhancing RottenPotatoes


Tue 2/26

ESaaS 8.5-8.9

More on Scenarios

Thu 2/28

ESaaS Ch. 5

(Midterm 1 review - Prof Fox out)


Midterm 1 (Mon, 3/4)

HW due:

Cucumber & BDD

(not on midterm)


Tue 3/5

Review all Ch. 5

Associations and DRYing out Rails

Unit tests, seams, expectations, fixtures & factories


Group bid on project due 11:59pm Weds (see Piazza)

Thu 3/7

Ch. 10.3-10.9, 9.1-9.4


More on unit & functional testing

Coverage of this lecture is the last content that will be on midterm 1

HW due: BDD-TDD Cycle with Cuke & RSpec (10/6)


Tue 3/12

ESaaS 9.5-9.10  Refactoring & SOFA

Factories; Validations; Associations & through-associations;

CRC cards & just enough UML

Thu 3/14

ESaaS 6.1-6.4 OR watch "JavaScript, DOM, jQuery"

1 hour before section: Iteration 0 due  (10/13)

Saturday 11:59pm: Iter 1-1 due (10/13)

HW due: Homework 6: Acceptance-Unit Test Cycle


Tue 3/19

ESaaS 6.5-6.11 OR watch "AJAX & Jasmine"


Iter1-1 due Weds 11:59pm

Thu 3/21

Exploring a legacy codebase

Through-associations; approaching a legacy codebase; TDD wrapup

iter1 f2f

Iter 1-2 due

Spring Break!  March 25-29. Think about software while you are vacationing. Just kidding.


Tue  4/2

Code repo hygiene for agile teams 

Teams/project management; five R's of bugs

Responsible branching: pull requests are code reviews

Iter 2-1 due Weds 11:59pm

Thu 4/4

Ch. 12

Metrics, code smells, SOFA, Method level refactoring

Design reviews

Iter 2 f2f


Tue 4/9

ESaaS 6.5-6.11 OR watch "AJAX & Jasmine"

JavaScript, DOM, jQuery intro

Events, callbacks, AJAX, Jasmine

Thu 4/11

Carina Boo: JavaScript single-page app tutorial

Michael Ball: Accessibility

Iter 3 f2f

Iter 2-2 due


Tue 4/16

ESaaS 11.1-11.4

Design patterns for SaaS 11.1-11.4

Patterns & Antipatterns: SRP, OCP, LSP (the SOL of SOLID)

Thu 4/18

ESaaS 11.5-11.10

Demeter principle, Dependency injection, Patterns wrapup

Content of this lecture is the last set of topics for midterm 2 coverage

Iter 3-1 due

Midterm 2 (Mon, 4/22)


Tue 4/23

Intro dev-ops: responsiveness, availability, practical performance monitoring (Not covered on midterm)

Thu 4/25


Iter 3-2 due


Tue 4/30

Intro dev-ops: responsiveness, availability, practical performance monitoring

Iter 4 f2f

Thu 5/2

In-section technical presentations



Tue 4/30

Contrasts between P&D and Agile
Inspirational Wrap up

Thu 5/2

Poster session or in-class short presentations of projects, or we'll all get together and watch the videos

• Final project deliverables due (screencast, handoff)
• iter 4-2 due

• presentation critiques due

Iter4-2 (Fri 11:59pm, but extensions OK)