ECE 59500: Advanced Software Engineering
Lecture Hours: 3
Area of Specialization: Computer Engineering
Catalog Description: Software engineering is a complex endeavor. Software engineers work in diverse teams to create and comprehend complex information, such as: code structure, implementation rationale, dynamic software behavior, change implications, and team dynamics. In this class, we will learn modern software engineering practices and discuss state-of-the-art research in software engineering. The students will work on research projects to understand and extend the state of the art in software engineering.
- Undergraduates: ECE 368 and another programming-intensive course: One of ECE 30862 (OOP), 461 (SE), 463 (Networks) 468 (Compilers), 469 (OS), comparable course from CS with instructor approval, or comparable experience (e.g. programming-intensive internship; substantial outside projects
- Graduate students: No formal prerequisites, but appropriate programming experience will be essential to understand the material.
Winters, Titus, Tom Manshreck, Hyrum Wright, and Safari, an O’Reilly Media Company. Software Engineering at Google. 1st ed. 2020. Available online in full-text through the Purdue Libraries.
Sommerville, Ian. Software Engineering. 10th ed. Pearson India; 2018. ISBN-10: 9332582696
Brooks, Frederick P. The Mythical Man-month: Essays on Software Engineering. Anniversary ed. Reading, Mass.: Addison-Wesley Pub., 1995. Web. Available online in full-text through the Purdue Libraries.
Assessments: Approximately 6 homework assignments, 1 midterm exam, 1 semester-long project
- Software process and lifecycle: Requirements analysis, design, testing, release, maintenance
- Empirical software engineering; socio-technical approaches and findings
- Reuse-oriented programming and open-source software (e.g. code search, trust)
- Security and automated testing tools (static/dynamic/fuzzing)
- Software improvement (code clones, similarity detection)
- Software archaeology and code comprehension
- Software 2.0; AI and machine learning