⚠️ This is not the current iteration of the course! Head here for the current offering.

Course Details

Course Description

CSCI 0300 covers fundamental concepts, principles, and abstractions that underlie the design and engineering of computer systems. You will learn how a computer works, how to write safe and performant systems software, and what systems abstractions support today's complex, high-performance systems developed in industry. Specific topics include machine organization, systems programming and performance, key concepts of operating systems, isolation, security, virtualization, concurrent programming, and the basics of distributed systems.

The course format is a combination of lectures, labs, and several hands-on projects involving programming exercises in C/C++.


CSCI 0200 or CSCI 0160 or CSCI 0180 or CSCI 0190, or permission of the instructor.

Time Commitment

In addition to three hours per week in class, you will spend three hours per week doing labs or attending section and 8–15 hours per week on projects. The project times will vary: systems programming comes with bugs that sometimes are time-consuming to find. In general, earlier assignments will take less time than later ones.


Projects are due at 6pm (5:59:59pm Eastern time) on the Friday due date. There will be five projects handed out at two to three week intervals. We encourage collaboration among students (subject to the collaboration policy below), but all assignments will be graded based on individual solutions.

Post-lecture quizzes are due at 11:59pm Eastern time the day before the next lecture (i.e., Monday for a Tuesday lecture; Wednesday for a Thursday lecture). Owing to the small amount of credit they contribute individually, there will be no late submission. If you do encounter particular, unexpected hardships however, contact the course staff.

Lab checkoffs are due on Tuesdays at 8pm. You should complete the full lab assignment, and you will receive credit if your solution passes the tests; if it does not, but you demonstrate that you have made a reasonable effort, you will get partial credit. There is no late submission for labs, and you cannot use late hours on them. We will discard one (your lowest) lab grade, and all others will count.


Grading breakdown:

  1. Projects: 48%;
  2. Labs: 10%;
  3. Mid-term: 13%;
  4. Final exam: 16%;
  5. Post-lecture quizzes: 10%;
  6. SRC project: 3%.


CSCI 0300 projects require every student to turn in a separate code repository that contains their own code. Learning benefits from discussion, so you are welcome to discuss approaches and solution ideas with your classmates, but you must write your own solution code and answers to conceptual questions. Here's what that means and why we're doing it this way.

Collaboration is an important part of both CSCI 0300 and real-world software engineering. Talking through your code with other students leads to less stress and loneliness and to easier debugging.

But collaboration can hurt your learning, too. We want every student to have worked on every project, and to have encountered the intellectual challenges it poses. Simply asking your classmates to show you their solution and copying it hurts your learning, and constitutes academically dishonest behavior (i.e., plagiarism).

We seek a middle ground in which you don't feel isolated and form productive collaborations with your classmates, but still reason through your own code. We therefore ask every student to hand in separate code for each project. You may discuss this code with classmates and help your friends debug, but every piece of code you submit must be written by you and you must not submit wholly identical solutions. A good way to ensure this is for you to type in your solutions individually, even if you are discussing your approach with your friends and you help each other debug.

Collaboration is encouraged on all aspects of the course except exams. You are welcome to communicate with your classmates about strategies for solutions and about specific bugs, and you are welcome to use Internet resources for general information. However:

Diversity and Inclusion

CSCI 0300 welcomes a diversity of thoughts, perspectives, and experiences, and seeks to avoid stereotypes. The class staff respects students' identities, including but not limited to race, gender, class, sexuality, socioeconomic status, religion, and ability, and we strive to create a learning environment where every student feels welcome and valued. We can only accomplish this goal with your help. If something is said in class or at TA hours (by anyone) or you come across instructional material that made you uncomfortable, please talk to the instructor about it or fill in this anonymous form.

Late Policy

Each student has 144 total late hours for projects. These hours are designed to help you cope with unexpected emergencies, and only apply to project submissions. In other words, you can hand in your projects late, but the total amount of lateness summed over all the deadlines must not exceed 144 hours. For the purpose of calculating late hours, we exclude hours between midnight and 7am. This means that you can get a good night's sleep before you continue working on your assignment without losing extra late hours while you sleep.

If you don't hand in an assignment by the last day of classes, we'll give the assignment a zero (i.e., no credit whatsoever). However, if you hand an assignment in late, and your total late time (including the late time for that assignment) exceeds 144 hours, and you hand it in by the last day of classes, then we'll give it a D or an F depending on whether it seems to basically work. Therefore, it's better to complete and hand in a project even if you have already used your late hours.

You can divide up your 144 hours among the projects however you like; you don't have to ask or tell us, but you cannot use more than 72 hours per project. Finally, can only use the 144 hours for the projects, and not for post-lecture quizzes or labs. If you want an exception to these rules, you will need a Dean's note.

Finally, if you find yourself struggling, please contact the instructors as soon as you feel able; and if you have a health condition that affects your learning or classroom experience, please contact us so we can seek accommodations. We do not generally make exceptions to the late policy, but we work hard to help all our students complete the course without overwhelming stress.


Brown University is committed to full inclusion of all students. Please inform the instructor if you have a disability or other condition that might require accommodations or modification of any of these course procedures. You may email the instructor, come to office hours, or speak with the instructor after class, and your confidentiality is respected. We will do whatever we can to support accommodations recommended by SEAS. For more information contact Student and Employee Accessibility Services (SEAS) at 401-863-9588 or SEAS@brown.edu.

Mental Health

Being a student can be very stressful. If you feel you are under too much pressure or there are psychological issues that are keeping you from performing well at Brown, we encourage you to contact Brown’s Counseling and Psychological Services (CAPS). They provide confidential counseling and can provide notes supporting extensions on assignment for health reasons.

Incomplete Policy

We expect everyone to complete the course on time. However, we certainly understand that there may be factors beyond your control, such as health problems and family crises, that prevent you from finishing the course on time. If you feel you cannot complete the course on time, please discuss with the instructor the possibility of being given a grade of Incomplete for the course and setting a schedule for completing the course in the upcoming year.

Thanks to Robert Morris, Eddie Kohler, James Tompkin, and Tom Doeppner for providing policy text that we have adapted for CSCI 0300.