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, Thu 5-7pm
Location: Outside of Klaus3359
Email: tbd@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


TueFeb14


ThuFeb16


TueFeb21


ThuFeb23


TueFeb28   Midterm Exam 

ThuMar1


TueMar6


ThuMar8


TueMar13


ThuMar15


TueMar20   Spring Break - NO CLASS 

ThuMar22   Spring Break - NO CLASS 

TueMar27


ThuMar29


TueApr3


ThuApr5


TueApr10


ThuApr12


TueApr17


ThuApr19


TueApr24


ThuApr26


Contact Information:

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