CS 169: Software Engineering

CS 169: Software Engineering (Fall 2012, UC Berkeley). Instructors: Prof. David Patterson and Prof. Armando Fox. This course discusses ideas and techniques for designing, developing, and modifying large software systems. Function-oriented and object-oriented modular design techniques, designing for reuse and maintainability. Specification and documentation. Verification and validation. Cost and quality metrics and estimation. Project team organization and management.


Lecture 01 - Introduction, Software as a Service
Lecture 02 - Service Oriented Architecture, Cloud Computing, Pair Programming, Ruby 101
Lecture 03 - Everything is an Object, Every Operation is a Method Call
Lecture 04 - SaaS Architecture: Client-Server, HTML & CSS, Model-View-Controller
Lecture 05 - Databases and Migrations
Lecture 06 - Debugging, Finishing CRUD, Intro to Behavior-Driven Design, SMART User Stories
Lecture 07 - Enhancing Rotten Potatoes, Scenario Types, BDD Wrapup, HTML+CSS
Lecture 08 - Test-Driven Development
Lecture 09 - TDD: Fixtures, Model, Stubbing, Coverage, Other Testing Concepts; DRYing Out MVC
Lecture 10 - Single Sign-On and Third-Party Authentication, Associations & Foreign Keys
Lecture 11 - Associations: Has and Belongs to Many, Routes for Associations; Legacy Code
Lecture 12 - Legacy Code: Establishing Ground Truth, Method-Level Refactoring; Working in Teams
Lecture 13 - Working in Teams vs. Individually: Version Control, Effective Branching
Lecture 14 - Fixing Bugs: The Five R's; Design Patterns, UML Intro, Single Responsibility Principle
Lecture 15 - Design Patterns: Liskov Substitution Principle, Dependency Injection, Demeter Principle
Lecture 16 - JavaScript for Ruby Programmers, Functions & Constructors, DOM & jQuery
Lecture 17 - Asynchronous JavaScript and XML, JavaScript Warpup; Operations: Deployment
Lecture 18 - Operations: Performance, Continuous Integration, Feature Flags, Monitoring
Lecture 19 - Operations: Monitoring, Caching, Avoiding Abusive Queries, Defending Customer Data
Lecture 20 - JavaScript in Your Rails
Lecture 21 - From College to Career (Guest Lecture by Jesse Toth)
Lecture 22 - Pivotal Labs: Practice and Hiring (Guest Lecture by Danny Burkes)
Lecture 23 - Reconciling and Agility with Quality and Scale for Cosmos Big Data Ecosystem
Lecture 24 - Group Presentations