Schedule
Week 1: | 1/8 |
HW01: Development tools: Vim,
due 1/11 (Fri)
|
|
1/10 |
Development tools: Vim + Data types, ASCII, number bases, literals
notes:
20190110.pdf
1 Appendix D: Computing Number Systems, pp. 1033-1040
|
||
Week 2: | 1/15 |
Number bases, test-driven development (TDD), TDD workflow enhancements
CQ: Use character literal ('A') not 65
notes:
20190115.pdf
|
|
1/17 |
Strings, number bases, addresses
CQ: Prefer for loop over while (where appropriate/readable) CQ: Use '\0' not 0 for null terminator
notes:
20190117.pdf
snippets:
01_string_stack.c 02_string_stack_vs_data_segment.c, 03_cant_assign_stack_string.c, 04_ok_to_assign_data_segment_string.c, 05_print_string_incorrect.c, 06_print_string_incorrect.c, 07_string_notations.c, 08_array_initialization_code_quality.c, 09_array_need_length_to_traverse.c, 10_string_is_an_array.c, 11_string_notations.c, 12_strlen.c, 13_string_on_stack_vs_data_segment.c, 14_print_string.c, 15_print_string_ok_to_copy.c, 16_char_literal_is_integer.c, oh_strings_data_segment.c, view_snipmate_snippets.sh
11 Strings, pp. 665-717
|
||
Week 3: | 1/22 |
HW02: Strings: print_integer(…),
due 1/22 (Tue)
HW03: Development tools: GDB,
due 1/25 (Fri)
|
|
1/24 |
Address syntax exercise, call by address vs. call by value, GDB whatis
video: Boilercast
notes:
20190124.pdf
|
||
Week 4: | 1/29 |
Assertions, GDB watchpoints, reverse debugging, Quiz 1: Address syntax
video: Boilercast
notes:
20190129.pdf
snippets:
01_assert.c 02_debugging.c
|
HW04: Strings: mintf(…),
due 2/1 (Fri)
|
1/31 |
Preprocessor; #define macros; variadic functions; HW02 recap
CQ: Declare where you initialize CQ: Use character literal ('A') not 65 CQ: Code in “paragraphs”
video: Boilercast
notes:
20190131.pdf
|
||
Week 5: | 2/5 | ||
2/7 |
Dynamic memory with malloc(…), preprocessor
video: Boilercast
|
||
Week 6: | 2/12 |
HW05: Mini-unit: #define + make,
due 2/13 (Wed)
|
|
2/14 |
Linked lists
video: Boilercast
|
||
Week 7: | 2/19 |
Linked lists
video: Boilercast
notes:
20190219.pdf
snippets:
a.c append_1.c, append_2.c, append_3.c, append_4.c, append_5.c, b.c, invalid_write.c, oh1.c, oh2.c, oh3.c, test_miniunit.c
|
HW06: Dynamic memory: smintf(…),
due 2/20 (Wed)
|
2/21 | |||
Week 8: | 2/26 |
Binary search trees, union, enum
video: Boilercast
|
HW07: Sorting,
due 2/28 (Thu)
|
2/28 | |||
Week 9: | 3/5 |
Testing, test-driven development, anonymous struct/union (C11)
video: Boilercast
|
HW08: JSON #1,
due 3/8 (Fri)
|
3/7 | |||
Week 10: | 3/19 |
HW09: JSON #2,
due 3/20 (Wed)
|
|
3/21 | |||
Week 11: | 3/26 |
HW10: Backward file reader,
due 3/29 (Fri)
|
|
3/28 | |||
Week 12: | 4/2 | ||
4/4 |
Exam 2 recap: TDD, numbers in memory, GDB x/, testing HW11 (BMP)
video: Boilercast
|
||
Week 13: | 4/9 |
HW11: BMP files,
due 4/8 (Mon)
|
|
4/11 |
Testing: line, branch, and path coverage + Parallel programming: threads
video: Boilercast
notes:
20190411.pdf
|
||
Week 14: | 4/16 |
HW12: Testing BMP,
due 4/15 (Mon)
|
|
4/18 | |||
Week 15: | 4/23 |
NO CLASS: Quiz make-ups
video: Boilercast
|
HW13: Parallel image processing,
due 4/24 (Wed)
HW14: Buffer overflow attack,
due 4/27 (Sat)
|
4/25 |
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.