CSCI 0300 Frequently Asked Questions

We've compiled a list of common questions students ask us about CSCI 0300. If you still have questions, please don't hesitate to reach out to us at cs0300-instructors@brown.edu.

I have a time conflict with another course, can I register in the remote section (S02)?

Our remote section is typically reserved for students taking the course off-campus (e.g., fully-remote master's students, or students studying abroad) and is not designed for students with time conflicts. In rare cases, we can make exceptions for students who have no other option to take the course in another semester. If you would like to discuss this further, please email us at cs300-instructors@brown.edu.

Also, please note that starting in Fall 2025, CSCI 0300/CSCI 1310 will now be offered in both the fall and spring semesters, so there are now more chances to take the course than ever before! If you are excited about CS 300, we highly recommend taking it in a semester when you can attend the lectures in-person, to make sure you can connect with other students and get the most out of the course!


What's the difference between CSCI 0300 and CS 33/CSCI 0330?

CSCI 0300 teaches similar material to CSCI 0330, but spends more time on higher-level systems concepts (e.g., parallel programming, distributed systems) and their application in industry, while CSCI 0330 goes into more depth on low-level concepts (e.g., x86 assembly, call stacks). CSCI 0300 primarily uses C++ (though we cover C), while CSCI 0330 is all in C.

(Please note that you can only get concentration credit for one of CSCI 0300 and 0330.)

The following table provides a rough comparison of course topics and structure.

Key Topics in CSCI 0300
  • Block 1: How a computer works
    • Machine organization
    • Systems programming in C
  • Block 2: Fundamentals of Operating Systems
    • Time sharing, processes (stack/heap)
    • Virtual memory
    • Isolation and virtualization
  • Block 3: Concurrency
    • Multithreading
    • Locking, races, safe patterns
  • Block 4: Distributed systems
    • Networks
    • Scalability
    • Fault tolerance
Key Topics in CS 33
  • Block 1: How a computer works
    • Systems programming in C (Maze)
    • Data Representation (Data)
  • Block 2: Running Programs
    • Assembly (Traps)
    • Stack Layout (Buffer)
    • Processor Architecture (Perf)
  • Block 3: Processes & Memory Management
    • Processes, Signals (Shell 1 and Shell 2)
    • Dynamic memory management (Malloc)
  • Block 4: Networks & Concurrency
    • Networks
    • Locks, races, safe patterns (Databases)

What requirements does CSCI 0300 satify?

CSCI 0300 satisfies the same prerequisites as CS 33 (CSCI 0330) in 2021. Note that CAB and the departmental website do not always reflect this correctly, since they have not been updated everywhere yet. In future years, we expect CAB and the department website to accurately reflect which courses accept CSCI 0300 as a prerequisite.

Please note that you can only receive CS concentration credit for one of CSCI 0300 or CSCI 0330.


How many students can take CSCI 0300?

We should have sufficient resources to allow everyone who wants to take CS 0300 to enroll.


Why do we need a new systems course?

The long-term goal of CSCI 0300 is to reduce the pressure (in terms of student numbers) on CS 33 and offer an alternative approach to learning systems fundamentals.


I hear that CS 0300 was offered as 131/1310 before, and I still see this course number. What is the difference between CS 0300 and 1310?

CSCI 0300 was offered as CSCI 1310 in its first year (spring 2020), prior to receiving the intermediate course designation and course number.

CSCI 1310 still exists, but now serves a different purpose as the masters-level version of 0300. 0300 and 1310 are the same course, but undergraduate students should use CSCI 0300 to enroll, while graduate students should use CSCI 1310 (which includes some extra homeworks).

FAQs for specific to Spring 2021

  1. What prerequisites does CSCI 0300/1310 satisfy?
    Since CSCI 0300/1310 are new, CAB and the department website omit them in many course descriptions and prerequisite lists. CSCI 0300 and CSCI 1310 satisfy all prerequisites that CSCI 0330/1330 satisfy in 2020-21.
  2. What's the difference between CSCI 0300 and 1310?
    CSCI 0300 and 1310 are the same course, but undergraduate students should use CSCI 0300 to enroll, while graduate students should use CSCI 1310 (which includes some extra homeworks).