CS 131 Frequently Asked Questions

CS 131 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 cs1310headtas@lists.brown.edu.


What's the difference between CS 33 and CS 131?
Key Topics in CS 131
  • 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)

Why is the course number so high if it's an introductory course (CS 131 instead of CS31)?

Don't be fooled – CS 131 is an introductory course, and it has the same prerequisites at CS 33. The primary reason it has a larger course code is that new courses often start out as higher-level CS courses, and receive a lower number once they become established.


What requirements does CS 131 satify, and why should I take it?

Even though CS 131 only assumes students have completed the intro sequence, for Spring 2020, CS 131 will count as a 1000-level CS class, but satisfy no intermediate course prerequisites. However, students may use CS 131 as a related course (not a core course) in the systems pathway. Additionally, some upper-level courses will accept CS 131 as a prerequisite; in particular, CS127/CSCI1270 (Database Systems), CS138/CSCI1380 (Distributed Systems), CS165/CSCI1650 (Software Security and Exploitation), CS166/CSCI1660 (Computer Systems Security), CSCI 1730 (Programming Languages), CSCI 1951A (Data Science), CSCI 1680 (Computer Networks), and CSCI 2390 (Privacy-Conscious Computer Systems) will allow CS 131 as an alternative prerequisite to CS 33. This list may change for future offerings, but is current for Spring 2020.

Some material in CS 131 overlaps with CS 33/32, and taking CS 131 will make subsequently taking 33/32 easier. Likewise, students who have already taken CS 33/32 will have an easier time in CS 131, but will also learn substantial new material not covered in CS 33 or 32! Check out this link for more on why you should take CS131!


How many students can take CS 131?

We have been able to secure sufficient resources to allow everyone to enroll in CS 131 who wants to!


Why do we need a new systems course?

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