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
Campus/Online:
On-campus and online
Requisites:
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):
- Software Engineering , 10th Edition , Ian Sommerville , Pearson , 2016 , ISBN No. 0133943038
- 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):
- 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)