Schedule
Week 1: | 8/21 |
Overview, introductions
|
|
8/23 |
![]() |
||
8/25 |
Data types, ASCII, number bases, literals
snippets:
data_types.c
![]() |
||
Week 2: | 8/28 |
Strings, number bases, addresses
snippets:
address_of_char.c strings.c
![]() |
HW01: Debugging with GDB,
due 8/29 (Tue)
HW02: Strings: print_integer(…),
due 9/1 (Fri)
|
8/30 |
Addresses, address syntax, memory layout
snippets:
address_syntax.c
![]() |
||
9/1 |
Stack frames, examining memory using GDB
snippets:
a.c
|
||
Week 3: | 9/6 |
Memory layout, call stack
office_hours:
20170907 call stack.pdf argv.c
snippets:
fake_gcc.c, stack_frame.c
![]() |
HW03: Numerical integration #1 (E),
due 9/7 (Thu)
|
9/8 |
Function addresses, structures
![]() |
||
Week 4: | 9/11 |
Function addresses, structures
|
HW04: Numerical integration #2 (E),
due 9/13 (Wed)
|
9/13 |
Struct objects in memory, examining memory with x/ and p/
![]() |
||
9/15 |
Variadic functions, arrays, address arithmetic
office hours:
gcc gdb.pdf
|
||
Week 5: | 9/18 |
Exercise: Struct objects in memory, examining memory with x/ and p/
handout:
structs in memory.pdf
|
HW05: Numerical integration (A),
due 9/19 (Tue)
|
9/20 |
Quiz #1: struct objects in memory, examining bytes in memory
|
||
9/22 |
DRY rule, assert, test-driven development (TDD)
|
||
Week 6: | 9/25 |
Intermediate GDB
|
HW06: Strings: mintf(…),
due 9/26 (Tue)
|
9/27 |
Dynamic memory, malloc(…)
notes:
20170927 malloc.pdf
|
||
9/29 | |||
Week 7: | 10/2 |
HW07: Card shuffling #1 (E),
due 10/6 (Fri)
|
|
10/4 |
DRY rule (review), homework, Quiz #3
snippets:
duplication.c
|
||
10/6 |
Array of structures
|
||
Week 8: | 10/11 |
Return by address, memory faults, address syntax
|
HW08: Card shuffling #2 (A),
due 10/13 (Fri)
|
10/13 |
Files, fopen, fclose, fgetc
|
||
Week 9: | 10/16 |
Files, fseek, ftell
|
HW09: Maze #1 (E),
due 10/20 (Fri)
|
10/18 |
Files, end of file, error handling
|
||
10/20 |
Multi-dimensional arrays on heap
|
||
Week 10: | 10/23 |
NO CLASS
|
HW10: Maze #2 (E),
due 10/27 (Fri)
|
10/25 |
NO CLASS
|
||
10/27 |
Multi-dimensional arrays on stack
|
||
Week 11: | 10/30 |
Structure containing multi-dimensional array on heap... with one call (each) to malloc(…) and free(…)
|
HW11: Maze #3 (A),
due 11/3 (Fri)
|
11/1 | |||
11/3 | |||
Week 12: | 11/6 |
Linked lists, recursive operations
snippets:
infinite_recursion.c
|
HW12: Huffman #1 (E),
due 11/10 (Fri)
|
11/8 |
Linked lists, freeing + qsort(…) with compare_fn
|
||
11/10 | |||
Week 13: | 11/13 |
Huffman coding
notes:
20171113 huffman.pdf
|
HW13: Huffman #2 (E),
due 11/17 (Fri)
|
11/15 | |||
11/17 |
Bitwise operations
exercise:
20171117 bitwise operations.pdf
notes:
bitwise operations.pdf
snippets:
exercise.c
|
||
Week 14: | 11/20 | ||
Week 15: | 11/27 |
Huffman coding - code book
|
HW14: Huffman #3 (A),
due 11/29 (Wed)
|
11/29 |
Test-driven development
exercise:
20171129 bitwise operations.pdf
|
||
12/1 |
BMP image files: basics
exercise:
bmp_images.pdf
|
||
Week 16: | 12/4 |
BMP image files: finish dissecting BMP hex dump
|
HW15: Images (A),
due 12/9 (Sat)
|
12/6 |
Error handling
|
||
12/8 |
REVIEW @ 7-9pm in EE 170 (no class @ 1:30pm)
|
To try code snippets, right-click to copy URL. Then, in bash, type
wget URL
(where
URL is the URL you copied from this page.) To paste in
PuTTY, try Shift-Right_Mouse_Click or Shift-Insert_Key. (Do not do that in Vim.)
Assignments and deadline may be changed without notice up to 1 week before the due date.