Software Engineering (软件工程实践), Spring 2022



21 Feb. Introduction: Software Engineering Margaret Hamilton's talk at ICSE'18
28 Feb. Software Development Lifecycle The Joe Test
Lab: Version Control and Git (Project II)
7 Mar. Foundations of Mobile App Development
(Guest Lecture by Dr. Liangyu Chen)
14 Mar. Requirment Analysis & Use cases Writing Effective Use Cases
Lab: Use case diagrams & schema (Project I, II)
21 Mar. System sequence diagram & Object Model General Guide For Exploring Large Open Source Codebases
28 Mar. Domain Analysis and Domain Model Domain Model v.s. Data Model
Lab: System sequence diargram, Activity diagram and Domain model,
Project Presentation (Project I, II)
2 April Design Basics & Principles Good Programming Principles
11 April Design Patterns Design patterns implemented in Java
Lab: design sequence digram, class diagram and design patterns
18 April Software Architecture
Better Design: EasyChair v.s. HotCrap (Hot Crap!)
25 April Foundations on Software Testing
Lab: JUnit Testing
9 May Coverage-based Software Testing Code Coverage at Google,
Does mutation testing improve testing practices?
Lab: Coverage-based testing (ISP, Graph, Logic, Mutation)
16 May GUI Testing & Bug reproduction/localization Android Monkey,
The Themis Benchmarks
23 May Build System & Continuous Integration
Lab: CI & Themis
30 May Project Management
6 June Course Wrapup
Lab: Course Project II and III
13 June Course Presentation (Project II and III)
20 June Final Examination (cancelled!)



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