ECE Course Outline


Engineering Software Design (3-3-4)

ECE 2020/2030 [min C] and ECE 2025/2026* [ min C]* Prerequisites indicated with an asterisk may be taken concurrently with ECE2036
Catalog Description
Object-oriented software methods for engineering applications. Numerical analysis methods; simulations and graphical presentation of simulation results; analysis of numerical precision. Programming projects.
Deitel and Deitel, C++, How to Program (10th edition), Prentice Hall. ISBN 9780134448848 (required)

Eckel, Thinking in C++: Introduction to Standard C++, Volume One (2nd edition), Prentice Hall, 2000. ISBN 0139798099, ISBN 9780139798092 (required) (comment: text is available free on line at

Topical Outline
Required Topics:
   1.	Review of C basic syntax, compilation, linking, libraries, etc.
   2.	Defining and implementing classes, constructors, destructors etc.
   3.	Member functions, virtual functions, pure virtual functions
   4.	Argument passing variations (by value, by pointer, by reference)
   5.	Managing dynamic memory (new, delete)
   6.	Inheritance and subclassing
   7.	Using common tools, gdb, make, gprof, valgrind, emacs etc.
   8.	Floating Point precision and numerical analysis
   9.	Introduction to Templates, including data structures and algorithms in the Standard Template Library
   10.	Parallel processing and concurrency

Optional Topics:
   11.	Exceptions
   12.	Smart Pointers

Typical Programming Projects:
   1.	One dimensional and two dimensional Fast Fourier Transforms, using the Cooley-Tukey algorithm
   2.	Matrix multiplication using dynamic memory allocation for arbitrary sized matrices, and efficient representation for sparse matrices.
   3.	Wireless path loss computation through free space and obstructions.
   4.	Shortest path discovery with obstacles.
   5.	Image filtering and noise reduction in images.
   6.	Optimal path planning with environmental constraints given at run-time.
   7.	Localizing an arbitrary object in a visual image
   8.	Optimal (and non-optimal) search for solving a problem with multiple solutions