ECE3090 - Software for Engineering Systems

Instructor

Dr. George F. Riley
Office: Klaus 3360
Office hours: (TBD) in Klaus 3360
Email: riley@ece.gatech.edu

Teaching Assistant

Hanseung Lee
Office Hours Mon 3-5pm, Tue 10am - 12noon, Wed 12-2pm
Location: Outside of Klaus3359
Email: hanseung.lee@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 Jinx 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 jinx cluster from there.

Turning in Programming Assignments

There is nothing to do to turn in your programming assignments provided you have it on jinx in the specified (for each assignment) subdirectory. A script will be run on the due date and time that copies your files to the instructor's (and TA's) home for grading.

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 40%
Midterm 25%
Final Exam 25%
Class Participation 10%
Total 100%

Syllabus

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




  memory-layout-1a.c 




  memory-layout-1b.c 



  C++ Classes    ex-classes.pdf 




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



  ConstructorsDestructors.cc    ConstructorsDestructors.cc 



  Operator Overloading    Operators-handout.pdf 




  operators.cc 
TueJan17   Operator Overloading (continued) 

TueJan17   Complex Calculator    Lab 1 assigned    Jan 27 



  Accessing the Jinx cluster    AccessingJinx.pdf 
ThuJan19   Member Functions (revised)    MemberFunctions-handout.pdf 



  member-functions.cc (revised)    member-functions.cc 
TueJan24   References and Arguments    References-handout.pdf 




  references.cc 
ThuJan26   Pointer Dereferencing    PointerDereferencing-handout.pdf 




  pointer-dereferencing.cc 
ThuJan26   Discrete Fourier Transform    Lab 2 assigned    Feb 4 
TueJan31   Dynamic Memory    DynamicMemory-handout.pdf 




  dynamic-memory.cc 
ThuFeb2   The GNU Debugger    gdb-refcard.pdf 



  gdb reference (50 pages)    gdb-reference.pdf 



  emacs reference    XEmacsReferenceCard.pdf 
TueFeb7   Dynamic Memory again    DynamicMemory2-handout.pdf 




  dynamic-memory2.cc 
TueFeb7   Matrix Calculator    Lab 3 assigned    Feb 17 
ThuFeb9   Subclassing    Subclassing-handout.pdf 




  subclassing.cc 



  Virtual Functions    Virtual-Functions-handout.pdf 




  virtual-functions.cc 
TueFeb14   Virtual functions continued 

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




  pure-virtual-functions.cc 



  Example from Thursday's class    q1-full.cc 
TueFeb21   Discussion of the Image Filtering lab 

TueFeb21   Image Filtering    Lab 4 assigned    Mar 5 
ThuFeb23   Smart Pointers    SmartPointers-handout.pdf 




  smartpointers.cc 




  VectorDeque-handout.pdf 




  vector-deque.cc 




  mt1-sample.pdf 
TueFeb28   Midterm Exam 

ThuMar1   Threads    GThreads-handout.pdf 




  create2.cc 




  gthread.h 




  gthread.cc 
TueMar6   Threads (continued) 

TueMar6   Path Loss Calculations    Lab 5 assigned    Mar 16 




  testGThread.cc 
ThuMar8   Object Cloning    ObjectCloning-handout.pdf 




  objectcloning.cc 
TueMar13   Barriers    Barriers-handout.pdf 




  barriers.cc 
ThuMar15   Recursive Descent 

TueMar20   Spring Break - NO CLASS 

ThuMar22   Spring Break - NO CLASS 

TueMar27   Templated Linked List Implementation    TemplateLinkedList-handout.pdf 
TueMar27   Templated Vector Class    Lab 6 assigned    Apr 6 
ThuMar29   Templated Vector Discussion 

TueApr3   Iterators    VectorIterators-handout.pdf 
ThuApr5   Sorted Containers    MapSet-handout.pdf 




  map-set.cc 
ThuApr5   Path Exploration    Lab 7 assigned    Apr 22 
TueApr10   Discussion of PathExploration assignment 

ThuApr12   Exceptions in C++    Exceptions-handout.pdf 




  exceptions.cc 
TueApr17   Static Members and Functions    StaticMembers-handout.pdf 




  static-members.cc 
ThuApr19   Streams    Streams-handout.pdf 




  fstreams.cc 




  sstreams.cc 
TueApr24   Template Smart Pointers    TemplateSmartPointers-handout.pdf 




  template-smart-pointers.cc 




  TemplateSmartPointersAgain-handout.pdf 




  template-smart-pointers-again.cc 
ThuApr26   NO CLASS; Extra Office Hours 12-4pm 





  SpecialIterators 




  special-iterators.cc 



  Midterm exam 2 from prior semester    oldmt2.pdf 
TueMay1   Final Exam 11:30 - 2:20 pm 


Contact Information:

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