Advanced C Programming

Autumn 2016 :: ECE 264 :: Purdue University

This is for Fall 2016 (last year)

Schedule

Week 1: 8/22
Code quality, editing code, vim
8/24
Academic integrity, tools, assignments
8/26
Test-driven development (TDD), C literals, number bases, strings
1 Appendix D: Computing Number Systems, pp. 1033-1040
11 Strings, pp. 665-717
Week 2: 8/29
Literal representations, number bases
snippets: 1.c 2.c
10.4 Memory Allocation Functions, pp. 627-628
8/31
Test-driven development (GDD), strings
exercise: strlen(…)
snippets: 1.c
8.1-8.3 Array Concepts; Using Arrays in C; Inter-Function Communication, pp. 459-480
11 Strings, pp. 665-717
9/2
Variadic functions, header files
snippets: 1.c 2.c, 3.c, 5.c
2.2 C Programs, pp. 31-33
Week 3: 9/7
Variadic functions, memory, stack, debugging (GDB)
snippets: 1.c 2.c, 3.c, a.c
HW04: Strings: mintf(…), due 9/8 (Thu)
9/9
Pointers, call-by-address + examining memory using gdb
snippets: 1.c
9 Pointers, pp. 558-585
10.1-10.3 Arrays and Pointers; Pointer Arithmetic and Arrays; Passing an Array to a Function, pp. 611-626
Week 4: 9/12
Memory addresses (pointers), syntax, GDB
snippets: 1.c 2.c
10.4 Memory Allocation Functions, pp. 627-633
HW05: Debugging with GDB, due 9/12 (Mon)
9/14
10.4 Memory Allocation Functions, pp. 627-633
9/16
Address variables (pointers)
snippets: 1.c
Week 5: 9/19
Review memory segments, address syntax, brief overview of Valgrind messages
snippets: 1.c 2.c
HW06: Malloc: smintf(…), due 9/19 (Mon)
9/21
Types: structures, design, syntax, pass by address
snippets: 1.c 2.c, 3.c
12.1-12.3 The Type Definition; Enumerated Types; Structure, pp. 745-781
9/23
Pass by address
snippets: 1.c 2.c, 3.c, 5.c
Week 6: 9/26
Types: in memory, sizeof(..)
snippets: 1.c 2.c
HW07: Malloc + structs, due 9/29 (Thu)
9/28
Testing, assert(…), pre- and post-conditions, loop invariants
snippets: 1.c, 2.c
9/30
Linked lists
snippets: 1.c 2.c
15.1-15.2 List Implementations; General Linear Lists, pp. 927-949
Week 7: 10/3
Linked lists in memory
snippets: 1.c 2.c, 3.c
15.1-15.2 List Implementations; General Linear Lists, pp. 927-949
HW08: Linked lists #1, due 10/6 (Thu)
10/5
Memory issues, Valgrind, assert(…)
Quiz: malloc(…), structures, linked lists
snippets: 1.c
10/7
Memory issues, assert(…), Valgrind messages
snippets: 1.c 2.c, 3.c, 9.c
Week 8: 10/12
DRY rule, code deduplication
notes: dry.pdf
HW09: Linked lists #2, due 10/14 (Fri)
10/14
"
Quiz: Vim
Week 9: 10/17
10/19
How to think of test cases, exercise
notes: testing.pdf
10/21
6.11 Big-O Notation, pp. 370-371
Week 10: 10/24
Binary search trees
15.5 Trees, pp. 967-978
HW10: Linked lists #3, due 10/24 (Mon)
10/26
"
10/28
Tree traversals
Week 11: 10/31
Merge sort
HW11: Binary search trees, due 11/1 (Tue)
11/2
11/4
Valgrind messages, function addresses
notes: valgrind.pdf
Week 12: 11/7
7.1-7.5 File; Streams; Standard Library I/O Functions; Formatting I/O Functions; Character I/O Functions, pp. 393-441
13.1-13.3 Text vs. Binary Streams; Standard Library Functions for Files; Converting File Types, pp. 821-850
HW12: Sorting, due 11/8 (Tue)
11/9
Files
7.1-7.5 File; Streams; Standard Library I/O Functions; Formatting I/O Functions; Character I/O Functions, pp. 393-441
13.1-13.3 Text vs. Binary Streams; Standard Library Functions for Files; Converting File Types, pp. 821-850
11/11
Week 13: 11/14
Images
snippets: setjmp_longjmp.c
HW13: Image files, due 11/18 (Fri)
11/16
11/18
Week 14: 11/21
NO CLASS
Week 15: 11/28
Parallel programming, pthread
11/30
"
12/2
Quiz #5 and quiz #6
Quiz #5 was a review from exam #2. Quiz #6 was about BMP images. These will be treated as separate quizzes, but were held on the same day due to dead week.
Week 16: 12/5
Stack inspection, buffer overflow attacks
12/7
"
12/9
OPTIONAL: final exam review session
This is in lieu of the usual evening review session that Prof. Quinn would otherwise hold. Students from Prof. Lu's section are welcome to join (up to room capacity).
Assignments and deadline may be changed without notice up to 1 week before the due date.