Course Schedule
 Lecture times:
- Section 1: Monday 11-12, Tuesday 11-12, Thursday 14-15 in SF
1101
 
- Section 2: Monday 17-18, Tuesday 12-13, Thursday 13-14 in SF
1101
 
Labs: 
- Section 1: Monday 16-19 in SF 1013
 
- Section 2: Tuesday 16-19 in SF 1013
 
Lecture Topics by Week
Week 1 (January 8, 10)
	
		Date
  | 
		Topic
  | 
		Reading
  | 
	
		January 8
  | 
		Hello World; working on the command line; ssh; writing programs remotely; the Unix time utility. A brief recap of binary numbers.
  | 
		Course information sheet and the Command-Line Tutorial
  | 
	
		January 10
  | 
		Introductory C: printf, arithmetic operations, basic types, if/else, for/while, array introduction, #define.
  | 	
		C for Python Programmers
  | 
	
Week 2 (January 14, 15, 17)
	
		January 14
  | 
		Functions in C. Math.h. Scanf. Compiling with -o.
  | 
		King: 3.2, 9.1, 9.2 and 9.3
  | 
	
		January 15
  | 
		Pointers. Memory diagrams. Pointers to int, double and char variables. A brief discussion of hexadecimal. Printing pointers with %p.
  | 
		King: Chapter 11
  | 
	
		January 17
  | 
		Pointers and arrays. Translating between the [ ] and * notations. The -Wall option of gcc.
  | 	
		King: Chapter 12
  | 
	
Week 3 (January 21, 22, 24)
Assignment 1 due on Thursday at noon; Assignment 2 released.
	
		January 21
  | 
		Structs. Creating structs; manipulating and passing them. Pre and Post Conditions.
  | 
		King: 16.1, 16.2, 16.3
  | 
	
		January 22
  | 
		Pointers to structs. Malloc, sizeof and free. NULL. The -> notation. Linked lists.
  | 
		King: 7.1, 17.1, 17.4
  | 
	
		January 24
  | 
		More linked lists. Doubly linked; circular.
  | 	
		King: 17.5
  | 
	
Week 4 (January 28, 29, 31)
	
		January 28
  | 
		Fprintf and fscanf: reading and writing out our linked lists.
  | 
		King: 22.3
  | 
	
		January 29
  | 
		Pseudorandom number generation (rand); assert statements
  | 
		King: 24.1 and p686-687 (Pseudorandom sequence generation functions)
  | 
	
		January 31
  | 
		Pointers to pointers review.
  | 	
		King 17.6
  | 
	
Week 5 (February 4, 5, 7)
Assignment 2 due on Thursday at noon; midterm details released.
	
		February 4
  | 
		Function pointers.
  | 
		King 17.7
  | 
	
		February 5
  | 
		Introduction to GDB (the GNU Debugger)
  | 
		Introduction to gdb
  | 
	
		February 7
  | 
		Stacks and queues. The heap.
  | 	
		The stack and the heap -- this is about C++, but it is all the same as C except for that C++ uses "new" in the place of "malloc".
  | 
	
Week 6 (February 11, 12, 14)
	
		February 11
  | 
		Introduction to recursion. Towers of Hanoi in-class activity.
  | 
		An introduction to recursion.
  | 
	
		February 12
  | 
		Recursive mergesort, quicksort, binary search. Quizzery!
  | 
		King: 9.6 and Quick Sort -- read the first three web pages, i.e. up to "Comparing Quick and Heap Sorts "
  | 
	
		February 14
  | 
		Tail recursion and optimization with gcc.
  | 	
		How GCC optimizes recursion
  | 
	
Reading week
No class!
Week 7 (February 25, 26, 28)
Midterm on the morning of the 28th. Assignment 3 released.
Week 8 (March 4, 5, 7)
	
		March 4
  | 
		Binary search trees, continued; command-line arguments
  | 
		Binary trees -- read the rest of it, especially the stuff on binary search trees
  | 
	
		March 5
  | 
		Quizzery! Command-line arguments; ctype; type conversion
  | 
		King p682-686 and Command-line parameters
  | 
	
		March 7
  | 
		Guest lecture: Steve Engels, game programming
  | 	
		 | 
	
Week 9 (March 11, 12, 14)
March 10 is the last day to drop.
Assignment 3 due on Thursday at noon; Assignment 4 released.
	
		March 11
  | 
		Heaps; heapify and build-heap
  | 
		 | 
	
		March 12
  | 
		Quizzery! Inserting and deleting from heaps; heapsort.
  | 
		Heap Sort
  | 
	
		March 14
  | 
		String manipulation (class time was spent on returning midterm, discussion on assignments)
  | 	
		King 23.6 | 
	
 
Week 10 (March 18, 19, 21)
 
Week 11 (March 25, 26, 28)
Assignment 4 due on Thursday at noon; Assignment 5 released.
 
Week 12 (April 1, 2, 4)
 
Week 13 (April 8, 9, 11)
Assignment 5 due on Thursday at noon.
	
		April 8
  | 
		Guest lecture: Steve Easterbrook on case studies in software engineering from NASA
  | 
		No reading. | 
	
		April 9
  | 
		Last Superquiz! C goodies: Variable argument lists, line/file macros. (Section 2 only: piping)
  | 
		King 26.1 and 14.3 | 
	
		April 11
  | 
		Student choice lecture. (Review session at 6pm!)
  | 	
		No reading. | 
	
 
Week 14 (April 15)