Week 1: |
1/11 |
Overview
These links go to the same video. Use whichever one works for you.
|
|
1/13 |
Vim
There is no recording available for this lecture.
|
Week 2: |
1/18 |
Number bases, test-driven development (TDD)
|
|
1/20 |
Test-Driven Development (TDD), editing tips
|
Week 3: |
1/25 |
|
|
1/27 |
|
Week 4: |
2/1 |
|
|
2/3 |
|
Week 5: |
2/8 |
Preprocessor, #define
snippets:
a.c a.c.preprocessed, b.c, b.c.preprocessed, c.c, d.c, e.c, f.c, g.c, h.c, h.preprocessed.c, i.c, j.c, k.c, l.c, l.preprocessed.c, limits_experiment.c, n.preprocessed.c, n.print_yo.c, n.print_yo.h, n.test_print_yo.c, o.define_symbol.c, p.dbg_printf.c, q.dbg_printf_and_for_loop.c, r.five_plus_WRONG.c, s.five_plus_BETTER.c, switch.c, t.triple_WRONG.c, u.triple_CORRECT.c, v.wrong_type.c, w.triple_messy.c, x.print_int_expression.c, y.print_int_expression_fancy.c, yo.c, yo.h, z.print_int_expression_fancy_and_neat.c
|
|
2/10 |
Preprocessor, #ifdef/#ifndef/#endif
snippets:
a.include_guard.h b.mintf.c, c.c, d.c, e.c, f.c, g.c, h.c, i.c, j.c, j.preprocessed.c, k.c, l.c, m.c, mintf.h, n.c, o.include_guard.h, p.h, print_integer.h, print_integer_FOR_EXAMPLE.h, q.c, q.h, r.c, s.c, t.c, u.c, v.c, w.c, x.c, x.preprocessed.c, y.c, z.c
|
Week 6: |
2/15 |
|
|
2/17 |
Address syntax
snippets:
a.c b.c, c.c, d.c, e.c, f.c, g.h, h.c, i.c, n.c, o.c, p.c, q.c, r.c, s.c, t.c, u.c, v.c, w.c, x.c
|
Week 7: |
2/22 |
Build automation with make, Makefile, compilation, object files, linking
snippets:
0130/0130.Makefile.1 0130/0130.Makefile.2, 0130/0130.Makefile.3, 0130/0130.Makefile.4, 0130/0130.Makefile.5, 0130/0130.Makefile.6, 0130/0130.notes.txt, 0130/0130.print_five.c, 0130/0130.print_five.h, 0130/0130.test_print_five.c, Makefile.1, Makefile.2, Makefile.3, Makefile.4, Makefile.5, notes.c, print_twos.c, print_twos.h, print_twos.o, test_print_twos.c, test_print_twos.o
|
|
2/24 |
Heap, malloc(…)
⚠️ Do not use (TYPE) malloc(…), ex: ✗ … = (char*) malloc(…) ⚠️ Do not use sizeof(TYPE), ex: ✗ … = malloc(sizeof(char))
snippets:
a.c b.c, c.c, d.c, e.c, f.c, g.c, h.c, i.c, n.c, notes.0130.txt, notes.txt, o.c, p.c, q.c, r.c
|
Week 8: |
3/1 |
Memory faults, Valgrind, memory leaks
“Invalid read of size 1” “Invalid write of size 1” “▒ bytes in ▒ blocks are definitely lost …” “definitely lost: ▒ bytes in ▒ blocks”
snippets:
a.repeat.stub.c, b.repeat.buggy.c, c.repeat.buggy.c, d.repeat.buggy.c, e.repeat.good.c, f.repeat.buggy.c, g.repeat.good.c, n.array_of_int.c, o.array_of_char.c, p.array_of_char.buggy.c, q.return_array_of_char.bad_names.c, r.array_of_char.c, r.return_array_of_char.c, s.repeat.buggy.c, t.repeat.buggy.c, u.repeat.buggy.c, v.repeat.buggy.c, w.repeat.good.c, x.repeat.buggy.c, y.repeat.buggy.c
|
|
3/3 |
Exercise: memory syntax, types, sizeof, HW10 pitfalls
|
Week 9: |
3/8 |
Parsing strings, pass/return by address, pos, a_pos, struct types (primer)
snippets:
a.c b.c, c.c, d.c, e.c, f.c, n.c, o.c, p.c, q.c, r.c, s.txt, t.c, u.c, v.c, w.c, x.c
|
|
3/10 |
Struct types, union types, enum types, typedef, Element
snippets:
_.c a.c, b.c, c.c, c.txt, d.c, e.c, f.c, g.c, h.c, i.c, j.c, k.c, l.c, m.c, n.c, o.c, p.c, q.c, r.c, s.c, t.c, u.c, v.c, w.c, x.c
|
Week 10: |
3/22 |
const qualifier, static functions, linked lists (primer)
snippets:
a.c b.c, c.c, d.c, e.c, f.c, g.c, h.c, hw11/json.h, i.c, j.c, k.c, l.c, n.c, o.c, p.c, print_integer_simple.c, print_integer_simple.h, q.c, r.c, s.c, t.c, test_print_integer_simple.c, u.c, v.c, w.c, x.c
|
|
3/24 |
|
Week 11: |
3/29 |
Binary search tree, function addresses
|
|
3/31 |
JSON assignment help, binary search tree (BST), Valgrind messages
in use at exit: ▒ bytes in ▒ blocks total heap usage: ▒ allocs, ▒ frees, ▒ bytes allocated ▒ bytes in ▒ blocks are […] lost […]
snippets:
a.c b.c, c.c, d.c, json.h, json_annotated.h, n.c, o.c, p.c, q.c, r.c, s.c, t.c, u.c
|
Week 12: |
4/5 |
Huffman coding - overview
|
|
4/7 |
Generic data structures, function addresses
snippets:
0130.append_any.c 0130.append_any_with_Points.c, 0130.append_any_with_Points_printable.c, 0130.append_any_with_Points_printable_BUGGY_1.c, 0130.append_any_with_Points_printable_BUGGY_2.c, 0130.append_any_with_int_print_max.c, 0130.append_any_with_int_printable.c, 0130.append_any_with_int_printable_check_values_with_assert.c, 0130.append_any_with_int_printable_check_values_with_assert_2.c, 0130.append_any_with_int_printable_check_values_with_assert_2_modified.c, 0130.append_any_with_ints.c, 0130.append_any_with_ints_BUGGY.c, 0130.append_string.c, a.c, append_anything.c, append_anything_and_print.c, append_anything_and_print_LETS_BE_WEIRD.c, append_anything_and_print_UNFINISHED.c, append_string.c, b.c, c.c, n.c, o.c, p.c
|
Week 13: |
4/12 |
Files
snippets:
a.c a.txt, a_fancy_scope_trick.c, b.c, b.txt, c.c, d.c, d.txt, e.c, f.c, f.txt, n.c, o.c, o.txt, p.c, p.c.txt, q.c, q.c.txt, r.c, r.c.txt, s.c, s.c.txt, t.c, u.c, v.c, v.c.txt, w.c, w.c.txt, x.c, y.c
|
|
4/14 |
Types, sizeof, standard integer types
snippets:
a.sizeof.c b.sizeof.c, c.sizeof.c, d.sizeof_standard_types.c, e.unsigned_char.c, f.binary_file.c, f.txt, n.c, o.c, p.c, r.c, s.c, t.c, u.c, v.c, w.c, x.c, y.c, y.txt
|
Week 14: |
4/19 |
Bitwise operations, in-class exercise
|
|
4/21 |
|
Week 15: |
4/26 |
Endianness, stack, function calls
|
|
4/28 |
Stack, function calls - exercise
|