We will explore many low-level components of computer systems and learn to think like a systems programmer. One of the best ways to learn is by doing. Therefore, 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.
Sections 1 and 3
There are several sections of CS3650 offered in Fall 2026. This website is for sections 1 and 3 taught by Professor Alden Jackson.
By the end of this course, you will:
CS 3650 will follow an in-classroom teaching format.
Please note that by joining the course late, you knowingly accept responsibility for catching up on missed material and should not expect preferential treatment or deadline adjustments [*]. For any assignments due before the add deadline, you will have 5 calendar days from your join date to submit them. For any assignments released on or after the add date, I will not provide additional extensions. If you join late, you will need to work on multiple submissions in parallel. Please stop by my office hours or book an appointment with me, and I will be happy to briefly review your content (provided you review the relevant class notes first) and point you to the right resources. TA office hours will prioritize assignment-related questions over content review for late joiners.
[*] If you are an international student whose visa process was delayed due to recent events, please follow University guidance closely. Note that certain interactions with course material (such as submitting any assignments/quizzes on Canvas) prior to your arrival in Boston may constitute a violation of your visa status.
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 substitute for attending class.
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 issue, post to Piazza before writing an email to the TAs or instructor(s).
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.
You should complete the assigned reading before class.
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.
However, these resources are recommended:
This is a course about designing and writing code. Therefore, a significant part 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.
20% homework exercises & quizzes (approx. 10)
50% programming assignments
30% exams (2)
Gradescope contains the evaluations of your work. It does not contain any late penalties. We use Canvas to keep track of the individual components (assignments, projects, quizzes, labs, …) including late penalties. However, publishing this data to Canvas is delayed from when it is published in Gradescope. You are responsible for calculating and keeping track of your own overall grade. Tip: Use a spreadsheet or, even better, write a program to do that for you!
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; any fraction in the final sum is rounded up to the next integer) 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.
After grades have been posted, there is a 3 day window to request a regrade from the TA. Regrade requests are made on Gradescope. If you have further issues with the TA’s regrade, you may challenge the regrade with a professor.
We will use the Coaches Challenge to handle instructor regrade challenges. Each student is allotted two (2) TA regrade 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.
The purpose of a regrade request is to amend a mistake made by a human or automated grader. Be respectful, to the point, and keep in mind that the structure of a rubric is at the sole discretion of the instructor. A grade is a measure of the quality of the work you submitted and the rubric. It might not always reflect what you know about the subject or the relative importance of elements within the subject.
As this is an applied course, there will be approximately 8 programming assignments and two project assignments throughout the semester. Generally, they will be due at 10 PM on the specified date. You will submit a compressed archive of the project files to Gradescope for grading. Assignments and, in particular, projects require significant design and development; hence we strongly recommend that students start early!
Our goal is to teach you fundamental knowledge about computer architecture and systems and offer you challenging-but-fun projects that will build your skills. Unfortunately, the latest educational research has found that students early in foundational courses who use AI tools to complete assignments do not learn the material. Thus, unless explicitly specified, the use of LLMs, chatbots, AI agents, etc. to complete homework assignments or projects is prohibited in this course.
The first 4 assignments (Assignment 1 through 4) are to be completed individually (“solo assignments”). The remaining assignments and projects can be optionally completed in groups. You will be responsible for selecting a partner to complete the assignments. Once you select a partner, you will have to let us know who the team members are through a method we will determine when the time comes. If you wish to dissolve your partnership, you will have to let us know as well.
Both partners need to be identified when an assignment is submitted to Gradescope. This is your responsibility. Students who worked alone do not identify a partner when submitting.
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. Both partners assume full responsibility for submitted work, regardless of the division of labor.
Any item submitted late will receive a 50% penalty for each day late.
All exams and quizzes will have a single makeup scheduled. The makeup is not an opportunity to take the exam or quiz twice. Only the grade from the first occurrence will be recorded.
However, we recognize that unplanned life events and circumstances do occur, especially in our current circumstances. To address this, we provide a total of 6 slip days for programming assignments and projects only. You may use slip days on any assignment or project (not labs, homework, exercises, or quizzes) during the semester in increments of one day.
For example, you may use 2 slip days on Assignment 2, 3 slip days on Project 1, and 1 slip day for Assignment 6. Or you can choose to save up your slip days and use 5 on Project 1. Or you can use 1 on Assignment 3, 1 on Assignment 4, 2 on Project 1. You do not need to ask permission before using slip days; simply turn in your assignment late. Slip days are allocated in date order, i.e., you can not request that an earlier be considered late to permit slip days to be used for a later assignment.
For groups, 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 its members’ slip days remaining.
The grading scripts on Gradescope do 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 programming assignments. For logistical reasons, you might not be able to use any for the last project of the semester. If you have any questions about this system, ask.
Students participating in varsity athletics (this does not include club or intramural activities) 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.
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 be 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 severe consequences. Part of the learning process in this course is the respectful engagement of ideas with others.
Using a digital device in the classroom for an unapproved activity is prohibited. Not only does it distract you, but it also distracts others.
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 Access Services at 20 Dodge Hall or call (617) 373-2675. If you have already done so, please confirm that your letter has been sent by the DRC to your professor early in the semester so that we can arrange those accommodations.
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 (http://www.northeastern.edu/uhcs/) and the Center for Spiritual Dialogue and Service clergy members (http://www.northeastern.edu/spirituallife/). 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 titleix@northeastern.edu 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 http://www.northeastern.edu/titleix for a complete list of reporting options and resources both on- and off-campus.
Students and all instructors are to follow the Northeastern policies on these important issues.
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! Whether or not we believe there is copied code in your work, you can be asked to describe how it works in detail.
Both partners assume full responsibility for any code submitted as a group: if a team submission violates academic integrity, both partners may be referred to OSCCR.
You are responsible for keeping your code hidden from all other
students. If you keep your local repository on our Khoury servers,
ensure it is read-protected (chmod 600). Leaving it group
(_4_) or world (__4) readable means anyone can
steal your work. Your home directory includes, by default, a directory
called classes that only you can read. Put all your classwork
there.
Make your repositories private if you plan to use GitHub, GitLab, or the campus GitHub instance. If you put class material in an unprotected directory or repository and somebody else copies it, you will be subject to the discipline policy as though you knowingly shared your code.