Time and Location: Mondays and Thursdays from 11:45 - 1:25 pm in West Village G 108
Office hours: Thursdays from 2:00 to 3:00 pm in ISEC 608
TA office hours: Tuesdays 12 noon - 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)^||Readings||Notes|
|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)||T|
|3 Oct||Processor Architecture|
|14 Oct||No class - Columbus day|
|17 Oct||Caches||Lab 5 (due: 24 Oct)|
|24 Oct||Concurrency||Lab 6 (due 31 Oct)|
|28 Oct||Operating Systems|
|31 Oct||Operating Systems||Lab 7 (due 07 Nov)|
|4 Nov||Storage Devices|
|7 Nov||Storage Devices|
|11 Nov||No class veterans day|
|14 Nov||Computer System Security|
|18 Nov||Computer System Security|
|21 Nov||Final Quiz||T|
|25 Nov||Computer System Security||Lab 8: (due 02 Dec)|
|2 Dec||Final Class|
|5 Dec||Reading day||G only|
^ - 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 by Profs. Srdjan Capkun, Onur Mutlu, Markus Pueschel, and Frank Gurkaynak.