Spring 2013 textbook list
The Spring 2013 ECE textbook list is available online for students.
Current Prerequisites & Course Offering
For current prerequisites for a particular course, and to view course offerings for a particular semester, see the Virginia Tech Course Timetables.
ECE 3574 Applied Software Design (3C)
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.
What is the reason for 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.
Technical Elective. Typically offered: Fall, Spring. Program Area: Computers.
Prerequisites: C- or better in 2574.
Why are these prerequisites or corequisites required?
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++.
Department Syllabus Information:
Major Measurable 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
| Course Topics | |
|---|---|
| Topic | Percentage |
| Introduction to class-based software libraries | 10% |
| Inheritance and polymorphism | 10% |
| Introduction to design patterns | 10% |
| Generics and containers | 10% |
| Event-driven programming | 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% |



