Daily Schedule
Unit 1: Bits and Bytes
Sep. 16: Lesson 1 - It's Nice to C YouSep. 18: Lesson 2 - A Structured Construction
Sep. 20: Lesson 3 - A Bit of an Operation
Sep. 23: Lesson 4 - It's Dangerous To Go Alone
Sep. 25: Lesson 5 - Some Helpful Pointers
Sep. 27: Lesson 6 - Where Oh Where Has My Little Byte Gone
Sep. 30: Lesson 7 - Complementary Counting
Oct. 02: Lesson 8 - Trusting Trust
Oct. 04: Lesson 9 - What Goes Around Comes Around
Oct. 07: Lesson 10 - What Goes Around Comes Around...and Around
Oct. 09: Lesson 11 - Once More, With Feeling
Oct. 11: Lesson 12 - Exam 1
Nov. 06: Lesson 22 - What a Long, Strange Trip It's Been
Nov. 08: Lesson 23 - Exam 2
Unit 2: Instruction Set Architecture / Security
Oct. 07: Lesson 10 - What Goes Around Comes Around...and AroundOct. 14: Lesson 13 - Register Here
Oct. 16: Lesson 14 - Taking the Leap
Oct. 18: Lesson 15 - The Flag Code
Oct. 23: Lesson 16 - Getting to the Point
Oct. 25: Lesson 17 - The Function of Functions
Oct. 28: Lesson 18 - The Best Defense is a Good Offense
Nov. 06: Lesson 22 - What a Long, Strange Trip It's Been
Nov. 08: Lesson 23 - Exam 2
Unit 3: Networking
Oct. 30: Lesson 19 - DNSNov. 01: Lesson 20 - Networking Overview
Nov. 06: Lesson 22 - What a Long, Strange Trip It's Been
Nov. 08: Lesson 23 - Exam 2
Unit 4: Operating Systems
Nov. 04: Lesson 21 - This is not a PipeNov. 06: Lesson 22 - What a Long, Strange Trip It's Been
Nov. 08: Lesson 23 - Exam 2
Nov. 11: Lesson 24 - The Process of Multitasking
Nov. 18: Lesson 27 - A Shell of a Descriptor
Unit 5: Memory Hierarchies
Nov. 13: Lesson 25 - Making MemoriesNov. 15: Lesson 26 - Remember Me
Next Term: Real Time Systems (CS 330)
Nov. 20: Lesson 28 - So Long, and Thanks for All the FishLabs
Lab 0: Using VS Code and mantisLab 1: Debugging C with VS Code
Lab 2: A little data representation
Lab 3: Assembly language
Lab 4: Debugging C with gdb
Lab 5: Debugging x86-64 with gdb
Lab 6: Getting started with processes
Schedule by Week
Week 1:
- Monday: intro to C, bits and bytes, arrays, assignment #1
- Wednesday: bases and conversions, C types, structs, file I/O, assignment #2
- Friday: numerical operations, assignment #3, debugging in VS code lab
Week 2:
- Monday: quiz, character encodings
- Wednesday: academic integrity discusion, memory addresses, pointers, assignment #4
- Friday: C string functions, hexdump, data representation lab, byte ordering
Week 3:
- Monday: quiz, byte ordering recap, number reps and 2’s complement
- Wednesday: compiling a C program, paper discussion – Trusting Trust
- Friday: 2’s complement recap, converting between signed/unsigned, resizing, assignment #5
Week 4:
- Monday: quiz, arithmetic and overflow, x86-64 preview
- Wednesday: review
- Friday: Exam Day #1, time to work on assignments
Week 5:
- Monday: process memory diagram, intro to x86-64, assignment #6 puzzle0
- Wednesday: data movement in x86-64, control flow block diagrams, arrays, switch statements
- Friday: quiz, arithmetic operations, interpreting conditional jumps
Week 6:
- Monday: Midterm Break!
- Wednesday: condition codes, structs and arrays, assignment #7, gdb+C debugging lab
- Friday: function calls and the stack, gdb+assembly debugging lab
Week 7:
- Monday: quiz, buffer overflow attacks
- Wednesday: paper discussion – DNS, assignment #8
- Friday: networking
Week 8:
- Monday: quiz, file systems, redirecting
stdinandstdout - Wednesday: review (async)
- Friday: Exam Day #2, time to work on assignments
Week 9:
- Monday: file descriptors, processes and
fork, pipes, assignment #9 - Wednesday: memory hierarchy, cache basics, direct-mapped caches
- Friday: recap caches, fully and set-associative caches, cache performance
Week 10:
- Monday: quiz, recap: redirection and pipes
- Wednesday: preview of CS 330
Quizzes and Exams
In place of large, cumulative exams, you will have the opportunity to demonstrate your mastery of the course Learning Outcomes through a series of several quizzes. Every four weeks, there will also be an “Exam Day” when you can take new versions of old quiz questions to demonstrate mastery of any missing Learning Outcomes.
The final exam, which is scheduled according to the Carleton College final exam schedule, will be similar to Exam Days, except that there will be a new quiz covering the last week of class.
- Exam Day #1: Friday, October 11th (in class)
- Exam Day #2: Friday, November 8th (in class)
- Final: Saturday, November 23rd (8:30am-11:00am)