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.


Office Hours

Nat Tuck WVH 314 Wed 3-4pm, Fri 4-5pm ntuck ⚓ ccs.neu.edu
Patel Savan WVH 1st Floor Lab Mon 2pm-4pm patel.sav ⚓ husky.neu.edu
Aakash Kumar WVH 1st Floor Lab Wed 11am-2pm aakash.k ⚓ 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 Assignments

Homework will be assigned and submitted through Bottlenose.

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

Some homework assignments may provide extra credit opportunities, which will allow for homework scores over 100%.


Participation has several parts:


Homework 95%
Participation 5%


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

Dates Topics Work Due
Jan 10
Jan 13
  • Introduction
  • ASM: Functions, Iteration, Recursion
  • HW01: The CCIS Linux Server
  • Read: Ch 1, Ch 2.1-2.8
Jan 17
Jan 20
  • ASM: "Design Recipe"
  • ASM: Static Data, Syscalls, I/O, Memory Allocation
  • HW02: Simple ASM
  • Read: Ch 2.1-2.8, Appendix A.6, A.9, A.10
  • Read: Green Card
Jan 24
Sep 27
  • C: Functions, Pointers, and The Stack
  • C: Arrays and Pointers
  • HW03: Sort in ASM
Jan 31
Feb 3
  • C: malloc, structs, and data structures
  • UNIX Syscalls: fork, exec, waitpid
  • HW04: Sort in C
Feb 7
Feb 10
  • Building a Shell
  • C: I/O with read, write & mmap (process table)
  • Read: ostep.org: Ch 5, 14
Feb 14
Feb 17
  • Virtual Memory, Page Tables, MMU (slides)
  • Memory Allocation: Free List
  • HW05*: UNIX Shell
  • Read: Ch 5.3 - 5.4
Feb 21
Feb 24
  • Memory Allocation: Buddy System, Slabs
  • Garbage Collection
  • HW06*: Simple Memory Allocator
Feb 28
Mar 3
  • POSIX Threads, Mutexes
  • Cond Vars, Semaphores, Atomics
  • HW07: Advanced Memory Allocators
  • Read: xv6 proc.h, proc.c, vm.c
Mar 7
Mar 10

Spring Break!


Mar 14
Mar 17
  • IPC: mmap and semaphores
  • IPC: pipes and named pipes
  • HW08: Producer / Consumer (Threads)
  • Read: Ch 5.7; ostep.org: Ch 15, 18, 19
Mar 21
Mar 24
  • Operating Systems (slides)
  • Introducing xv6
  • HW09: Producer / Consumer (Processes)
  • Read: ostep.org: Ch 26, 27.1, 27.2
Mar 28
Mar 31
  • Solutions for Parallelism
  • IPC: Sockets
  • HW10: Examining xv6
  • Read: ostep.org: Ch 27.3, 28, 31
Apr 4
Apr 7
  • File Systems (slides)
  • Introduction to FUSE
  • HW11*: Thread Safe Memory Allocator
  • ostep.org: Ch 30
Apr 11
Apr 14
  • Authentication and Access Control (slides)
  • Exploit Prevention (slides)
Apr 18
  • File System HW Workshop
  • HW12*: File System

* Starred homeworks will probably be worth double points.


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 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 code source, 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.