LEC # | TOPICS | ASSIGNMENTS | LABS AND PROJECTS |
---|---|---|---|
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 |