CS 5600 - Computer Systems

(Revised 2020/03/07; 2020/01 Version)

Spring 2020

The course catalog says:

Studies the structure, components, design, implementation, and internal operation of computer systems, focusing mainly on the operating system level. Covers current operating system components and construction techniques system calls, I/O, memory management, and file system structures. Discusses issues arising from concurrency and distribution, such as scheduling of concurrent processes, interprocess communication and synchronization, resource sharing and allocation, and deadlock management and resolution. Includes examples from real operating systems. Exposes students to the system concepts through programming exercises. Requires admission to MS program or completion of all transition courses.

This course will explore operating system implementation through programming assignments. This is a programming heavy course; students are expected to be proficient at programming.

Essential Resources

References

Sections

Section Location Time
01 CH 103 2:50pm-4:30 Mo/We

This page is about the section offered in-person on the Boston campus. There are other sections of the course offered at other campuses and/or online.

Staff & Office Hours

Name Location Hours Email
Nat Tuck NI 132 E We 1:30-2:30pm; Fr 5:30-6:30pm ntuck ⚓ ccs.neu.edu
Kashif Bagdadi RY 159 We 4:50-6:50pm bagdadi.k ⚓ husky.neu.edu
Harman Singh HS 101 Th 3-5pm singh.harm ⚓ husky.neu.edu
Meesam Syed HS 103 Tu 9-11am meesam.s ⚓ husky.neu.edu

Schedule

This is the projected schedule as of March 7th; it may change.

Assignments will frequently be due at 11:59pm on Thursday.

Week Starts Topics Possible Due Dates
1 Jan 6 Intro; ASM 1 HW01: Linux Dev Environment
2 Jan 13 ASM 2; ASM syscalls HW02: Simple ASM Programs
3 Jan 20 [MLK Day] Kernel Intro -
4 Jan 27 procs; fork/dup HW03: Syscalls
5 Feb 3 threads HW04: xv6 syscall
6 Feb 10 mmap; data races HW05: xv6 shell
7 Feb 17 [Pres Day] virtual memory HW06: parallel sort
8 Feb 24 allocators HW07: xv6 shared memory
- Mar 2 Spring Break -
9 Mar 9 garbage collection HW08: memory allocator
10 Mar 16 concurrency; rust HW09: garbage collector
11 Mar 23 virtual machines; disks HW10: rust parallel sort
12 Mar 30 FAT/ext; FUSE HW11: makeup
13 Apr 6 modern FS; dist pt1 -
14 Apr 13 dist pt2; wrap-up HW12: file system

Holidays and Breaks:

Textbook

The textbook for this course is online:

Grading

Letter Grades

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.

Homework

There’s a homework due most weeks. Assignments in this class is difficult and you are expected to get stuck. Start early so you have time to get unstuck.

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 Work

For all assignments except the last challenge, 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 and the TAs start grading.

Late Registration

If you register for the course late, you will have three days to complete each assignment until you are caught up with the rest of the class.

Participation

Participation on Piazza gives you points if you ask good questions, give good answers, or post interesting notes related to the course topics.

Participation in in class activities earns points for being there and participating.

Policies

Contesting Grades

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:

Special Accomodations

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.

Code Copying & Collabaration Policy

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.