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.

Resources

Challenge Project

Office Hours

Nat Tuck WVH 314 Thursday, 2-4pm ntuck ⚓ ccs.neu.edu

Textbook

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 assignments will be available in the course subdirectory (/course/cs3650f16), accessible from your CCIS Linux account. Homework will be submitted using the submission scripts available on the CCIS servers.

Late homework may or may not be graded. If it is graded, you will lose 25% off your grade for that assignment. If it's not graded, you get a zero.

In-Class Participation

Questions will occasionally be asked in class of a random student. Answering these questions in class will contribute to a virtual "class participation" homework assignment.

Exams

We'll have two exams, a midterm and a final. These account for the majority of the grade. Exam topics may include anything we cover before the exam. The final will be cumulative.

Grading

Homework 30%
Midterm Exam 30%
Final Exam 40%

Schedule

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

Dates Topics Work Due
Sep 9
  • Introduction
  • Read: Ch 1, Ch 2.1-2.8
Sep 13
Sep 16
  • Assembly Language
  • Read: Ch 2.1-2.8, Appendix A.6, A.9, A.10
  • Read: Green Card
  • HW1 (ASM1) Due
Sep 20
Sep 23
  • Pointers in C
 
Sep 27
Sep 30
  • More Assembly
  • Symbol Tables
  • HW2 (C Ptrs) Due
Oct 4
Oct 7
  • UNIX Shell
  • UNIX Syscalls: fork, exec, waitpid
  • Read: ostep.org: Ch 5, 14
  • HW3 (ASM2) Due
Oct 11
Oct 14
  • CPU Caches: Direct, Set Assoc, Fully Assoc
  • Read: Ch 5.3 - 5.4
Oct 18
Oct 21
  • More on Caches
  • Python
Oct 25
Oct 28
  • Mid-Term Exam
  • Virtual Memory
  • HW5 (Python) Due
Nov 1
Nov 4
  • MMU / TLB
  • Unix Process Table
  • Read: Ch 5.7; ostep.org: Ch 15, 18, 19
Nov 8
No class Friday
  • Page Tables
  • Read: xv6 proc.h, proc.c, vm.c
  • HW6 (Cache) Due
Nov 15
Nov 18
  • POSIX Threads
  • Read: ostep.org: Ch 26, 27.1, 27.2
  • HW7 (xv6) Due
Nov 22
No class Friday
  • Mutexes, Semaphores
  • Read: ostep.org: Ch 27.3, 28, 31
Nov 29
Dec 2
  • Cond Vars
  • Solutions for Parallelism
  • ostep.org: Ch 30
  • HW8 (Threads) Due
Dec 6
Dec 9
  • Bonus Topic / Overflow
  • Review
 
Dec 12 - 16

Final Exam

Policies

Collaboration & Sharing Code