ECE 59500: Advanced Software Engineering

Lecture Hours:

Credits: 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.
 

Prerequisites:

  • 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.

Required Text(s):

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

Recommended Reference:

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

Lecture Outline:

  1. Software process and lifecycle: Requirements analysis, design, testing, release, maintenance
  2. Empirical software engineering; socio-technical approaches and findings
  3. Reuse-oriented programming and open-source software (e.g. code search, trust)
  4. Security and automated testing tools (static/dynamic/fuzzing)
  5. Software improvement (code clones, similarity detection)
  6. Software archaeology and code comprehension
  7. Software 2.0; AI and machine learning