Beware: This page is for the section taught by Aanjhan Ranganathan ONLY. There are other sections (content/deadlines might vary) of the same course taught by Mike Shah and Nat Tuck.
Time and Location: Mondays and Thursdays from 11:45 - 1:25 pm in West Village G 108
Piazza: All course related interactions will take place over Piazza. Enroll here!
Office hours: Thursdays from 2:00 to 3:00 pm in ISEC 608
TAs: Jennifer Ribeiro, Akash Parikh
TA office hours: Tuesdays 5.30 pm - 6.30 pm, Wednesdays 12 - 1 pm in ISEC 605
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, etc. Additionally, it will give the students a brief overview of computer system security issues.
The course will be based on the following three textbooks (it is not mandatory to buy them)
There will be 8 programming labs throughout the semester. We will start the labs in class on Mondays and you will wrap it up on the due date mentioned. Wrapping up means submission before start of class on that specific date. We will use Github Classroom for lab assignment and submissions.
You will form groups of two people (possibly three, only if necessary) to do the projects. You may switch groups between programming projects.
Slip days: Each team has 4 slip days that they can use at any time to extend a deadline. You don’t need to ask me, just turn-in late. In scenarios of changing teams, a team’s slip days is the member with the lowest remaining slip days.
Important Note: If you refered or obtained a key idea from a book, person or any online source, then the source of the idea (it can be code as well) must be cited. I am not against looking up additional sources to complete the projects but I will not tolerate academic dishonesty. If I think some part of the project has been blindly copied without understanding, I reserve the right to cross-examine the submitted lab.
|Labs (10):||70% (Lab 1 and 8: 5% each; Labs 2-7: 10% each)|
Note: The schedule is tentative and can change due to weather, travel, syllabus coverage speed etc.
|Date||Topic||Lab (due dates)^|
|5 Sep||Intro / Course logistics|
|9 Sep||C Programming (The Basics)||Lab 1 (due: 16 Sep)|
|12 Sep||C contd…|
|16 Sep||C Data structures||Lab 2 (due: 23 Sep)|
|23 Sep||Assembly||Lab 3 (due: 30 Sep)|
|30 Sep||Compilers||Lab 4 (due: 07 Oct)|
|3 Oct||Processor Architecture|
|7 Oct||Processor Architecture|
|10 Oct||Hard disks, SSD|
|14 Oct||No class - Columbus day|
|17 Oct||Caches||Lab 5 (due: 24 Oct)|
|24 Oct||Virtual Memory|
|28 Oct||Virtual Memory||Lab 6 (due 4 Nov)|
|4 Nov||Concurrency||Lab 7 (due 14 Nov)|
|11 Nov||No class veterans day|
|14 Nov||Computer System Security|
|18 Nov||Computer System Security|
|21 Nov||Final Quiz|
|25 Nov||xv6 - Operating System||Lab 8: (due 02 Dec)|
|2 Dec||Final Class|
|5 Dec||Reading day No class|
^ - Remember all labs are due before the start of class on the dates mentioned
This course is largely adopted from previous courses given at Northeastern by Profs. Gene Cooperman, Nat Tuck, Mike Shah, and Christo Wilson. Some parts are from similar course taught at ETH Zurich and UW Madison by Profs. Srdjan Capkun, Onur Mutlu, Markus Pueschel, Frank Gurkaynak, and Remzi Arpaci-Dusseau.