Schedule
Week 1: | 1/13 |
Overview + Who Gets the Cake
slides:
20200113 course intro.pdf
|
HW01: Development tools: Vim,
due 1/17 (Fri)
|
1/15 | |||
1/17 |
Number representations
notes:
20200117.pdf
|
||
Week 2: | 1/22 |
Number bases, how to test HW02
Test with ⓐ easy cases, ⓑ edge cases, ⓒ corner cases
notes:
20200122.pdf
|
HW02: Strings: print_integer(…),
due 1/24 (Fri)
|
1/24 |
Test-driven development on HW02
notes:
notes.html
|
||
Week 3: | 1/27 |
HW03: Development tools: GDB,
due 1/30 (Thu)
|
|
1/29 |
Code quality, memory, segments
For loops disguised as while loops Thanks to the student who allowed us to critique their code
notes:
20200129.pdf
snippets:
a.c
|
||
1/31 | |||
Week 4: | 2/3 |
Address syntax, address arithmetic, memory segments, GDB
notes:
20200203.pdf
|
HW04_bonus: TDD,
due 2/5 (Wed)
HW04: Strings: mintf(…),
due 2/7 (Fri)
|
2/5 |
Address syntax, relationship of '&', '*', '[▒]', types, GDB
Announcement: Know every GDB command on reference sheet for exam 1
snippets:
ampersand_asterisk.c
|
||
2/7 |
Call by address, swap(…), memory form
⊘ “p*****r”❢❢❢
|
||
Week 5: | 2/10 |
Build stages, preprocessor
Build stages: preprocessor, compiler, linker #define symbols/macros, #include, #ifdef, #else, #endif
|
|
2/12 |
Build steps (preprocessor, compiler, linker), unit testing with miniunit, using log_▒▒▒(…) functions
|
||
2/14 |
Build steps (preprocessor, compiler, linker, error: “undefined reference to `▒▒▒' ⋯ error: ld returned 1”, preprocessor (#define, #include, #ifdef, #ifndef, etc.)
|
||
Week 6: | 2/17 |
malloc(…), memory form, pass-by-addres, GDB (list, break, info breakpoints, delete, run, info locals, info frame, frame, p/▒, x/▒)
notes:
20200217.pdf
|
HW05: Mini-unit: #define + make,
due 2/17 (Mon)
|
2/19 |
Activity: GDB practice for exam 1 + test-driven development (TDD) review, example
notes:
tdd gdb.pdf
snippets:
gdb_exercise.c
|
||
2/21 | |||
Week 7: | 2/24 |
Testing HW06 with miniunit, malloc(…) pitfalls, memory faults, Valgrind, conditional jump based on uninitialized value
|
HW06: Dynamic memory: smintf(…),
due 2/27 (Thu)
|
2/26 | |||
2/28 | |||
Week 8: | 3/2 |
Linked lists, best practices, common GCC errors, named initializers vs. compound literals
snippets:
append.c const_notes.c, for_vs_while.c, gcc_error_assignment_of_read_only_location.c, gcc_error_assignment_to_expression_with_array_type.c, gcc_error_attempting_to_modify_memory.c, gcc_error_initialization_discards_const_qualifier.c, gcc_error_writing_to_memory_marked_as_const.c, h.c, i.c, j.c, linked_list_size_1_simple.c, linked_list_size_2_simple.c, linked_list_size_3_using_append_function.c, linked_list_size_3_using_append_function_verbose_but_incomplete.c, named_initializer_vs_compound_literal.txt, syntax.c
|
HW07: Who Gets The Cake,
due 3/5 (Thu)
|
3/4 |
Activity: append(…) function for linked lists
|
||
3/6 |
JSON introduction, overview of typedef, enum, union
notes:
20200306.pdf
|
||
Week 9: | 3/9 |
Typedef, union, struct, enum, GDB x/ command, endianness
notes:
20200309.pdf
|
HW08: JSON 1,
due 3/9 (Mon)
HW09: JSON 2,
due 3/14 (Sat)
|
3/11 | |||
3/13 |
"
notes:
json language.pdf
|
||
▶▶▶ Switch to online ◀◀◀ Note: Videos may look different depending on the day. |
|||
Week 10: | 3/23 |
HW10: Tree sort,
due 3/27 (Fri)
|
|
3/25 | |||
3/27 |
qsort(…), function addresses
These are Boilercast videos from Spring 2019, but I have added them to this semester. If these links don't work for you, try going to Boilercast and either scrolling down or hitting Ctrl-F (or Cmd-F on Mac) to search for the topics. I am working on a new, fancier video, but it doesn't matter which one you watch. The information is the same. For the old ones, just skip the bits that we've already covered, or that don't apply to this semester. If these links don't work for you, try going into Blackboard » Boilercast.
|
||
Week 11: | 3/30 |
Function addresses, priority queues, static qualifier for helper functions
|
HW11: Huffman 1: priority queue,
due 4/2 (Thu)
|
4/1 | |||
4/3 |
Bytes vs. values, endianness, files
Quiz questions are for your practice, and not graded.
slides:
bytes vs values, endianness.pptx
|
||
Week 12: | 4/6 |
Error handling with files
You can skip to specific topics by clicking the button in the player. This was actually posted on Wed 4/8.
slides:
20200406 error handling.pptx
|
HW12: Huffman 2: files, frequencies,
due 4/8 (Wed)
|
4/8 |
Huffman coding
slides:
20200408 huffman.pdf
snippets:
a.c b.c, bitwise.c, bitwise_2.c, bitwise_3.c, bitwise_4.c, bitwise_5.c, bitwise_6.c, c.c, d.c, e.c, print_integer.c, print_integer.h
|
||
4/10 |
Bitwise operations
snippets:
set_bit_1.c set_bit_2.c, set_bit_3.c, set_bit_4.c, set_bit_5.c, set_bit_6.c, set_bit_7.c, set_bit_8.c
video:
20200410.mp4, 20200410_First_Frame.png, 20200410_Thumbnails.png, 20200410_config.xml, 20200410_embed.css, 20200410_player.html, index.html, scripts/config_xml.js, scripts/desktop.ini, scripts/techsmith-smart-player.min.js, skins/desktop.ini, skins/remix/desktop.ini, skins/remix/techsmith-smart-player.min.css
|
||
Week 13: | 4/13 |
Code deduplication
|
HW13: Huffman 3: linked list of trees,
due 4/14 (Tue)
HW14: Huffman 4: build Huffman tree,
due 4/17 (Fri)
|
4/15 | |||
4/17 | |||
Week 14: | 4/20 |
Command line arguments, argv, argc, arrays of strings, error handling, goto
|
HW15: Huffman 5: write bits to a file,
due 4/20 (Mon)
HW16: Huffman 6: encode tree to file,
due 4/23 (Thu)
HW17: Huffman 7: encode data to file,
due 4/25 (Sat)
|
4/22 |
Images, binary files, writing/reading struct objects to/from files, Exam 3 information
snippets:
here.bin save_struct_object_to_file.c
|
||
4/24 |
Software engineering review for Exam 3, ISO C89→C99→C11→C18
Code quality, TDD, testing, typecasts You should also watch the lecture from Mon 4/13 in its entirety, if you have not done so already.
|
||
Week 15: | 4/27 |
Parallel programming, review of unit testing, code coverage, bugs vs. run time errors, X forwarding
|
HW18: Huffman 8: command line,
due 4/30 (Thu)
HW19: Buffer overflow,
due 5/2 (Sat)
EC01: BMP,
due 5/2 (Sat)
EC02: Parallel Adaptive Threshold,
due 5/2 (Sat)
|
4/29 |
Buffer overflow, stack memory, instructions, registers, assembly language
|
||
5/1 |
OPTIONAL: Alchemy, next steps for learning C after ECE 264
|
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.