Daily Schedule

Unit 1: Bits and Bytes

Sep. 16: Lesson 1 - It's Nice to C You
Sep. 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 Around
Oct. 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 - DNS
Nov. 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 Pipe
Nov. 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 Memories
Nov. 15: Lesson 26 - Remember Me

Next Term: Real Time Systems (CS 330)

Nov. 20: Lesson 28 - So Long, and Thanks for All the Fish


Labs

Lab 0: Using VS Code and mantis
Lab 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 stdin and stdout
  • 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)