This course is an introduction to applied software design methods for use in the writing of efficient, reusable, and modulator C++ programs. These methods include the use of the following: classes, inheritance, and polymorphism; design patterns; high-level programming techniques using libraries, generics, and containers; widgets, models, and views; software frameworks for embedded systems; and advanced techniques ranging from multi-threading to reflective programming.
Large-scale software systems are widely used in the design, analysis and testing of current computing systems. In addition, modern embedded systems run programs developed in high-level languages based on extensive software libraries. The ability to design and implement such software systems is an essential skill for computer engineers pursuing careers in industry and academia.
C- or better in 2574
This course requires students to design and develop software in C++ using class-based libraries and interface documentation. It is assumed that students have a level of programming experience commensurate with having successfully passed ECE 2574, an introduction to data structures and software engineering in C++.
Percentage of Course
|Introduction to class-based software libraries||10%|
|Inheritance and polymorphism||10%|
|Introduction to design patterns||10%|
|Generics and containers||10%|
|Introduction to processes, threads||10%|
|Inter-process communication and synchronization||10%|
|Models and Views||10%|
|Software life cycle models, unit and integration testing||10%|
|Software design for embedded systems||10%|