Updates on the campus response to coronavirus (COVID-19)

ECE Course Syllabus

ECE4122 Course Syllabus

ECE4122

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


CMPE Degree
This course is Elective for the CMPE degree.

EE Degree
This course is Elective for the EE degree.

Lab Hours
2 supervised lab hours and 0 unsupervised lab hours

Course Coordinator
Blough,Douglas M

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 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 engineering applications.
  2. Create high-quality visual 3-D images of complex objects using the OpenGL graphics library.
  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 RAII ans smart pointers
  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 CMake.

Student Outcomes
In the parentheses for each Student Outcome:
"P" for primary indicates the outcome is a major focus of the entire course.
“M” for moderate indicates the outcome is the focus of at least one component of the course, but not majority of course material.
“LN” for “little to none” indicates that the course does not contribute significantly to this outcome.
  1. ( P ) An ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics
  2. ( LN ) An ability to apply engineering design to produce solutions that meet specified needs with consideration of public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors
  3. ( LN ) An ability to communicate effectively with a range of audiences
  4. ( LN ) An ability to recognize ethical and professional responsibilities in engineering situations and make informed judgments, which must consider the impact of engineering solutions in global, economic, environmental, and societal contexts
  5. ( LN ) An ability to function effectively on a team whose members together provide leadership, create a collaborative and inclusive environment, establish goals, plan tasks, and meet objectives
  6. ( M ) An ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering judgment to draw conclusions
  7. ( P ) An ability to acquire and apply new knowledge as needed, using appropriate learning strategies.

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.