Virginia Tech®home

ECE 3574 - Applied Software Design (3C)

Course Description

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.

Why take this course?

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.

Learning Objectives

  • Use software design patterns and application programming interface (API) specifications to implement efficient and portable software
  • Design and implement multi-threaded and multi-process applications that rely on standardized inter-process communication and synchronization mechanisms
  • Design and implement complex software applications based on portable software frameworks and event-driven programming
  • Design, implement, and peform testing strategies including unit and integration testing