ECE Course Outline

ECE4122

Advanced Programming Techniques for Engineering Applications (2-2-3)

Prerequisites
ECE 2035 [min C] or ECE 2036 [min c]
Corequisites
None
Catalog Description
Course covers a number of programming techniques for distributed and parallel computing and other advanced methods, such as multiprecision arithmetic and nonblocking I/O.
Textbook(s)
No Textbook Specified.
Course Objectives - As part of this course, students:

  1. become familiar with various methods for concurrent and distributed programming methods.
  2. program complex engineering applications in the C or C++ programming language.
  3. become familiar with three-dimensional graphics library interfaces.
  4. implement advanced encryption techniques using multi-precision math libraries.
  5. become familiar with both the creation and use of the popular ????????????Smart Pointers???????????? approach for memory manage- ment in C++ programs.
  6. program client-server applications using non-blocking system I/O calls.
Course Outcomes - Upon successful completion of this course, students should be able to:

  1. determine when to use distributed computing methods or parallel computing methods to solve complex engi- neering applications.
  2. create high-quality visual 3-D images of complex objects using the OpenGL graphics int
  3. implement several multi-precision public key and private key encryption methods using the GNU multi-precision mathematical library.
  4. create programs without memory leaks using the Smart Pointers approach.
  5. implement client/server applications using the sockets API and using the non-blocking appraoch for handling multiple clients simultaneously.
  6. manage large programming tasks using Makefiles.
Topical Outline
1. Distributed programming with MPI (3 lectures)
   (a) Synchronous and Asychronous communications
   (b) Group Communication and Synchronization 

2. Parallel programming with pthreads (3 lectures)
   (a) Mutual Exclusion
   (b) Thread Synchronization

3. Object-Oriented code templates (2 lectures)
   (a) Typesafe callbacks with templates 
   (b) Re-usable code with templates

4. Introduction to Data Mining using Map-Reduce (3 lectures) 
   (a) Google's approach to managing large datasets

5. Event-based Programming (2 lectures) 
   (a) Typesafe event handlers.

6. Introduction to graphics programming using OpenGL (3 lectures) 
   (a) 2-D and 3-D coordinate transformations

7. Using web services (3 lectures) 
   (a) Introduction to SOAP
   (b) Performance considerations with web servcies 

8. Using non-blocking system I/O (2 lectures)
   (a) Asynchronous input-output programming 
   (b) Handlng multiple sockes with select

9. Introduction to database programming using MYSQL (2 lectures) 
   (a) The MYSQL database access API
   (b) Security Issues with database programming.