ECE 3080 – Semiconductor Devices for Computer Engineering & Telecommunication Systems



Course Syllabus:


ECE 2036: Engineering
Software Design


Spring 2015


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/store_main.jsp?STOREID=227


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.


 


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 to 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.