mirror of
https://github.com/ossu/computer-science.git
synced 2024-12-27 00:09:32 -05:00
75 lines
2.1 KiB
Markdown
75 lines
2.1 KiB
Markdown
# OSSU-CS Academic Requirements
|
|
|
|
This document contains the subjects (e.g. programming), topics (e.g. imperative programming), and projects the student must master to pass through this curriculum.
|
|
The subject requirements are based on topics, rather than specific courses, because sometimes a certain course isn't available at the right time or doesn't fit the student's learning style.
|
|
|
|
## Subjects
|
|
|
|
### Programming
|
|
|
|
#### Paradigms
|
|
- Imperative programming
|
|
- Procedural programming
|
|
- Object-oriented programming
|
|
- Functional programming
|
|
- Logic programming
|
|
|
|
#### Languages
|
|
- C and/or C-derived languages
|
|
- SQL
|
|
- XML/HTML
|
|
- JavaScript and/or related language
|
|
- An ML-family language
|
|
- A Lisp-family language
|
|
- Python and/or Ruby
|
|
|
|
### Math
|
|
|
|
- Logic and proofs
|
|
- Discrete structures
|
|
- Graph theory
|
|
- Discrete probability
|
|
- Linear algebra
|
|
|
|
### Systems
|
|
|
|
- Memory
|
|
- Caching
|
|
- Virtualization
|
|
- Concurrency
|
|
- Compilers
|
|
- Assembly
|
|
- Networking
|
|
|
|
### Theory
|
|
|
|
- Data structures
|
|
- Sorting
|
|
- Searching
|
|
- Divide and conquer
|
|
- Algorithms on graphs
|
|
- Greedy algorithms
|
|
- Trees
|
|
- P and NP
|
|
|
|
### Applications
|
|
|
|
- Software product management
|
|
- REST
|
|
- Databases
|
|
- Computer graphics
|
|
- Cybersecurity
|
|
- Machine learning
|
|
|
|
## Projects
|
|
|
|
Students are required to complete a project at the end of [Core CS](README.md#core-cs) and at the end of [Advanced CS](README.md#advanced-cs).
|
|
|
|
For Core CS, students have two options:
|
|
- They can use the Capstone course at the end of [Core applications](#core-applications) as their Core CS Project, in which case they are not required to share their project code.
|
|
- They can skip that Capstone project and make their own project, in which case they *are* required to share the project code.
|
|
|
|
For the Advanced CS Project (also known as the Final Project), students again have two options:
|
|
- They can take one of the Specializations under [Advanced applications](#advanced-applications), all of which include Capstone Projects. Students *must* share their project code unless the course's honor code forbids it.
|
|
- They can create their own Final Project, and must share the project code to be evaluated by the community.
|