CS169: Software Engineering

CS 169: Software Engineering (Spring 2012, UC Berkeley). Instructors: Prof. David Patterson, Prof. Armando Fox, and Prof. Koushik Sen. 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, Product Lifetimes, Assurance, SaaS
Lecture 02 - Service Oriented Architecture, Cloud Computing, Client-Server Architecture
Lecture 03 - Ruby & Rails Intro for Java Programmers, Metaprogramming
Lecture 04 - Model-View-Controller; Models, Databases, and Active Record
Lecture 05 - Mixins and Duck Typing
Lecture 06 - Rails Basics, Active Record Basics, Controllers & Views
Lecture 07 - Form Submission; Redirection, the Flash and the Session; Intro to BDD; SMART User Stories
Lecture 08 - Introducing and Running Cucumber and Capybara
Lecture 09 - FIRST, TDD, and Getting Started with RSpec; Red-Green-Refactor
Lecture 10 - More Controller Specs and Refactoring; Fixtures & Factories; Stubbing the Internet
Lecture 11 - Coverage, Unit vs. Integration Tests, Other Testing Concepts, and Perspectives
Lecture 12 - Single Sign-On and Third-Party Authentication
Lecture 13 - Working in Teams vs. Individually
Lecture 14 - Legacy Code and Refactoring
Lecture 15 - Identifying What's Wrong: Smells & Metrics
Lecture 16 - Solid Class Architecture & Class-Level Refactoring; Intro Design Patterns
Lecture 17 - Design Patterns (Cont.)
Lecture 18 - Design Patterns (Cont.)
Lecture 20 - AJAX: History and the Big Picture
Lecture 23 - Operations: Development, Performance, Practical Security
Lecture 24 - Practical Operations: Security, Scalability, Stability
Lecture 25 - Automated Test Generation Using Symbolic Execution: Three Decades Later
Lecture 26 - Frontiers of Testing: Concolic Testing, Path Coverage
Lecture 27 - Delta Debugging
Lecture 29 - How GITHUB Works (Guest Lecture by Zach Holman)
Lecture 30 - Wrap-Up

CS 169 Software Engineering, Spring 2012
Instructors: Prof. David Patterson, Prof. Armando Fox, and Prof. Koushik Sen. Syllabus. Lecture Slides. Homework Assignments. Recommended Resources.