Software Engineering (软件工程理论与实践), Fall 2024

基本课程信息

Lectures (Tentative Schedule)

Date
Topic
Material
9 Sep. Introduction: Software Engineering Margaret Hamilton's talk at ICSE'18
20 Sep. Software Development Lifecycle The Joe Test
27 Sep. Lab: Version Control and Git (Project II)
4 Oct. Introduction of Web/iOS/Android/小程序/HarmonyOS Apps Development
飞书群
Lab: Build a demo 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 and René Just’s lectures from University of Washington.