Course Syllabus:
ECE 2036: Engineering
Software Design
Spring 2014
Dr. Benjamin Klein
Office: TSRB 438
Office hours 1- 2 pm
& 3 – 4 pm Wednesdays in Van Leer E378
Summary
ECE2036
is designed to cover the C++ programming language in detail, with emphasis on
engineering applications and efficient algorithms. Additionally we will cover
programming methods for embedded systems using C++. There are numerous
programming assignments, each of which enforces some aspect of efficient
programming in C++. The course covers object oriented programming including
polymorphism, C++ references, C++ operator overloading, and templates.
Topic List
•
Basic
syntax, structure of a program
•
Compiling,
linking, libraries
•
Data
types, pointers and arrays, data structures
•
Dynamic
memory
•
Control
structures, functions
•
Classes,
member functions, constructors, destructors
•
Class
hierarchies and inheritance
•
Polymorphism,
virtual functions
•
C++
references
•
Operator
overloading
•
Templates
and the Standard Template Library (STL)
•
Containers
•
Embedded
programming with C and C++
•
Numerical
programming
Textbook, supporting materials, and resources
Primary
textbook: C++ How to Program, 9th
Edition by Paul Deitel and Harvey Deitel (required).
This includes a code to access a website with instructional videos and
other supporting materials.
Supporting textbook (free): Thinking in C++, 2nd Edition by Bruce Eckel.
Available at: http://original.jamesthornton.com/eckel/
Useful
websites:
· Class materials will
be posted to t-square.gatech.edu
· Dr. Hamblen’s
ECE2036 website: http://users.ece.gatech.edu/~hamblen/2036/
· Easy to read C++
introduction and reference at http://cplusplus.com
· Mbed handbook and
cookbook at mbed.org
Mbed module and parts kit (required): the mbed
module is a embedded
processor / microcontroller and associated parts that you will program as part
of some assignments. This may prove
useful in other labs as well; for example, your senior design project. You may purchase this kit ‘used’
from a student, or ‘new’ at:
https://epay.gatech.edu/C20793_ustores/web/product_detail.jsp?PRODUCTID=2516
The
‘new’ mbed kits will arrive in a few
weeks.
The
Jinx computing cluster is a Linux-based system that can be accessed by using ssh (a good Windows ssh client is
PuTTY) and connecting to jinx-login.cc.gatech.edu
. This cluster can be used
for writing, compiling, and running your code. However, you are free to use any of the
available computing resources at GT, as well as your personal computing hardware,
and any operating system. You have
access to computers running the Linux operating system in Klaus 1448.
Grading, policies and procedures
Programming
projects will be posted to t-square.gatech.edu. There will be roughly 5-7 of them over
the course of the semester. It is
the responsibility of the student to check for projects on t-square
frequently. The last project may be
due during the last week of classes (‘dead week’). The procedure for turning in each
project may vary and will be detailed at the time the project is assigned. In general, you will have to provide
your source code.
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 advice 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. Copied code, or code
copied with trivial changes (renamed variables and the like) is not allowed.
Grading
breakdown:
Programming
Assignments / Projects: 35%
Midterm
Exam 1: 20%
Midterm
Exam 2: 20%
Final
Exam: 25%
The
course will be graded on a ‘curve’, so that the final course GPA is
in the range 2.4 – 2.8, per School of ECE guidelines.
The
class lectures will cover the material in a discussion format, where the
instructor will explain how do achieve certain goals using C++, and will expect
the students to participate with discussion and suggestions. The instructors
encourage (and expect) you to participate actively in the learning process. In
particular, we welcome your comments and questions as we cover material in
class. One-way lectures quickly becoming boring, both for you
and for me.
Exam
dates and other important announcements may be made in class, on t-square, or both.
Students are responsible for making themselves aware of the content of
all such announcements.
Please
do not tell me what grade you need to earn in order to stay in school / receive
a scholarship / etc. Also, please
don’t ask about additional work you can perform to improve your
grade. All students will be graded equally
on the basis outlined above.
Grading individual students on any other basis would be unfair and
inappropriate.