EE312 - Software Design and Implementation

Short URL:

This course aims to study software development. We will use the C language to illustrate basic programming language constructs. Some of the topics we will cover include problem solving techniques, program design & implementation, best practices, and programming tools.

We will begin by studying the basics of C - variables, program organization, comments, I/O, etc. Afterwards we will study fundamental programming language constructs such as expressions, logical operators, and loops. Then we will study types - scalar, array, structs - in depth. We will cover functions as a way of organizing code. Next we will cover pointers and dynamic memory allocation. The course will conclude with a survey of object-oriented programming with C++.

The contents of this page will change over time; e.g., I may change lecture topics and homework/lab problems. Some material (such as updated versions of the software) as well as announcements will be at Blackboard.


EE306 and EE319K.



C Programming. A Modern Approach. 2nd Edition, by K. N. King.  The book homepage has an errata and source code.


Grades will be entered on blackboard - please monitor your scores there. Also, read this note detailing regrade policies.

We will use +/- grading for final grades, i.e., I may assign A-s, C+s, etc., at the end of term.

Important Dates

We will have two in-class tests and a final exam. The tests will be held 2/26, and 4/2. Midterm 1, Midterm 2, Midterm 3 from Spring 2012. (There was no final exam last year, but we will hold one in Spring 2013.)

MT1 will cover everything upto and including arrays, i.e., Chapters 1-8 (inclusive), and 20.1. The old test, HW problems, and exercises from the book are good resources.


The notes my lectures are based on are linked on Blackboard. Lectures are in the sequence below. The numbers in parens indicate corresponding chapters from the book.

Link to code snippets written in class.

Homeworks, Labs and TAs

Written homeworks will be due in class, at the start of lecture. They will be collected by the appropriate TA, and returned in class the following week. Late submissions will not be accepted.


Here is the link to the labs & homeworks page, which includes a link to a calendar with the TA sections and office hours. This document defines TA responsibilities


This document defines policies around add-drop, cheating, students with disabilities, emergency procedures, etc.