Schedule

Week Lecture Topics Homework Resources
1 Lecture: intro
Monday
June 10
Administrivia
Basic C
HW0 out Resource Page
Lecture: env, term, variables
Tuesday
June 11
Terminal
Environments
Variables
Lecture: transistors
Thursday
June 13
The early days
Transistors
Logic gates
2 Lecture: numbers in bits
Monday
June 17
Binary, Hex
Number conversion
HW0 DUE
HW1 out
Lecture: bit arith
Tuesday
June 18
Bitwise operators
Bit packing
Command-line args
In-class demo:
print-bits.c
Lecture: negative numbers
Thursday
June 20
Two's complement
3 Lecture: pointers 1
Monday
June 24
Pointers
Pass by reference
HW1 DUE
HW2 out
Lecture: pointers 2
Tuesday
June 25
Memory
Endian
struct
enum and switch
File I/O
In-class demo:
copy.c
endian.c
Lecture: pointers 3
Thursday
June 27
Heap allocation
Pointer Pitfalls
man stdio
man string
man malloc
4 Lecture: array lists
Monday
July 1
Array Lists HW2 DUE In-class demo:
array-list.h
array-list.c
main.c
Lecture: linked lists
Tuesday
July 2
Linked Lists HW3 out
NO CLASS (July 4th)
Thursday
July 4
5 QUIZ
Monday
July 8
HW3 DUE
Lecture: sorting
Tuesday
July 9
O(n^2) sorting
Compiling C
Makefile
Quiz answers
HW4 out
Lecture: map & BST
Thursday
July 11
BST
Tree Sort
6 Lecture: sorting 2
Monday
July 15
Function Pointer
Merge Sort
Quick Sort
HW4 DUE
HW5 out
Lecture: sorting 3
Tuesday
July 16
Heap Sort
Lecture: hash table 1
Thursday
July 18
Counting Sort
Hashing
In-class demo:
dict.c
two-letter.txt
7 Lecture: hash table 2
Monday
July 22
Chaining
Probing
OOP
HW5 DUE
HW6 out
Lecture: oop
Tuesday
July 23
Unions
Tagged Union
Virtual Table
OOP
In-class demo:
Tagged Union
Virtual Table
Lecture: machine structure
Thursday
July 25
Processes
Virtual memory
Threads
In-class demo
8 Lecture: miscellaneous
Monday
July 29
Macros
typedef
Python FFI
HW6 DUE
Lecture: review
Tuesday
July 30
Lecture: FINAL EXAM
Thursday
August 1