CSCI 0300 Frequently Asked Questions

CSCI 0300 is a new course, so you're bound to have many questions. As such, we've compiled a list of questions we've been getting a lot. If you still have questions, please don't hesitate to reach out to us at cs0300headtas@lists.brown.edu.

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).
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).