ECE 3080 – Semiconductor Devices for Computer Engineering & Telecommunication Systems



Course Syllabus:


ECE 2036: Engineering
Software Design


Spring 2014


Dr. Benjamin Klein


bklein@gatech.edu


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.