OSSU-computer-science/REQUIREMENTS.md

74 lines
2.1 KiB
Markdown
Raw Normal View History

2017-03-05 16:42:45 -05:00
# OSSU Academic Requirements
2017-03-09 22:13:01 -05:00
This document contains the subjects (e.g. programming), topics (e.g. imperative programming), and projects the student must master to pass through this curriculum.
2017-03-09 21:27:52 -05:00
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 langauge
- 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
2017-03-09 21:42:27 -05:00
- 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.