ECE3090 - Software for Engineering Systems

Instructor

Dr. George F. Riley
Office: Klaus 3360
Office hours: Tue-Thu 10:00-11am in Klaus 3360
Email: riley@ece.gatech.edu

Teaching Assistant

Vivek Kumar
Office Hours Monday 12:30 - 2:00, Friday 1:00 - 2:30
Location: Klaus 1448.
Email: vivekkumar@gatech.edu

Course Summary

ECE3090 is designed to cover the C and C++ programming languages in detail, with emphasis on engineering applications and efficient algorithms. There are numerous programming assignments, each of which enforces some aspect of efficient programming in C/C++. The course covers object oriented programming including polymorphism, C++ references, C++ operator overloading, and templates.

Teaching Philosophy

The class web page will contain information about the material covered in each lecture, including pdf files of the handouts and program examples in text form. Students should check the web page before each class to be sure they have up-to-date handouts. The class lectures will cover the material in a discussion format, where the instructor will explain how do achieve certain goals using C and C++, and will expect the students to participate with discussion and suggestions. I encourage (and expect) you to participate actively in the learning process. In particular, I welcome your comments and questions as we cover material in class. One-way lectures quickly becoming boring, both for you and for me. Also, I have found that students often learn more from other students comments than from the instructor! By asking lots of questions, your understanding of the material will be deepened significantly, and the course will be much more fun!

Teaching/Learning Goals

The purpose of this course is for you to have the skill to write efficient and correct programs in C/C++ as needed in your career as an engineer. Students will understand how to write efficient code, and how to effectively debug code during the development process. In particular, we will learn and understand (at a minimum):

Textbooks


Policy for Completing Out-of-Class Assignments

The policy for how to complete all of your programming assignments is simple. Every student must turn his or her own work. You MAY NOT copy code from others in any way. You MAY NOT use solutions that others have developed as the basis for your solutions. However, you ARE allowed to discuss the problems with others, including fellow students, teaching assistants, and the instructor. You ARE allowed to solicit and obtain help in design and debugging your solutions. You CAN show others your code and ask for advise about why it is not working or how to make it work better. But to be totally clear, you MUST implement your own solution. If someone helps you, you still MUST enter every line of code of your solution personally, and you MUST fully understand every part of your submission.

Computing Resources

We have a newly installed linux-based computing cluster known as the Hogwarts cluster. This platform is what we will use to test and grade all of your programming assignments, so it makes sense that you would want to develop and debug your assignments there. However you are free to use any of the available computing resources at GT, as well as on students personal computing hardware. However, all grading and testing of your submissions will be done on the hogwarts cluster. You also have access to the linux system in Klaus 1448, so anyone who has difficulty using "ssh" (perhaps from Windows) can use any of the 1448 machines and ssh to the hogwarts cluster from there.

Turning in Programming Assignments

We are working on an automatic program submission procedure that will simply copy each student's program from the appropriate subdirectory on dumbledore.cc.gatech.edu to a location where they will be compiled and graded. This procedure is not yet complete; the class will be informed via email and in class when this is ready.

Getting Help

Please see Prof. Riley during office hours (or other times by EMail appointment), or the teaching assistant during his office hours for assistance in progamming projects. You are also free to discuss the project with other students as disucssed in the above policy.


Grading

Projects 50%
Midterm 20%
Final Project 20%
Class Participation 10%
Total 100%

Syllabus

  Day    Month     Date     Description     Handout     Due Date  
MonAug17   Understanding Memory Layout    ex-memory-layout.pdf 




  memory-layout-1a.c 




  memory-layout-1b.c 



  C++ Classes    ex-classes.pdf 




  classes.cc 
WedAug19   Constructors and Destructors    Constructors-Destructors.pdf 



  ConstructorsDestructors.cc    ConstructorsDestructors.cc 



  Operator Overloading    Operators-handout.pdf 




  operators.cc 
MonAug24   Member Functions    MemberFunctions-handout.pdf 




  member-functions.cc 
MonAug24   Complex Calculator    Lab 1 assigned    Mon Aug 31 
WedAug26   References and Arguments    References-handout.pdf 




  references.cc 



  Dynamic Memory    DynamicMemory-handout.pdf 




  dynamic-memory.cc 
MonAug31   Dynamic Memory (again)    DynamicMemory2-handout.pdf 




  dynamic-memory2.cc 
WedSep2   The GNU Debugger    gdb-refcard.pdf 
WedSep2   Matrix Calculator    Lab 2 assigned    Wed Sep 16 
MonSep7   School Holiday 

WedSep9   Subclassing    Subclassing-handout.pdf 




  subclassing.cc 



  Virtual Functions    Virtual-Functions-handout.pdf 




  virtual-functions.cc 



  Pure Virtual Functions    Pure-Virtual-Functions-handout.pdf 




  pure-virtual-functions.cc 
MonSep14   Smart Pointers    SmartPointers-handout.pdf 




  smartpointers.cc 
WedSep16   Object Cloning    ObjectCloning-handout.pdf 
WedSep16   Fast Fourier Transform    Lab 3 assigned    Wed Sep 30 
MonSep21   Guest Lecture by Prof. Yezzi 

WedSep23   Guest Lecture by Prof. Yezzi 




  Templates Web Link    http://www.cplusplus.com/doc/tutorial/templates/ 
MonSep28   Vectors    Vectors-handout.pdf 




  vector.cc 




  GFRVec.h 




  GFRVec1.h 
WedSep30   Templated Linked List Implementation    TemplateLinkedList-handout.pdf 




  templatelinkedlist.cc 
MonOct5   Fall Break 

WedOct7   Templated Linked List (continued) 

MonOct12   Mid-Term Exam 

WedOct14   Exam Review and Lab 4 Discussion 

WedOct14   2D Fast Fourier Transform    Lab 4 assigned    Fri Oct 30 
MonOct19   Iterators    VectorIterators-handout.pdf 




  vector-iterators.cc 
MonOct19   Sorted Containers    MapSet-handout.pdf 




  map-set.cc 
WedOct21   Exceptions in C++    Exceptions-handout.pdf 




  exceptions.cc 
MonOct26   Streams    Streams-handout.pdf 




  fstreams.cc 




  sstreams.cc 
WedOct28   Special Iterators    SpecialIterators-handout.pdf 




  special-iterators.cc 
WedOct28   Path Loss    Lab 5 assigned    Fri Nov 13 



  QDisplay API Document    QDisplay.pdf 
MonNov2   Bresenhams Algorithms    Bresenham-handout.pdf 




  bresenham-line-circle.cc 
WedNov4   Image Rotation    ImageRotation-handout.pdf 




  rotations.cc 
MonNov9   Image Filtering    ImageFiltering-handout.pdf 




  filtering.cc 
WedNov11   Final Project Discussion 

WedNov11   Final Project - Path Exploration    Lab 6 assigned    Mon Dec 7 
MonNov16   Sorted Data Structures    SortedStructures-handout.pdf 




  sorted-structures.cc 
WedNov18   Multi-Threaded 2D FFT    ThreadedFFT-handout.pdf 




  threaded-fft.cc 
MonNov23   Mutexes    Mutexes-handout.pdf 




  threaded-fft-mutex.cc 
WedNov25   Barriers    Barriers-handout.pdf 




  threaded-fft-barrier.cc 



  Leslie Lamport's Bakery Algorithm    Bakery-handout.pdf 




  threaded-fft-bakery.cc 
MonNov30   No Class. Extended Office Hours 

WedDec2   No Class. Extended Office Hours 

MonDec7   Final Exam 6:00 - 8:50 pm 


Contact Information:

riley@ece.gatech.edu
School of Electrical and Computer Computing
Georgia Institute of Technology
Atlanta, GA 30332-0250