Computer Systems CS 5600

"No more magic" -- Your Instructor

Course Information

  • Course Number: CS 5600
  • Semester: Summer 2018
  • Hours: 6:00pm-9:00pm
    • Tuesday Schedule: Lecture | In-Class Activity | Lab
  • Location: Snell Library 031
  • Piazza: Forum Board

Instructor

  • Instructor: Mike Shah
  • E-mail: mikeshah( a t )Northeastern
  • Office: Nightingale 132A
  • Office Hours: Wednesday: 3:00-5:30pm or by Appointment arranged by e-mail.

Teaching Assistant

  • Name: Bagus Trihatmaja
  • E-mail: trihatmaja.a (a t) husky.neu.edu
  • Office Hours: Outside 370, CCIS, WVH
    • Tue: 2:30-4:30pm
    • Sun: 4-6:00pm
  • Name: Nakul Vankadari Ramesh
  • E-mail: vankadariramesh.n (a t) husky.neu.edu
  • Office Hours:
    • Wed: 4-6:00pm (362 WVH or 3rd floor lobby near 370)
    • Thur: 4-6:00pm (362 WVH)
  • Name: Shlomi Yaakobovich
  • E-mail: yaakobovich.a (a t) husky.neu.edu
  • Office Hours:
    • Tues: 4-5:00pm (370 WVH--knock first)

Schedule/Road Map


The following is our tentative syllabus for the course, some small changes should be expected throughout the semester. I will announce in class or through e-mail any major changes.

  • To get all of the assignments/activities for the course, you must first click the following link: CS 5600 Monorepo Do not do a 'git pull' until class starts (Occasionally I make changes/spelling corrections)
Week
Date
Lecture and Readings Readings
(Done before the class)
Lab Assignments Note(s)
1 Tuesday, May 8, 2018 Lecture 1 - An Overview of Computer Systems
Read the syllabus
ostep ch. 1 and 2
Terminal Overview
Automate (some of) your life (due 5/16)
-- --
2 Tuesday, May 15, 2018 Lecture 2 - The C Programming Language and C Data Structures
The Development of the C Language
Linked List
Building Data Structures (due 5/23)
-- --
-
Sidequest -1 | C with Classes
3 Tuesday, May 22, 2018 Lecture 3 - Assembly and Machine Representation
Assembly Guide | Yale Assembly Guide | Assembly for Compiler Writers
Generating Assembly/Writing Assembly
Assembly Programming (due 6/2 @5pm)
-- --
4 Tuesday, May 29, 2018 Lecture 4 - Compilers and Linkers
Valgrind Paper | Compilers Intro | Skim Linkers series
Linker Lottery Hack
-- --
-- --
-
Sidequest 0 | Binary Analysis - Disassembly
-
Sidequest 1 | Code Quality Analysis
5 Tuesday, June 5, 2018 Lecture 5 - Processor and Processes
ostep ch 3,4,5
Processes
Shell (due 6/19 @5:00pm)
-- --
6 Tuesday, June 12, 2018 Lecture 6 - The Memory Hierarchy
What every programmer should know about Memory | ostep 12-15
Cache Simulator Traces
-- --
-- --
-
Sidequest 2 | Cache Oblivious Algorithms
-
Sidequest 3 | Vertex Cache Optimization
7 Tuesday, June 19, 2018 Lecture 7 - Virtual Memory and Dynamic Memory Allocation
ostep 16-19
Allocators
Cache Simulator and Simple Allocator (Due July 5 @ 11:59pm)
-- --
8 Tuesday, June 26, 2018 Lecture 8 - Concurrency
Cooperating sequential processes by Dijkstra
Multiprocessing Artists
Final Project Proposal (Due July 3)
-- --
-
Final Project Repository Click here and form your team when ready to create your final project
-
Sidequest 4 | Performance Analysis Study
9 Tuesday, July 3, 2018 Lecture 9 - Optimizations and Parallelism with SIMD
Crunching Numbers with AVX
AVX Exercises
-- --
-- --
10 Tuesday, July 10, 2018 Lecture 10 - OpenMP/GPUs
Introduction to CUDA
GPGPU
-- --
-- --
-
Sidequest 5 | GPGPU
11 Tuesday, July 17, 2018 Lecture 11 - Operating Systems and xv6
-- --
Exploring xv6
Memory Allocator 2 (Due July 27 @ 11:59pm)
-- --
12 Tuesday, July 24, 2018 Lecture 12 - Full Project Work Day (Schedulers and Networking)
Final Project Work Day
-- --
-- --
-
Sidequest 6 | Building a Debugger
13 Tuesday, July 31, 2018 Lecture 13 - Quiz
Study Guide
-- --
-- --
-- --
14 Tuesday, Aug. 7, 2018 Lecture 14 - TRACE/Hand Back Exams/Instrumentation/Class Photo
-- --
-- --
Final Project Due Aug. 8 @11:59pm
-- --

Course Description


In short, we will be diving into many low level components of computer systems. This course is heavily project based, meaning we will be working on real world systems. This is also a graduate level course which means we will be reading both current and foundational research papers.

Registrar Description: Studies the structure, components, design, implementation, and internal operation of computer systems, focusing mainly on the operating system level. Reviews computer hardware and architecture including the arithmetic and logic unit, and the control unit. Covers current operating system components and construction techniques including the memory and memory controller, I/O device management, device drivers, memory management, file system structures, and the user interface. Introduces distributed operating systems. 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.

Course Objectives

By the end of this course, you will be ready to:

  • Build and use tools for inspecting and debugging programs at a low level.
  • Be comfortable with concepts like concurrency and parallelism
  • Better understand operating systems
  • Get some experience working on a large scale codebase.
  • Position yourself for jobs as a systems programmer

Resources


There will be no required textbook for this course. However, these resources are recommended.

Igor Zhirkov Book Operating Systems: Three easy pieces

Prerequisites


  • You should have a working knowledge of C/C++.
  • You should have experience working on the terminal in a Unix environment.
  • You should be comfortable using a text editor of your choice
  • You should be willing to work with others, share your thoughts, and ask questions

Additional Course Prerequisites


  • It is possible you have not taken your undergraduate systems course at Northeastern.
    • This course in a sense continues where I leave off in my CS 3650 course regarding the assumed skillset.
    • This means, you will have to work hard. I will support you in learning some C/Assembly, and early lectures will be a refresher
    • You will need to be willing to work hard in this course. Do not skip assignments or procrastinate!
  • You should have basic knowledge in github, using any text-based editor, and how to compile, run, and debug programs.

Academic Integrity and Non-Discrimination


Students and instructors are to follow the Northeastern policies on these important issues.

  • Northeastern Non-Discrimination Policy - This classroom is a safe space for the instructor and students to talk about ideas, share viewpoints, and learn.
  • Northeastern Academic Integrity Policy - You only cheat yourself if you are not honest. Most often cheating occurs when an individual falls behind or perhaps has other circumstances occurring in their life. Please consult the instructor before ever considering cheating.
    • If you are caught cheating I have to report the violation. My official policy is you receive a 0 in the course. Always remember, if you use any external sources, you must cite them.
  • Student Code of Conduct: Students and instructors will follow the following guide for how we conduct ourselves. This is to create a respectful environment where everyone can learn.

Make-Up Policy


Students participating in varsity athletics(this does not include club sports or intramurals) or other University sanctioned events may have the need for a make-up. Please contact me in advance of such events, so that appropriate accommodations can be made.

Occasionally, other life events and circumstances occur that were not planned. If this is the case, please e-mail me privately.

Accessibility


Part of what makes Northeastern University unique, is our diverse cohort of students, faculty, and staff. In order to support this, Northeastern is committed to providing equal access and support to all qualified students through the provision of reasonable accommodations so that each student may fully participate in the University experience. If you have a disability that requires accommodations, please contact the Student Accessibility Services office at DRC@northeastern.edu or (617) 373-2675 to make an appointment with the Disability Resource Center representatives in 20 Dodge Hall to determine appropriate accommodations.

Lateness and Attendance Policy


Students who do well in this course tend to show up to the course consistently, participate, and engage with their peers. Come to class, come on time, and build good habits! In-Class activities that are not attended are a zero.

Assessment/Course Polices


Please find below the grading distribution that will be used for this course. You will find the grade you earn in this course on blackboard.

  • In-Class Activity: (1% each, ~10-12 total)
  • In-Class Labs:     (2% each, ~10-12 total)
  • Exam/Quiz:         (1 total for 20%)
  • Assignments:       (Remaining % / Assignments)
    • Final Project weighted as two assignments

  • The grade system follows the University Grading System.
    • A  = 95 – 100
    • A- = 91 – 94
    • B+ = 87 – 90
    • B  = 83 – 86
    • B- = 80 – 82
    • C+ = 77 – 79
    • C  = 73 – 76
    • D+ = 67 – 69
    • D  = 63 – 66
    • F  =  0 – 62
  • In the event of a sick/snow day (i.e. we miss a lab or in-class activity) the weight of each assignment increases (There may also be shuffling of course material if we are interrupted).
  • The expectation is that the assignments are fair but difficult, so you should start early!
  • Late Submissions of Assignments receive 20% off per day submitted late (up to 3 days max, then 0% received)
  • Assignments that do not compile/open receive no credit Simply put, programs that do not compile do not do anything.
  • There are no "re-grades" or points awarded one week after your grade is posted. "re-grades" can result in a higher or lower score.
  • If you are currently waitlisted, you must submit your homework on time. That is the gamble! If you do not have blackboard access, you will submit by e-mail or other course mechanism.
  • There are no extra credit assignments. I reserve the right to add points to assignments that do go above and beyond however.
  • I reserve the right to modify the grading scale in your favor if you show exemplary proficiency in any of the catagories. I will never modify the scale to lower a students grade.
  • In class work cannot be made up at a later date unless otherwise arranged with the instructor well in advance. Course work completed after the date cannot be graded, as solutions will have been discuseed (this includes if taking this course for an Incomplete).
  • No Facebook, no cell phones. Not only does it distract you, it distracts others!
  • Everyone needs to come see me in office hours (or by appointment) at least one time during the semester to introduce yourself. The purpose is so that you:
    • Know where my office is.
    • Get used to coming to office hours.
    • Let me know how I can help you achieve your goals.