Software Engineering (软件工程实践), Fall 2023


Lectures (Tentative Schedule)

14 Sep. Introduction: Software Engineering Margaret Hamilton's talk at ICSE'18
21 Sep. Software Development Lifecycle The Joe Test
Lab: Version Control and Git (Project II)
28 Sep. Introduction of Mobile App Development
(Guest Lecturer: Prof. Liangyu Chen)
Lab: Build a demo Andorid app (preparing for Project II)
7 Oct. Requirment Analysis & Use cases Writing Effective Use Cases
Lab: Use case diagrams & schema (Project I)
12 Oct. Domain Analysis and Domain Model Domain Model v.s. Data Model, General Guide For Exploring Large Open Source Codebases
Lab: System sequence diargram, Activity diagram and Domain model (Project I)
2 Nov. Design Basics & Principles Good Programming Principles
Lab: Project Presentation --- New Features (Project II)
9 Nov. Design Patterns Design patterns implemented in Java
Lab: design sequence digram, class diagram and design patterns
16 Nov. Software Architecture Client/Server, Central Repository, Layered, Model-View-Controller, Pipe-and-Filter, Microservices.
Better Design: EasyChair v.s. HotCrap (Hot Crap!)
23 Nov. Foundations on Software Testing
Lab: JUnit Testing
30 Nov. Coverage-based Software Testing Code Coverage at Google,
Does mutation testing improve testing practices?
Lab: Coverage-based testing (ISP, Graph, Logic, Mutation)
7 Dec. Advanced Topics: Random Testing (Fuzzing), GUI Testing, Bug Reproduction AFL, Android Monkey,
The Themis Benchmarks, 软件分析与验证前沿课(本研直通课)
14 Dec. Build System & Continuous Integration
Lab: CI & Themis
21 Dec. Project Management
28 Dec. Course Wrapup
Lab: Course Project II and III
4 Jan. Course Presentation (Project II and III)
11 Jan. Final Examination



Acknowledgement: Some course slides are adapted from Ivan Marsic's lectures from Rutgers University.