Course Goals

We will be exploring many low-level components of computer systems and learning to think like a systems programmer. One of the best ways to learn is by doing. Thus, this course is very applied, and we will be writing a significant amount of code this term.

Registrar Description: 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, inter-process communication, deadlock, memory management, file systems, and input/output control.

Which Section of 3650 Is This?

All sections: 1, 2, 3. 

If you are taking CS3650 in Spring 2022, you’ve come to the right place. There are three sections of CS 3650 being offered in Spring 2022: one taught by Prof. Alden Jackson and two taught by Prof. Ferdinand Vesely. All three sections share the same content, assignments, and staff.

Course Objectives

By the end of this course, you will:

  • Have a working knowledge of C
  • Be comfortable working at the terminal prompt in a Unix environment
  • Build and use tools for inspecting and debugging programs at a low level
  • Be comfortable with concepts like concurrency and parallelism
  • Have a better understanding of the basics and internals of operating systems
  • Gain some experience working on a large scale codebase
  • Position yourself for jobs as a systems programmer

Course Prerequisites

  • CS 1500, CS 2510
  • You should be willing to work with others, share your thoughts, and ask questions
  • You should be comfortable using a command line text editor of your choice, e.g., vim, emacs, …
  • You should have basic knowledge of git and GitHub, and know how to compile, run, and debug programs at the command line prompt. Resist the urge to use an IDE. Working at the command line is a critical skill learned in this course. 


CS 3650 will be following an in-classroom teaching format.


Parts of this course may be recorded for educational purposes.  These recordings will be made available only to students enrolled in the course, the instructors, and teaching assistants assigned to the course. Do not rely on recordings as a substitution for attending class. 

Only students who have arranged an accommodation with the Disability Resource Center may use mechanical or electronic transcribing, recording, or communication devices in the classroom. Students who believe they may need such an accommodation may contact the Disabilities Resource Center.

Class Forum

The class forum is on Piazza (see Canvas for the link).

Why Piazza? Because they have a nice web interface as well as iPhone and Android apps. Piazza is the best place to ask questions about projects, programming, debugging issues, etc. To keep things organized, please tag all posts with the appropriate hashtags, e.g. #lecture1, #project3, etc. We will also use Piazza to broadcast announcements to the class. Bottom line: unless you have a private problem, post to Piazza before writing an email to the TAs or instructors.

A Note on Piazza

The Piazza forum is meant for discussion related to the topics of this course and to exchange knowledge. While we welcome debates about the course structure, the whys and why nots, or other general topics, we reserve the right to change the visibility of posts we think do not contribute to the learning aims of this course. You are most welcome to talk to us about any topic directly – after class, in office hours, or in an ad-hoc/scheduled meeting.

Reading Materials

There are two main textbooks for this course. We prefer the first one for its coverage of Assembly and C programming, while the second covers operating system concepts, APIs, and implementation techniques. Both textbooks are available for free online.

  1. (free) Dive into Systems
  2. (free) Operating Systems: Three Easy Pieces (aka OSTEP)

However, these resources are recommended:

Requests for Regrading

After grades have been posted, there is a 3 day window to request a regrade from the TA.
If you have further issues with TA’s regrade, you may challenge the regrade.

We will use the Coaches Challenge to handle instructor regrade challenges. Each student is allotted two (2) challenges each semester. If you want an assignment to be regraded, you must come to your professor’s office hours and make a formal challenge specifying (a) the problem or problems you want to be regraded, and (b) for each of these problems, why you think the problem was misgraded. If it turns out that there has been an error in grading, the grade will be corrected, and you get to keep your challenge. However, if the original grade was correct, then you permanently lose your challenge. Once your two challenges are exhausted, you will not be able to challenge regrades. You may not challenge the use of slip days or any points lost due to lateness.

Make-Up Policy

Any item handed in late will receive a 50% penalty for each day late.

However, we recognize that unplanned life events and circumstances do occur, especially in our current circumstances.  To address this, we have added 5 slip days to the course for projects. You may use the slip days on any major coding project (not labs) during the semester in increments of one day. For example, you can hand in one project five days late, or one project one day late, and two projects two days late. You do not need to ask permission before using slip days; simply turn in your assignment late.  Slip days will be deducted from each group member’s remaining slip days. Keep this stipulation in mind: a group’s slip days remaining is the minimum of it’s members’ slip days remaining.

The grading scripts will NOT automatically tabulate any slip days you have used. This is a manual process. You need to keep track of your slip days. Slip days only apply to Assignments. For logistical reasons, you might not be able to use more than one or two slips days for the last assignment of the semester.

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 or extension. Please contact us in advance of such events, so that appropriate accommodation can be made.


As this is an applied course, there will be approximately 12 programming assignments throughout the semester. Generally, they will be due at 10pm on the specified date. You will submit a compressed archive of the project files to Gradescope for grading. These projects require significant design and coding, hence we strongly recommend that students start early!

Project Groups

Most of the assignments will be completed in groups.  You will be responsible for selecting a partner to complete these projects.  The partner is identified when a project is submitted to Gradescope. Students who worked alone do not identify a partner when submitting a project.

All group members should be involved in all major design decisions, and groups should develop a programming plan that can be effectively parallelized. The course projects are hard, so you will want to distribute work between yourself and your teammate.  The division of work is required to be turned in with every project. 


This is a course about designing and writing code. Therefore, most of your evaluation will be on the quality of the code you produce and its correctness.

The grading distribution used for this course is below. You will find the grade you earn in this course in Canvas.

  • 15% in-class activities (approx. 10)

  • 15% labs (approx. 10)

  • 70% assignments (approx. 12)

All fractions in the final grade will be rounded up.

To calculate final grades, we simply sum up the points obtained by each student (the points will sum up to some number x out of 100, rounded up for fractions) and then use the following scale to determine the letter grade:

Numeric Grade Letter Grade
[0-59] F
[60-62] D-
[63-66] D
[67-69] D+
[70-72] C-
[73-76] C
[77-79] C+
[80-82] B-
[83-86] B
[87-89] B+
[90-92] A-
[93-100] A

We do not curve the grades in any way.

Classroom Environment

To create and preserve a classroom atmosphere that optimizes teaching and learning, all participants share responsibility in creating a civil and non-disruptive forum for the discussion of ideas. Students are expected to conduct themselves at all times in a manner that does not disrupt teaching or learning. Your comments to others should be constructive and free from harassing statements. You are encouraged to disagree with other students and the instructor, but such disagreements need to respectful and be based upon facts and documentation (rather than prejudices and personalities). The instructor reserves the right to interrupt conversations that deviate from these expectations. Repeated unprofessional or disrespectful conduct may result in a lower grade or more severe consequences. Part of the learning process in this course is the respectful engagement of ideas with others.

No social media or use of streaming services in the classroom. Not only does it distract you, but it also distracts others.

Title IX

Title IX of the Education Amendments of 1972 protects individuals from sex or gender-based discrimination, including discrimination based on gender-identity, in educational programs and activities that receive federal financial assistance.

Northeastern’s Title IX Policy prohibits Prohibited Offenses, which are defined as sexual harassment, sexual assault, relationship or domestic violence, and stalking. The Title IX Policy applies to the entire community, including male, female, transgender students, faculty and staff.

If you or someone you know has been a survivor of a Prohibited Offense, confidential support and guidance can be found through University Health and Counseling Services staff ( and the Center for Spiritual Dialogue and Service clergy members ( By law, those employees are not required to report allegations of sex or gender-based discrimination to the University.

Alleged violations can be reported non-confidentially to the Title IX Coordinator within The Office for Gender Equity and Compliance at  and/or through NUPD (Emergency 617.373.3333; Non-Emergency 617.373.2121). Reporting Prohibited Offenses to NUPD does NOT commit the victim/affected party to future legal action.

Faculty members are considered "responsible employees" at Northeastern University, meaning they are required to report all allegations of sex or gender-based discrimination to the Title IX Coordinator.

In case of an emergency, please call 911.

Please visit for a complete list of reporting options and resources both on- and off-campus.


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. Students who wish to receive academic services and/or accommodations should visit the Disability Resource Center at 20 Dodge Hall or call (617) 373-2675. If you have already done so, please provide your letter from the DRC to your professor early in the semester so that we can arrange those accommodations.

Academic Integrity And Non-Discrimination

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

  • Northeastern Equal Opportunity Policy - Our classroom (physical or virtual) is a safe space for the instructor and students to talk about ideas, share viewpoints, and learn.
  • Student Code of Conduct: Students and instructors will use this guide for how we conduct ourselves. Together, we strive to create a respectful environment where everyone can 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 am required to report the violation, and you will receive a 0 for the assignment.
    • Always remember, if you use any external sources, you must cite them, no matter how small or insignificant it may seem.
    • While students are encouraged to discuss course materials, no plagiarism/copying is allowed on assignments or labs. In particular:
      • You may not copy anyone else's code under any circumstances.
      • You may not permit any other student to see any part of your program, except when seeking assistance in debugging.
      • You may not permit yourself to see any part of another student's program, except when providing assistance in debugging.
      • You may not post a public question to Piazza that contains any part of your code.

This class has very strict standards for borrowing code: You may not use other students' code. Unless otherwise specified, you may not copy code from online resources.  If you borrow concepts for use in your work from a textbook or an online source, you must have a citation. A URL or a notation (e.g., "MATLAB help files") is fine. If you have a question about what is considered a violation of this policy, ASK!  If we believe there is copied code in your work, you will be asked to describe how it works in detail.