Fall 2020
This is draft. Information subject to change.
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.
Section | Location | Time |
---|---|---|
01 | SH 425 | 11:45am-1:25pm Mo/Th |
03 | SH 335 | 2:50pm-4:30pm Mo/We |
In person class meetings are optional. You can find Zoom links for remote participation on Canvas.
Profs Alden Jackson and Gene Cooperman are also offering sections of the course. These sections will vary somewhat in assignments and topics.
Name | Location | Hours | |
---|---|---|---|
Nat Tuck | MS Teams | We 1pm-2pm | ntuck ⚓ ccs.neu.edu |
Amitesh Deshpande | MS Teams | Th 5pm-6pm | deshpande.am ⚓ northeastern.edu |
Samarth Parikh | MS Teams | Th 10am-11am | parikh.sam ⚓ northeastern.edu |
Vikas Veerabathini | MS Teams | Tu 5pm-6pm | veerabathini.v ⚓ northeastern.edu |
Ishani Kapoor | MS Teams | Mo 11:30am-11:30am | kapoor.i ⚓ northeastern.edu |
Due to the ongoing pandemic, we'll be using an altered course structure this semester as well as following the Northeastern policies.
Course structure changes:
Make sure you are familar with the university policies for being on campus and attending classes during the COVID-19 pandemic.
Specifically, keep in mind the following for our in-person meetings:
This is an initial schedule, subject to revision as the semester progresses.
Assignments will frequently be due at 11:59pm on Tuesday.
Information about assignments and due dates appear here, on Canvas, and on Inkfish. Only the assignments and due dates listed on Inkfish matter.
Week | Starts | Topics | Work Due |
---|---|---|---|
1 | Sep 07 (α) | Intro: Systems & Assembly | - |
2 | Sep 14 | ASM: "Design Recipe"; Large ASM Example; | HW01: Linux Setup & Hello Worlds |
3 | Sep 21 | ASM: Syscalls, I/O, the heap; Processes & Memory | HW02: ASM, Pointers, Funs |
4 | Sep 28 | C: Arrays & Pointers; C: Data Structures; | HW03: ASM Sort |
5 | Oct 05 | A Simple Tokenizer; Syscalls: fork, exec, waitpid; | HW04: C Data Structures |
6 | Oct 12 (β) | Building a Shell & pipe; read, write, proc table, vmem; | HW05: Shell Tokenizer |
7 | Oct 19 | shared mem & data races; semaphore locks & deadlock; | CH1: Unix Shell |
8 | Oct 26 | threads and mutexes; cond vars and atomics | HW06: Parallel Sort (Processes) |
9 | Nov 02 | malloc: free lists; malloc: optimizations & threads; | HW07: Parallel Sort (Threads) |
10 | Nov 09 (γ) | Garbage Collection; OS Kernels | HW08: Simple Memory Allocator |
11 | Nov 16 | Looking at xv6; Disk Hardware | CH2: Advanced Memory Allocator |
12 | Nov 23 (δ) | File Systems: FAT; File Systems: ext | HW09: Examining xv6 |
13 | Nov 30 | The FUSE API; Concurrency solutions | HW10: Simple FS |
14 | Dec 07 (ε) | Wrap Up; Last class Monday | CH3: Advanced FS |
The textbook for this course is online:
Recommended Readings by Week:
We will also be referring to:
Percentages are approximate.
The number to letter mapping will be as follows:
95+ = A, 90+ = A-, 85+ = B+, 80+ = B, 75+ = B-, 70+ = C+, 65+ = C, 60+ = C-, 50+ = D, else = F
There may be a curve or scale applied to any assignment or the final grades, in either direction.
There's a homework or challenge assignment due nearly every week. These assignments will be posted and submitted on Inkfish - make sure to check there for accurate assignment info and due dates.
Assignments in this class is difficult and you are expected to get stuck. Start early so you have time to get unstuck.
Challenges are just like homework, except they're harder, worth more points, and they are graded more harshly. You'll want to start early and plan to spend a lot of time on them.
In order to learn the material in this class you must submit the assignments. If at any point you have three unexcused zero grades for assignments that have been graded you will fail the course.
If you fall behind on the course work for any reason, please come to the professor's office hours to discuss how you can catch up.
Late submissions will be penalized by 1% for each hour late.
For the final assignment, late submissions will not be accepted after the sun comes up in Boston and the TAs start grading.
Late Registration
If you register late for the course please contact the professor for extended homework due dates as soon as possible. In general you will be expected to complete all of your assignments in order, and you will receive an extension on at most one assignment due after your registration date.
Late submissions will be penalized per the normal policy without an explicit written extension from the instructor.
Homework and project grades will be posted on Inkfish. If you think your work was graded incorrectly, you can challenge your grade through the following process:
First, go to the office hours of the course staff member who graded your work. If you can convince them that they made a concrete error in grading, they will fix it for you.
If the grader doesn't agree that the grade was wrong, you can formally contest your grade with the professor. This follows a variant of the "coaches challenge" procedure used in the NFL.
Here's the formal challenge procedure:
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.
Copying code and submitting it without proper attribution is strictly prohibited in this class. This is plagiarism, which is a serious violation of academic integrity.
Providing solution code to other students is also strictly prohibited.
Details
Lecture Notes
Lecture notes are not starter code, and should not be copied without attribution. As long as attribution is provided, there is no penalty for using code from the lecture notes.
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.
There is no penalty for copying small snippets of code (a couple of lines) with attribution as long as this code doesn't significantly impact the intended challenge of the assignment. This should be in a comment above these lines clearly indicating the source (including author name and URL, if any).
If you copy a large amount of code with attribution, you won't recieve credit for having completed that portion of the assignment, but there will be no further penalty. The attribution must be obvious and clearly indicate both which code it applies to and where it came from.
Posting Code on the Web
Penalty for Plagarism or Providing Solution Code
First offense:
Avoid copying code if you can. If you're looking at an example, understand what it does, type something similar that is appropriate to your program, and provide attribution. If you must copy code, put in the attribution immediately, every time or you will fail the course over what feels like a minor mistake.