Schedule
Week 1: | 6/10 |
HW01: Editing: Vim,
due 6/12 (Wed)
HW02: Strings: print_integer(…),
due 6/16 (Sun)
|
|
6/11 |
Vim
|
||
6/12 |
Number bases, gcc basics, test-driven development (TDD)
snippets:
actual.txt expected.txt, numbers.c, print_integer.c, print_integer.h, test_print_integer.c
whiteboard:
Number_Conversion.png
|
||
6/13 |
assert(…), Test-Driven Development (TDD), Testing, HW02 tips
whiteboards:
Testing.png
|
||
6/14 |
Debugging with valgrind and GDB
|
||
Week 2: | 6/17 |
HW03: Debugging: GDB,
due 6/19 (Wed)
HW04: Strings: mintf(…),
due 6/22 (Sat)
|
|
6/18 |
Strings continued, varardic function introduction
|
||
6/19 |
Varardic functions, Code Quality
bad_code_quality:
argument_printer.c argument_printer.h, expected.txt, print_array.c, test_argument_printer.c
good_code_quality:
argument_printer.c, argument_printer.h, expected.txt, print_array.c, test_argument_printer.c
snippets:
call_stack.txt
|
||
6/20 |
Preprocessor, #include/#define
|
||
6/21 |
Preprocessor, #define cont, #ifdef/#ifndef/#endif
|
||
Week 3: | 6/24 |
Unit Testing, Makefile basics
|
HW05: Log macros,
due 6/24 (Mon)
HW06: Unit testing,
due 6/27 (Thu)
HW07: Make,
due 6/29 (Sat)
|
6/25 |
Testing unit testing, coverage, advanced makefiles
|
||
6/26 |
Address syntax (nested addresses, arrays, address arithmetic, strings as addresses)
|
||
6/27 |
Address continued (const addresses, address functions, array functions)
|
||
6/28 |
Bitwise operators
|
||
Week 4: | 7/1 |
Dynamic memory (malloc)
|
EC01: Bitwise operators,
due 7/1 (Mon)
HW08: JSON parse_int(…),
due 7/3 (Wed)
|
7/2 |
Returning addresses, invalid frees, string copying, string array vs address of string
|
||
7/3 |
Pass/return by address, const qualifier, iterating strings by address, struct introduction
|
||
7/5 |
Structs continued, enums, unions, typedef with structs
|
||
Week 5: | 7/8 |
HW10 overview, HW11 overview, testing HW10, testing HW11
|
HW09: malloc(…): Join strings,
due 7/8 (Mon)
HW10: Split string: arrays,
due 7/11 (Thu)
HW11: JSON parse_string(…),
due 7/13 (Sat)
|
7/9 |
Struct addressing, struct malloc, compound literals
|
||
7/10 |
Linked lists introduction
snippets:
linked_list.c linked_list_append.c, linked_list_append_2.c, linked_list_print.c, linked_list_print_2.c, split_string_delimiter.txt, test_split_string.c
whiteboards:
linked_list.png
|
||
7/11 |
Linked lists (cont), stack, queue, priority queue
snippets:
linked_list_append.c linked_list_append_3.c, linked_list_priority_queue.c, linked_list_stack.c, linked_list_string.c, linked_list_string_2.c
whiteboards:
linked_lists.png
|
||
7/12 |
Binary search tree, JSON lists, JSON testing, participation 2
whiteboards:
trees.png
|
||
Week 6: | 7/15 |
Binary search tree coding, binary search tree of strings
|
HW12: Split string 2: linked lists,
due 7/16 (Tue)
HW13: JSON parse_list(…),
due 7/20 (Sat)
EC02: Buffer overflow,
due 7/20 (Sat)
|
7/16 |
HW12 Split string testing, HW13 parse list tips, HW14 sorting overview, C standard library qsort
|
||
7/17 |
Merge sort, endianness, call stack, function calls
whiteboards:
merge_sort_and_endian.png
|
||
7/18 |
Intro to text files
snippets:
123.txt 456.txt, abc.txt, abc2.txt, append.c, bad_read.c, bad_write_file.c, bash_file.txt, bash_write_file.c, files_outline.txt, list.json, long_file.txt, read.txt, read_file.c, read_file_BAD_DO_NOT_DO_IT_THIS_WAY.c, read_file_of_any_length.c, some_text.txt, write_abc.c, write_abc_fprintf.c, write_file_helper.c
|
||
7/19 |
Reading files into strings, file errors, stdout, stderr, stdin
snippets:
all_output.txt bad_read.c, bad_write.c, files_outline.txt, long_file.txt, missing_file_read.c, missing_file_write.c, read_file.c, read_file_fseek.c, read_file_into_string.c, read_file_into_string_fread.c, read_file_into_string_function.c, some_text.txt, stderr.c, stderr.txt, stdin.c, stdout.txt
|
||
Week 7: | 7/22 |
Participation 3 solution, HW15 overview, refactoring, testing text files
|
HW14: Sorting: recursion,
due 7/24 (Wed)
HW15: JSON text files,
due 7/27 (Sat)
|
7/23 |
More testing text files, file error handling, introd to binary files
|
||
7/24 |
Binary files - fread and fwrite
|
||
7/25 |
Types, BMP overview, structs and binary files
|
||
7/26 |
More function address applications, generic addresses, generic arrays
|
||
Week 8: | 7/29 |
Generic data structures, compare functions
snippets:
generic_linked_list.c
|
HW16: BMP image files,
due 7/31 (Wed)
HW17: Sorting 2: generic data structures,
due 8/3 (Sat)
RE01: Split strings: resubmission,
due 8/3 (Sat)
RE02: Sorting: resubmission,
due 8/3 (Sat)
RE03: JSON: resubmission,
due 8/3 (Sat)
EC03: JSON parse_object(…),
due 8/3 (Sat)
|
7/30 |
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.