Schedule
Week 1: | 6/12 |
HW01: Development tools: Vim,
due 6/14 (Wed)
HW02: Strings: print_integer(…),
due 6/17 (Sat)
HW03: TDD,
due 6/18 (Sun)
|
|
6/13 |
Vim
|
||
6/14 |
Number bases, gcc basics, test-driven development (TDD)
whiteboards:
number_conversion.png
|
||
6/15 |
assert(…), Test-Driven Development (TDD), Testing, HW02 tips
whiteboards:
testing.png
|
||
6/16 |
varardic functions, TDD & HW03
|
||
Week 2: | 6/19 |
GDB, callstack, function argumens
|
HW04: Development tools: GDB,
due 6/21 (Wed)
HW05: Strings: mintf(…),
due 6/25 (Sun)
|
6/20 |
HW05 setup, Stings, memory, varardic functions
whiteboards:
memory.png
|
||
6/21 |
Varardic functions, Code Quality
snippets:
varardic_call.txt
|
||
6/22 |
Preprocessor, #include/#define
whiteboards:
notes.png
|
||
6/23 |
Preprocessor, #define cont, #ifdef/#ifndef/#endif
snippets:
debug_at.c filename_keyword.c, include_guards.c, invert.c, is_even.h, is_odd.h, test_is_even.c, types.c, varardic.c
valgrind_errors:
conditional_jump.c, invalid_read.c
|
||
Week 3: | 6/26 |
Unit Testing, Miniunit (HW07) overview, Makefile basics
snippets:
call_function.h test_call_function.c
|
HW06: Mini-unit 1: preprocessor,
due 6/27 (Tue)
HW07: Mini-unit 2: unit testing,
due 6/29 (Thu)
HW08: Mini-unit 3: build automation,
due 7/2 (Sun)
|
6/27 |
Build automation with make continued, introduction to address syntax
math_functions:
Makefile.1 Makefile.2, Makefile.3, Makefile.4, expected.txt, math_functions.c, math_functions.h, test_math_functions.c
snippets:
basic_addressing.c, swap.c
|
||
6/28 |
Address syntax (nested addresses, arrays, address arithmetiic, strings
|
||
6/29 |
Address applications (array functions), introduction to dynamic memory
|
||
6/30 |
Dynamic memory contiued, invalid free
snippets:
bad_cast.c bad_free_data.c, bad_free_global_const.c, bad_free_stack.c, heap_int.c, integer_function.c, malloc_string.c, malloc_string_bad_initializer.c, malloc_string_loop_initializer.c, smintf.c, string_functions.c, string_functions.h.gch
whiteboards:
memory.png
|
||
Week 4: | 7/3 |
Bitwise operators
exercise:
bitwise operations.pdf
snippets:
bitshift.c bitwise_and.c, bitwise_not.c, bitwise_or.c, bitwise_xor.c, logical_or.c, print_bits.h, print_bits.o, test_print_bits.c
whiteboards:
bitwise.png
|
EC01: Bitwise operators,
due 7/6 (Thu)
HW09: Dynamic memory: smintf(…),
due 7/9 (Sun)
RE01: Mini-unit: unit testing resubmit,
due 7/9 (Sun)
|
7/5 |
valgrind continued (memory faults memory leaks), HW09 tips (argument copying, function outline)
snippets:
print_characters.c sprint_characters.c, sprint_characters_address_iteration.c, sprint_characters_helper.c, sprint_characters_helper_with_insert.c, test_smintf.c
whiteboards:
valgrind_errors.png
|
||
7/6 |
Pass/return by address, const qualifier, iterating strings by address
|
||
7/7 |
Parsing strings, pos, a_pos, struct introduction
snippets:
add_nested_const.c array_struct.c, array_struct_2.c, count_consecutive_chars.c, multiply_point.c, point_struct.c, point_struct_2.c, point_struct_3.c, point_struct_4_bad.c, point_struct_5.c
whiteboards:
memory.png
|
||
Week 5: | 7/10 |
structs continued, union types, enum types, typedef, Element
snippets:
element_examples.c enum.c, enum_2.c, flag_enum.c, json.h, test_json.c, typedef.c, typedef_point.c, typedef_point_2.c, union.c, union_2.c, union_3.c, union_4.c, union_5.c, union_6.c, weird_struct.c
whiteboards:
syntax.png
|
HW10: JSON 1: parse numbers,
due 7/11 (Tue)
HW11: JSON 2: parse strings,
due 7/14 (Fri)
|
7/11 |
Struct addressing, compound initializers, linked lists
whiteboards:
linked_list.png
|
||
7/12 |
Linked lists (cont), stack, queue, priority queue
snippets:
append.c return_string.c
whiteboards:
linked_lists.png
|
||
7/13 |
Linked lists (cont), Binary search tree introduction
snippets:
binary_tree.c insert.c
whiteboards:
trees.png
|
||
7/14 |
Binary search tree (cont), JSON linked lists, JSON testing
whiteboards:
trees_and_parse_graphs.png
|
||
Week 6: | 7/17 |
Function addresses, generic addresses
snippets:
call_function.c call_function_repeat.c, call_function_with_argument.c, helper.c, helper.h, test_helper.c
whiteboards:
testing.png
|
HW12: Sorting 1: linked lists and trees,
due 7/18 (Tue)
HW13: JSON 3: parse list,
due 7/22 (Sat)
|
7/18 |
Generic data structures
generic_linked_list:
generic_linked_list.c generic_linked_list.h, int_linked_list.c, string_linked_list.c
|
||
7/19 |
Generic data structures cont, compare functions
generic_linked_list:
generic_linked_list.c generic_linked_list.h, int_linked_list.c, string_linked_list.c
snippets:
minimum_generic.c, minimum_integer.c
|
||
7/20 |
Endianness, stack, function calls
|
||
7/21 |
Intro to text files
handouts:
handout-stack_inspection-blank.pdf
|
||
Week 7: | 7/24 |
Call stack handout, text files cont.
|
EC02: Buffer overflow,
due 7/24 (Mon)
HW14: Sorting 2: generic data structures,
due 7/27 (Thu)
HW15: JSON 4: text files,
due 7/30 (Sun)
|
7/25 |
Testing text files, refactoring
snippets:
add_five.c example.json, expected_string_multicharacter.json, json_file_tests.c, read_bool_true.json, read_file.txt, read_int_invalid_letters.json, read_int_multidigit.json, read_into_file.c, test_read_int_zero.json
whiteboards:
compatability.png
|
||
7/26 |
stdout, stderr, stdin, file errors, intro to binary files, standard integer types
|
||
7/27 |
Binary files - fread and fwrite
|
||
7/28 |
Types, BMP overview
|
||
Week 8: | 7/31 |
HW16: BMP: binary files,
due 8/4 (Fri)
RE02: JSON: text files resubmit,
due 8/4 (Fri)
EC03: JSON 5: parse objects,
due 8/4 (Fri)
|
|
8/1 |
Compression algorithms
snippets:
io_test.c
|
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.