ECE 59500 - Advanced Software Engineering

Course Details

Lecture Hours: 3 Credits: 3

Areas of Specialization:

  • Computer Engineering

Counts as:

  • EE Elective
  • CMPE Special Content Elective

Normally Offered:

Each Spring


On-campus and online


ECE 36800 and an additional 400-level Computer Engineering course in programming.

Requisites by Topic:

Fluency in a programming language (C, C++, Java, Python, etc.); software engineering processes and tools

Catalog Description:

Software engineering is a difficult 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 study principles of software engineering and discuss state-of-the-art research. In their course project, students will work to understand and extend the state of the art in software engineering. This course will specifically be focused on engineering processes and techniques for ensuring software quality (e.g., safety and security).

Required Text(s):

  1. Software Engineering , 10th Edition , Ian Sommerville , Pearson , 2016 , ISBN No. 0133943038
  2. Software Engineering at Google: Lessons Learned from Programming Over Time (e-book available through Purdue Libraries) , 1st Edition , Titus Winters; Tom Manshreck; Hyrum Wright , O'Reilly Media , 2020 , ISBN No. 1492082791

Recommended Text(s):

  1. The Mythical Man-Month: Essays on Software Engineering (e-book available through Purdue Libraries) , Frederick Brooks Jr. , Addison-Wesley Professional , 1995 , ISBN No. 9780201835953

Learning Outcomes

A student who successfully fulfills the course requirements will have demonstrated an ability to:

  • describe principles of software engineering
  • formulate and conduct a team-based research project in software engineering
  • consider the ethical implications of software engineering failures and successes
  • clearly describe scholarly findings to peers and to engineering practitioners, both verbally and in writing

Lecture Outline:

Weeks Major Topics
1 Introduction to course. Describe course research project
4 Software process and lifecycle: Requirements analysis, design, testing, release, maintenance
2 Empirical software engineering (socio-technical approaches and findings)
2 Reuse-oriented programming and open-source software (e.g. code search, trust)
2 Security and automated testing tools (static/dynamic/fuzzing)
1 Software improvement (code clones, similarity detection)
1 Software archaeology and code comprehension
2 Open source software supply chain

Assessment Method:

Homework, project, exams. (3/2022)