This document provides detailed guidance for specific courses in the OSSU Computer Science curriculum that require additional setup, configuration, or explanation beyond the standard course materials. These guides address courses with unique technical requirements, multiple learning paths, or complex development environments that benefit from supplementary documentation.
For general curriculum information, see OSSU Computer Science Curriculum Overview. For community support resources, see Community and Support.
The OSTEP course offers two distinct learning approaches to accommodate different student goals and commitment levels. This course requires significant C programming knowledge and Unix/Linux system familiarity.
Sources: coursepages/ostep/README.md1-50
The base approach focuses on understanding operating systems concepts through reading and homework exercises. Students work with the ostep-homework repository to complete simulation-based assignments.
System Requirements:
gcc or clang) coursepages/ostep/README.md19Key Resources:
pages.cs.wisc.edu/~remzi/OSTEP/ coursepages/ostep/README.md23remzi-arpacidusseau/ostep-homework coursepages/ostep/README.md25xxyzz/ostep-hw coursepages/ostep/README.md26Students begin with the reverse project from billmei/ostep-projects/tree/billmei/patch-1/initial-reverse as a C programming readiness assessment. coursepages/ostep/README.md37
Sources: coursepages/ostep/README.md12-40
Sources: coursepages/ostep/README.md41-65
The extended approach follows a specific project ordering that differs from the original course structure:
| Phase | Projects | Dependencies |
|---|---|---|
| Setup | initial-utilities, initial-reverse | C proficiency test coursepages/ostep/README.md73 |
| Process Management | processes-shell | Chapters 1-24, Lecture 1-5 coursepages/ostep/Project-2A-processes-shell.md14-15 |
| xv6 Introduction | initial-xv6 | xv6 annotated guide |
| Scheduling | scheduling-xv6-lottery | Discussion 5 |
| Memory Management | vm-xv6-intro | Discussion 7 |
| Concurrency | concurrency-xv6-threads, concurrency-mapreduce | Chapters 25-34 |
| File Systems | filesystems-checker | Chapters 35-47 |
For details, see Operating Systems Course (OSTEP).
Sources: coursepages/ostep/README.md66-85 coursepages/ostep/Project-2A-processes-shell.md1-16
The SPD course focuses on systematic programming methods using the Beginning Student Language (BSL) in the DrRacket IDE.
Sources: coursepages/spd/README.md1-45 coursepages/spd/space-invaders-instructions.md1-3
Primary Course Access:
course-v1:UBCx+SPD1x+2T2015 coursepages/spd/README.md9@systematicprogramdesign7962/playlists coursepages/spd/README.md54Key Repositories:
ossu/spd-starters coursepages/spd/README.md32Critical Configuration Steps:
Language > Choose Language > BSL/ISL coursepages/spd/README.md42true false empty notation coursepages/spd/README.md42Edit > Preferences > Enable automatic parentheses coursepages/spd/README.md46For details, see Systematic Program Design Course.
Sources: coursepages/spd/README.md7-50
These courses provide the entry point into the curriculum.
Sources: coursepages/intro-cs/README.md1-13 coursepages/intro-programming/README.md1-7
Development Environment:
The course recommends the Spyder IDE (version 6.0.8 recommended for Python 3.8 compatibility) coursepages/intro-cs/README.md36-38 If using other editors, use python -i file.py to run statements interactively coursepages/intro-cs/README.md39
Assessment Schedule:
For details, see Introduction to Programming Courses.
Sources: coursepages/intro-cs/README.md1-42
Students choose between CS50P or Python for Everybody.
Focuses on Python fundamentals, unit tests, and regular expressions coursepages/intro-programming/README.md10 Uses the CS50 Codespace for development coursepages/intro-programming/README.md18
Covers data analysis and programming basics coursepages/intro-programming/README.md39 OSSU recommends completing the course through the Regular Expressions lesson coursepages/intro-programming/README.md53
Common Technical Fix: For BeautifulSoup4 compatibility with Python 3.10+:
coursepages/intro-programming/README.md79-84
For details, see Introduction to Programming Courses.
Sources: coursepages/intro-programming/README.md7-87
This course covers Object-Oriented Programming and Java. For details on the lecture schedule, assignment ordering, and known issues with course materials, see Class-Based Program Design Course.
| Course | Primary Language | Development Environment | Key Dependencies |
|---|---|---|---|
| OSTEP Base | C | Unix/Linux + GCC coursepages/ostep/README.md19 | ostep-homework repo coursepages/ostep/README.md25 |
| OSTEP Extended | C + Assembly | Unix/Linux + toolchain coursepages/ostep/README.md19 | xv6-public coursepages/ostep/README.md64 qemu |
| SPD | BSL/Racket | DrRacket IDE coursepages/spd/README.md35 | ossu/spd-starters coursepages/spd/README.md32 |
| MIT 6.100L | Python | Spyder/VS Code coursepages/intro-cs/README.md38-39 | Python 3.8.X coursepages/intro-cs/README.md36 |
| CS50P | Python | CS50 Codespace coursepages/intro-programming/README.md18 | Web browser |
| PY4E | Python | Local Python + IDE coursepages/intro-programming/README.md51 | BeautifulSoup4 fix coursepages/intro-programming/README.md79-84 |
Sources: coursepages/ostep/README.md19-64 coursepages/spd/README.md32-35 coursepages/intro-cs/README.md36-39 coursepages/intro-programming/README.md18-84
Refresh this wiki