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