ECE 59500 - Advanced Software Engineering

Lecture Hours: 3 Credits: 3

Areas of Specialization(s):

Counts as:
CMPE Special Content Elective
EE Elective

Experimental Course Offered: Spring 2021

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

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.

Required Text(s):
  1. Software Engineering, 10th Edition, Sommerville, Pearson, 2016.
  2. Software Engineering at Google, O'Reilly, 2020.
Recommended Text(s):
  1. The Mythical Man-Month: Essays on Software Engineering, Brooks.

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 & Automated testing tools (static/dynamic/fuzzing)
1 Software improvement (code clones, similarity detection)
1 Software archaeology and code comprehension
2 Software 2.0 -- AI & machine learning