| Week |
Tuesday |
Thursday |
Laboratories |
Goals |
| Week 1 |
Lecture
1 - Introductions. Class policy.
Video
|
Lecture
2 - C Overview.
Video
|
Lab
0 - Hello world, Twitter filter
|
Unix intro.,
Compiling, Basic control-flow
|
| Week 2 |
Lecture 3 -
Data types.
Video
(part 1)
Video
(part 2)
|
Lecture
4 - Control flow
Video
| Lab 1 -
Anonymizing filter, censoring filter
|
Basic string
manipulation, array usage, basic I/O
|
| Week 3 |
Lecture 5 - Types and machine representation. |
Lecture
6 - Functions.
Video |
Lab 2 -
Command-line arguments, string manipulation, parsing, libraries
|
Understanding
type representations, signed and unsigned arithmetic, program stack
|
| Week 4 |
Lecture
7 - Pointers.
Video |
Lecture
8 - Memory Management. |
Lab 3 -
More on parsing, and pointers
|
Pointers
|
| Week 5 |
Lecture 9 - Structures.
Video |
Review. |
Lab 4 -
Twitter trends analysis. |
Dynamic memory allocation,
structures, linked lists.
|
| Week 6 |
Midterm I. |
Lecture 10 - Unions.
Video |
Lab 5 -
Adding unions, hexadecimal representation, and ciphers. |
Programming with
union types.
|
| Week 7 |
Lecture 11 - Function pointers.
Video |
Lecture 12 - Sorting. |
Lab 6 - Sorting. |
Sorting, recursion
|
| Week 8 |
October Break. |
Lecture
13 - Call stack, tools. |
Lab 7 - stack smashing, security hacking.
|
memory layout
|
| Week 9 |
Lecture 14 - Files. |
Lecture 15 - Signals. |
Project 1 - Order Book. Hash tables. |
data structures, dynamic memory management
|
| Week 10 |
Midterm II
(solutions). |
Lecture
16 - Assertions. |
Project 1 (cont)
|
|
| Week 11 |
Lecture
17 - Concurrency. |
Lecture
18 - Posix Threads.
PThreads tutorial
|
Project 2 - Order Book using file I/O. |
basic file I/O, reading binary files, memory alignment
|
| Week 12 |
Lecture
18 - Posix Threads (cont).
|
Lecture
18 - Posix Threads (cont). |
Project 2 (cont) |
|
| Week 13 |
Lecture
18 - Posix Threads (cont). |
Lecture
19 - Setjmp/Longjmpg |
Project 3 -
Order Book using threads |
threads, signals
|
| Week 14 |
No class
|
Thanksgiving
|
Project 3 (cont)
|
|
| Week 15 |
Lecture
20 - Tools |
Lecture
22 - Analyzing C Programs |
Project 4 -
Order book, threads and synchronization
|
threads, synchronization
|
| Week 16 |
Review
|
Review
|
Project 4 (cont)
|
|
|