CS 3650 - Computer Systems

Introduces the basic design of computing systems, computer operating systems, and assembly language using a RISC architecture. Describes caches and virtual memory. Covers the interface between assembly language and high-level languages, including call frames and pointers. Covers the use of system calls and systems programming to show the interaction with the operating system. Covers the basic structures of an operating system, including application interfaces, processes, threads, synchronization, interprocess communication, deadlock, memory management, file systems, and input/output control.

Interesting Links


Lecture Sections

Feel free to come to either lecture as long as there is an available seat.

3650-01 IV 019 Tu/Fr 9:50-11:30am
3650-02 IV 019 Tu/Fr 1:35-3:15pm

Office Hours

Nat Tuck NI 132E Mo 2pm-3pm, Fr noon-1pm ntuck ⚓ ccs.neu.edu
Supraja Krishnan Snell Library 45 Tu 3:30pm-5:30pm krishnan.sup ⚓ husky.neu.edu
Nakul Camasamudram WVH 362 We 10am-noon camasamudram.n ⚓ husky.neu.edu
Tanmay Ulhas Budukh WVH 462 Th 8-10am budukh.t ⚓ husky.neu.edu
James Wu WVH 362 Sa 6-7pm wu.jame ⚓ husky.neu.edu
Samuel Vogel SL 045 Tu noon-1pm vogel.sa ⚓ husky.neu.edu
Jack Elliot WVH 462 Fr 3-4pm elliott.jame ⚓ husky.neu.edu


Computer Organization and Design: The Hardware/Software Interface
Patterson & Hennessy
Fifth Edition

We'll also be using Operating Systems, Three Easy Pieces and the Xv6 Unix Source code, available online.

Work For This Class

Homework & Challenge Assignments

Assignments will be assigned and submitted through Bottlenose.

Late assignments will be penalized 1% for every hour late, except for the last assignment which must be submitted on time for credit.

Challenge assignments are just like homework assignments, except they're significantly more difficult and will be graded more harshly.


Participation has several parts:


Homework 65%
Challenges 30%
Participation 5%


Here's how the semester is likely to play out. Details subject to change.

Week Dates Topics & Reading Work Due
1 Sep 08
  • Introduction
  • Read: P&H Ch 1, 2
2 Sep 12
Sep 15
  • ASM: Functions, Iteration, Recursion
  • ASM: "Design Recipe"
  • HW1: The CCIS Linux Server
  • Read: P&H Appendix A6, A9, A10, Green Card
3 Sep 19
Sep 22
  • Processes & Memory Layout
  • ASM: Syscalls, I/O, Memory Allocation
  • HW2: Simple ASM
  • Read: OSTEP ch 4, 13
  • Read: P&H ch 2
4 Sep 26
Sep 29
  • C: Functions, Pointers, Arrays, and The Stack
  • C: The Heap; A Simple Parser
  • HW3: Less Simple ASM
  • Read: OSTEP ch 14
  • Read: P&H 2.14
5 Oct 3
Oct 6
  • UNIX Syscalls: fork, exec, waitpid
  • Building a Shell
  • HW4: Shell Command Parsing
  • Read: OSTEP ch 5
6 Oct 10
Oct 13
  • I/O with read & write; Process table & Virtual Memory
  • Shared Memory & Semaphores
  • Challenge 1: UNIX Shell
  • Read: OSTEP 15, 16, 18, 31
  • Read: P&H 5.6, 5.7
7 Oct 17
Oct 20
  • Threads, mutexes, data races
  • Cond vars, atomics, deadlocks
  • HW5: Inter-Process Communication
  • Read: OSTEP 26, 27, 28, 30
8 Oct 24
Oct 27
  • Memory Allocation: Free List
  • Memory Allocation: Optimizations
  • HW6: Inter-Thread Communciation
  • Read: OSTEP ch 17
  • Read: P&H ch 6.1 - 6.6
9 Oct 31
Nov 3
  • Memory Allocation w/ Threads
  • Existing Systems: Caches, Multiple Arenas
  • HW7: Memory Allocator
  • Read: P&H ch 5.1 - 6.4
10 Nov 7
Nov 10
  • Operating Systems: Kernels
  • A Quick Look at xv6
  • Challenge 2: Thread-safe Allocator
11 Nov 14
Nov 17
  • File Systems: FAT, vsfs
  • Intro to FUSE
  • HW8: Examining xv6
  • Read: OSTEP ch 39, 40
12 Nov 21
  • File Systems: ext*
  • HW9: Simple File System
  • Read: OSTEP ch 41, 42, 43
13 Nov 28
Dec 1
  • File Systems: log-based, COW
  • Solutions for Concurrency
  • Read: OSTEP ch 32, 33
14 Dec 5
  • Wrap Up
  • Challenge 3: Fancy File System
  • Read: OSTEP ch 47


Special Accomodations

Students needing disability accommodations should visit the Disability Resource Center (DRC).

If you have been granted special accomodations either through the DRC or as a student athlete, let me know as soon as possible.

Code Copying & Collabaration Policy

Copying code and submitting it without proper attribution is strictly prohibited in this class. This is plagiarism, which is completely unacceptable.


Collaboration and Attribution:

Since it's not plagiarism if you provide attribution, as a special exception to these rules, any code sharing with completely clear attribution will not be treated as a major offense. Instead, credit will be split between the writers of the code.

In order to qualify for this exception, every collaborator must include a prominent notice either as a multi-line comment at the top of the submitted single source file or at the top of a submitted README file identifying all collaborators.

For example, if four students work together to do a homework, the submission will be graded as usual and then the points will be split evenly four ways as long as the collaboration is clearly indicated in the submissions. Alternatively, if a student copies half their work from Stack Overflow with proper credit, they'll get half the points.


First Offense:

Posting Work Online

You want to post your work to Github. I want to re-use assignments next semester without students submitting old homework.

  1. Solutions to "Homework" assignments may not be posted publicly.
  2. Solutions to "Challenge" assignments may be posted publicaly *after* a late submission would be worth no points (4 days after due date).