1 Introduction. Writing, compiling, and debugging C programs. Hello world. Problem set 1 out

Project 1 out

Final project out

2 Variables and datatypes, operators.

Problem set 1 due

Problem set 2 out

3 Control flow. Functions and modular programming. Variable scope. Static and global variables.

Problem set 2 due

Problem set 3 out

Lab 1: Game of Life
4 More control flow. Input and output.    
5 Pointers and memory addressing. Arrays and pointer arithmetic. Strings. Searching and sorting algorithms.

Problem set 3 due

Problem set 4 out

6 User-defined datatypes, structs, unions, bitfields. Memory allocation. Linked lists, binary trees.

Problem set 4 due

Problem set 5 out

Project 1 due

Project 2 out

7 Pointers to pointers, pointer and string arrays, multidimensional arrays. Stacks and queues.

Problem set 5 due

Problem set 6 out

Lab 2: Data compression
8 Void and function pointers. Hash tables.    
9 External libraries. B-trees, priority queues.

Problem set 6 due

Problem set 7 out

Final project proposal due
10 C standard library: stdio.h, ctype.h, stdlib.h, assert.h, stdarg.h, time.h Problem set 7 due  
11 Dynamic memory allocation, malloc and valgrind, garbage collection.    
12 Multithreading and concurrency.   Lab 3: Final project
13 Multithreaded programming. Sockets and asynchronous I/O.    
14 Linux inter process communication.   Final project due