ECE: Electrical & Computer Engineering
Accredited by ABET
Undergraduate Programs

ECE 3574 Applied Software Design

Fall 2016 textbook list

The Fall 2016 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.

Return to course list

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%

Return to course list