ECE 2036 Engineering Software Design
J. Hamblen

NOTE: This course has a new textbook, so significant material will be expanded, deleted, and added during the course.

 

ECE students working on mbed projects.         A C++ program in Microsoft’s Visual Studio.

 

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, it will cover:

C Pointers and Arrays

C Data types, including structures

C++ Objects

Class hierarchies and inheritance

Polymorphism

C++ References

Operator overloading

Templates and the Standard Template Library (STL)

Multi-Threaded and Multi-Processor Design


Course materials

Mbed Inventor’s Kit Parts

Software & Related links

Textbook and C/C++ material (required Textbook)

Computing Resources

There is a newly installed Linux-based computing cluster known as the Jinx cluster. This platform will used to turn in, test, and grade some of your programming assignments, so it makes sense that you would want to develop and debug your assignments there at some point. You are free to use any of the available computing resources at GT, as well as on student’s personal computing hardware. Visual Studio can also be used to develop programs on your PC, but in the end in some cases it needs to run on Jinx for grading. Some of the final assignments may contain code such as graphics calls that will only run on one platform. You also have access to the PC and Linux systems in Klaus 1446/8, so anyone who has difficulty using "ssh" (perhaps from Windows with PuTTY) can use any of the 1448 machines and ssh to the jinx cluster from there.

 

The mbed ARM microcontroller and C/C++ Cloud Compiler used in ECE 2036.

 

 


Older Syllabus, Handouts, and Tests from Fall 2012
(used prior to the new 2036 textbook, but similar material and more code examples)

  Day 

  Month  

  Date  

  Description  

  Handout  

  Due Date  

Mon

Aug

20

  Review of C and C++ Syntax 

  Csyntax-handout.pdf 

  csyntax.cc 

Wed

Aug

22

  More review of C/C++ Syntax 

  Csyntax1-handout.pdf 

  csyntax1.cc 

Fri

Aug

24

  Understanding Memory Layout 

  ex-memory-layout.pdf 

  AccessingJinx.pdf 

  memory-layout-1a.c 

  memory-layout-1b.c 

Fri

Aug

24

  Simple Calculator 

  Lab 1 assigned 

  Sep 4 

Mon

Aug

27

  The GNU Debugger 

  gdb-refcard.pdf 

  gdb reference (50 pages) 

  gdb-reference.pdf 

Wed

Aug

29

  C++ Classes 

  ex-classes.pdf 

  classes.cc 

Fri

Aug

31

Mon

Sep

3

  Labor Day Holiday NO CLASS 

Wed

Sep

5

  MBed Assignment 

  /2036/mbedlab 

  StackUsageAnimation DO NOT PRINT 

  StackUsage-presentation.pdf 

Fri

Sep

7

  Constructors and Destructors 

  Constructors-Destructors.pdf 

  StackUsageAnimation DO NOT PRINT 

  StackUsage-presentation.pdf 

  ConstructorsDestructors.cc 

  ConstructorsDestructors.cc 

  Operator Overloading 

  Operators-handout.pdf 

  operators.cc 

Mon

Sep

10

  Operator Overloading 

  Operators-handout.pdf 

  operators.cc 

Wed

Sep

12

  Member Function 

  MemberFunctions-handout.pdf 

  member-functions.cc 

  member-functions.cc 

Mon

Sep

17

  Dynamic Memory 

  DynamicMemory-handout.pdf 

  dynamic-memory.cc 

Wed

Sep

19

  Matrix Calculator 

  Lab 2 assigned 

  Sept 28 

Fri

Sep

21

  Dynamic Memory again 

  DynamicMemory2-handout.pdf 

  Sample exam questions 

  mt1-sample.pdf 

Mon

Sep

24

  Pointer Dereferencing 

  PointerDereferencing-handout.pdf 

Wed

Sep

26

  Test 1 

Fri

Sep

28

  Subclassing 

  Subclassing-handout.pdf 

Mon

Oct

1

  Virtual Functions 

  Virtual-Functions-handout.pdf 

Wed

Oct

3

  FFT lab 

  Lab 4 assigned 

  Oct 12 

Fri

Oct

5

  Pure Virtual Functions 

  Pure-Virtual-Functions-handout.pdf 

Mon

Oct

8

   

Wed

Oct

10

  Smart Pointers 

  SmartPointers-handout.pdf 

Fri

Oct

12

  Last day to drop classes with W 

Mon

Oct

15

  Fall Break NO CLASS 

Wed

Oct

17

  QDisplay Graphics 

  QDisplay.pdf 

Wed

Oct

17

  Path Loss 

  Lab 5 assigned 

  Oct 29 

Fri

Oct

19

  Threads 

  GThreads-handout.pdf 

  create2.cc 

  gthread.h 

  gthread.cc 

Mon

Oct

22

  Templated Vector class 

  VectorDeque-handout.pdf 

Wed

Oct

24

  Barriers and Mutex Locks 

  Barriers-handout.pdf 

  Synchronization 

Fri

Oct

26

  Barriers continued 

Mon

Oct

29

  Vector Implementation

  Vectors-handout.pdf 

Wed

Oct

31

  Vector Implementation continued 

  GFRVec-handout.pdf 

  vectors.cc 

  GFRVec.h. 

 

Fri

Nov

2

  Mbed lab 2

  mbedlab2.doc 

  mbedlab2.pdf 

  FREE DEMO VERSION 

Mon

Nov

5

  Midterm Review

Wed

Nov

7

  Midterm Exam 2 

Fri

Nov

9

  Templated Linked List Implementation 

  TemplateLinkedList-handout.pdf 

Mon

Nov

12

  Templated Linked List continued 

Wed

Nov

14

  Iterators 

  VectorIterators-handout.pdf 

Fri

Nov

16

  Mandelbrot Set Assignment Discussion 

  Interesting Mandelbrot Set Video 

  http://vimeo.com/12185093 

Fri

Nov

16

  Mandelbrot Set 

  Lab 7 assigned 

  Nov 30 

Mon

Nov

19

  Sorted Containers 

  MapSet-handout.pdf 

  map-set.cc 

Wed

Nov

21

  Recursive Descent 

  Queens-handout.pdf 

  queens.cc 

Fri

Nov

23

  NO CLASS THANKSGIVING HOLIDAY 

Mon

Nov

26

  Exceptions in C++ 

  Exceptions-handout.pdf 

Wed

Nov

28

  Object Cloning 

  ObjectCloning-handout.pdf 

  objectcloning.cc 

  objectcloning.cc 

Fri

Nov

30

  Static Members and Member Functions 

  StaticMembers-handout.pdf 

  static-members.cc 

Mon

Dec

3

  SpecialIterators 

  SpecialIterators-handout.pdf 

Wed

Dec

5

  Preprocessor Directives 

  Preprocessor-handout.pdf 

Fri

Dec

7

  Review  for Final

  Sample old mt1 exam 

  mt1-old.pdf 

  Sample old mt2 exam 

  mt2-old.pdf 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Student mbed C++ Project with a Nest style Temperature Display