mirror of
https://github.com/ossu/computer-science.git
synced 2024-10-01 01:26:01 -04:00
Merge branch 'master' of github.com:open-source-society/computer-science
This commit is contained in:
commit
4399f8c62f
@ -6,6 +6,11 @@ This project adheres *in spirit* to [Semantic Versioning](http://semver.org/):
|
||||
- "MINOR" updates correspond to changing courses without changing the topics
|
||||
- "PATCH" updates correspond to aesthetic and non-essential additions/removals or changing order of classes for better progression
|
||||
|
||||
|
||||
## [7.1.1] 2017-04-11
|
||||
### Updated
|
||||
- Final touch to release
|
||||
|
||||
## [7.1.0] 2017-04-10
|
||||
### Updated
|
||||
- Reverted reformat of programming languages course
|
||||
|
145
PROJECTS.md
145
PROJECTS.md
@ -1,156 +1,37 @@
|
||||
# Projects
|
||||
|
||||
>Here, we are providing a list curated by the community of exercices and projects to practice and reinforce the skills we try to master.
|
||||
> Here, we are providing a list curated by the community of exercises and projects to practice and reinforce the skills we try to master.
|
||||
|
||||
Projects created by OSSU's students for each course of our [**Computer Science**](https://github.com/open-source-society/computer-science) curriculum.
|
||||
|
||||
### Introduction to Computer Science
|
||||
- [Introduction to Computer Science](#introduction-to-computer-science)
|
||||
- [Programming](#programming)
|
||||
- [Math](#math)
|
||||
- [Systems](#systems)
|
||||
- [Theory](#theory)
|
||||
- [Applications](#applications)
|
||||
|
||||
## Introduction to Computer Science
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
Binary Machine | Convert decimal numbers to binary | [Eric Douglas](https://github.com/ericdouglas) | [binary-machine](https://github.com/ericdouglas/binary-machine)
|
||||
|
||||
### Math (Mathematical Thinking)
|
||||
|
||||
## Programming
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Program Design
|
||||
|
||||
## Math
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Math (Calculus and Discrete Math)
|
||||
|
||||
## Systems
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Algorithms
|
||||
|
||||
## Theory
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Programming Paradigms
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Software Testing
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Math (Calculus)
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Software Architecture
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Theory
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Software Engineering
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Math (Probability)
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Computer Architecture
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Operating Systems
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Computer Networks
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Databases
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Cloud Computing
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Math (Linear Algebra)
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Cryptography
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Security
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Compilers
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Parallel Computing
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### UX Design
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Computer Graphics
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Artificial Intelligence
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Machine Learning
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Natural Language Processing
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Big Data
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Data Mining
|
||||
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
||||
### Internet of Things
|
||||
|
||||
## Application
|
||||
Project Title | Description | Author(s) | Repository
|
||||
:-- | :-- | :--: | :--
|
||||
|
257
README.md
257
README.md
@ -18,7 +18,7 @@
|
||||
- [Summary](#summary)
|
||||
- [Curriculum](#curriculum)
|
||||
- [Prerequisites](#prerequisites)
|
||||
- [Intro CS](#intro-cs)
|
||||
- [Introduction to Computer Science](#introduction-to-computer-science)
|
||||
- [Core CS](#core-cs)
|
||||
- [Advanced CS](#advanced-cs)
|
||||
- [Final project](#final-project)
|
||||
@ -77,10 +77,10 @@ just remember that you can't purchase success!
|
||||
|
||||
# Curriculum
|
||||
|
||||
**Curriculum version**: `7.1.0` (see [CHANGELOG](CHANGELOG.md))
|
||||
**Curriculum version**: `7.1.1` (see [CHANGELOG](CHANGELOG.md))
|
||||
|
||||
- [Prerequisites](#prerequisites)
|
||||
- [Intro CS](#intro-cs)
|
||||
- [Introduction to Computer Science](#introduction-to-computer-science)
|
||||
- [Core CS](#core-cs)
|
||||
- [Core programming](#core-programming)
|
||||
- [Core math](#core-math)
|
||||
@ -106,21 +106,21 @@ Some high school graduates will have already taken AP Calculus, but this is usua
|
||||
and is knowledgeable enough now to decide which electives to take.
|
||||
- Note that [Advanced systems](#advanced-systems) assumes the student has taken a basic physics course (e.g. AP Physics in high school).
|
||||
|
||||
## Intro CS
|
||||
## Introduction to Computer Science
|
||||
|
||||
These courses will introduce you to the world of computer science.
|
||||
Both are required, but feel free to skip straight to the second course when CS50 (the first course) moves away from C.
|
||||
|
||||
**Topics covered**:
|
||||
imperative programming;
|
||||
procedural programming;
|
||||
C;
|
||||
manual memory management;
|
||||
basic data structures and algorithms;
|
||||
Python;
|
||||
SQL;
|
||||
basic HTML, CSS, JavaScript;
|
||||
and more.
|
||||
`imperative programming`
|
||||
`procedural programming`
|
||||
`C`
|
||||
`manual memory management`
|
||||
`basic data structures and algorithms`
|
||||
`Python`
|
||||
`SQL`
|
||||
`basic HTML, CSS, JavaScript`
|
||||
`and more`
|
||||
|
||||
Courses | Duration | Effort | Prerequisites
|
||||
:-- | :--: | :--: | :--:
|
||||
@ -133,19 +133,19 @@ All coursework under Core CS is **required**, unless otherwise indicated.
|
||||
|
||||
### Core programming
|
||||
**Topics covered**:
|
||||
functional programming;
|
||||
design for testing;
|
||||
program requirements;
|
||||
common design patterns;
|
||||
unit testing;
|
||||
object-oriented design;
|
||||
Java;
|
||||
static typing;
|
||||
dynamic typing;
|
||||
ML-family languages (via Standard ML);
|
||||
Lisp-family languages (via Racket);
|
||||
Ruby;
|
||||
and more.
|
||||
`functional programming`
|
||||
`design for testing`
|
||||
`program requirements`
|
||||
`common design patterns`
|
||||
`unit testing`
|
||||
`object-oriented design`
|
||||
`Java`
|
||||
`static typing`
|
||||
`dynamic typing`
|
||||
`ML-family languages (via Standard ML)`
|
||||
`Lisp-family languages (via Racket)`
|
||||
`Ruby`
|
||||
`and more`
|
||||
|
||||
Courses | Duration | Effort | Prerequisites
|
||||
:-- | :--: | :--: | :--:
|
||||
@ -164,21 +164,21 @@ Courses | Duration | Effort | Prerequisites
|
||||
### Core math
|
||||
|
||||
**Topics covered**:
|
||||
linear transformations;
|
||||
matrices;
|
||||
vectors;
|
||||
`linear transformations`
|
||||
`matrices`
|
||||
`vectors`
|
||||
mathematical proofs;
|
||||
number theory;
|
||||
differential calculus;
|
||||
integral calculus;
|
||||
sequences and series;
|
||||
discrete mathematics;
|
||||
basic statistics;
|
||||
O-notation;
|
||||
graph theory;
|
||||
vector calculus;
|
||||
discrete probability;
|
||||
and more.
|
||||
`number theory`
|
||||
`differential calculus`
|
||||
`integral calculus`
|
||||
`sequences and series`
|
||||
`discrete mathematics`
|
||||
`basic statistics`
|
||||
`O-notation`
|
||||
`graph theory`
|
||||
`vector calculus`
|
||||
`discrete probability`
|
||||
`and more`
|
||||
|
||||
Courses | Duration | Effort | Prerequisites
|
||||
:-- | :--: | :--: | :--:
|
||||
@ -196,19 +196,19 @@ for how to progress through the course.
|
||||
### Core systems
|
||||
|
||||
**Topics covered**:
|
||||
boolean algebra;
|
||||
gate logic;
|
||||
memory;
|
||||
machine language;
|
||||
computer architecture;
|
||||
assembly;
|
||||
machine language;
|
||||
virtual machines;
|
||||
high-level languages;
|
||||
compilers;
|
||||
operating systems;
|
||||
network protocols;
|
||||
and more.
|
||||
`boolean algebra`
|
||||
`gate logic`
|
||||
`memory`
|
||||
`machine language`
|
||||
`computer architecture`
|
||||
`assembly`
|
||||
`machine language`
|
||||
`virtual machines`
|
||||
`high-level languages`
|
||||
`compilers`
|
||||
`operating systems`
|
||||
`network protocols`
|
||||
`and more`
|
||||
|
||||
Courses | Duration | Effort | Prerequisites
|
||||
:-- | :--: | :--: | :--:
|
||||
@ -222,17 +222,17 @@ Courses | Duration | Effort | Prerequisites
|
||||
### Core theory
|
||||
|
||||
**Topics covered**:
|
||||
divide and conquer;
|
||||
sorting and searching;
|
||||
randomized algorithms;
|
||||
graph search;
|
||||
shortest paths;
|
||||
data structures;
|
||||
greedy algorithms;
|
||||
minimum spanning trees;
|
||||
dynamic programming;
|
||||
NP-completeness;
|
||||
and more.
|
||||
`divide and conquer`
|
||||
`sorting and searching`
|
||||
`randomized algorithms`
|
||||
`graph search`
|
||||
`shortest paths`
|
||||
`data structures`
|
||||
`greedy algorithms`
|
||||
`minimum spanning trees`
|
||||
`dynamic programming`
|
||||
`NP-completeness`
|
||||
`and more`
|
||||
|
||||
Courses | Duration | Effort | Prerequisites
|
||||
:-- | :--: | :--: | :--:
|
||||
@ -244,22 +244,22 @@ Courses | Duration | Effort | Prerequisites
|
||||
### Core applications
|
||||
|
||||
**Topics covered**:
|
||||
Agile methodology;
|
||||
REST;
|
||||
software specifications;
|
||||
refactoring;
|
||||
relational databases;
|
||||
transaction processing;
|
||||
data modeling;
|
||||
neural networks;
|
||||
supervised learning;
|
||||
unsupervised learning;
|
||||
OpenGL;
|
||||
raytracing;
|
||||
block ciphers;
|
||||
authentication;
|
||||
public key encryption;
|
||||
and more.
|
||||
`Agile methodology`
|
||||
`REST`
|
||||
`software specifications`
|
||||
`refactoring`
|
||||
`relational databases`
|
||||
`transaction processing`
|
||||
`data modeling`
|
||||
`neural networks`
|
||||
`supervised learning`
|
||||
`unsupervised learning`
|
||||
`OpenGL`
|
||||
`raytracing`
|
||||
`block ciphers`
|
||||
`authentication`
|
||||
`public key encryption`
|
||||
`and more`
|
||||
|
||||
Courses | Duration | Effort | Prerequisites
|
||||
:-- | :--: | :--: | :--:
|
||||
@ -283,15 +283,15 @@ If not, or if a student chooses not to take the Capstone, then a separate Final
|
||||
### Advanced programming
|
||||
|
||||
**Topics covered**:
|
||||
debugging theory and practice;
|
||||
goal-oriented programming;
|
||||
GPU programming;
|
||||
CUDA;
|
||||
parallel computing;
|
||||
object-oriented analysis and design;
|
||||
UML;
|
||||
large-scale software architecture and design;
|
||||
and more.
|
||||
`debugging theory and practice`
|
||||
`goal-oriented programming`
|
||||
`GPU programming`
|
||||
`CUDA`
|
||||
`parallel computing`
|
||||
`object-oriented analysis and design`
|
||||
`UML`
|
||||
`large-scale software architecture and design`
|
||||
`and more`
|
||||
|
||||
Courses | Duration | Effort | Prerequisites
|
||||
:-- | :--: | :--: | :--:
|
||||
@ -304,11 +304,11 @@ Courses | Duration | Effort | Prerequisites
|
||||
### Advanced math
|
||||
|
||||
**Topics covered**:
|
||||
real analysis;
|
||||
multivariable integrals;
|
||||
multivariable differentials;
|
||||
probability theory;
|
||||
and more.
|
||||
`real analysis`
|
||||
`multivariable integrals`
|
||||
`multivariable differentials`
|
||||
`probability theory`
|
||||
`and more`
|
||||
|
||||
Courses | Duration | Effort | Prerequisites
|
||||
:-- | :--: | :--: | :--:
|
||||
@ -319,20 +319,20 @@ Courses | Duration | Effort | Prerequisites
|
||||
### Advanced systems
|
||||
|
||||
**Topics covered**:
|
||||
digital signaling;
|
||||
combinational logic;
|
||||
CMOS technologies;
|
||||
sequential logic;
|
||||
finite state machines;
|
||||
processor instruction sets;
|
||||
caches;
|
||||
pipelining;
|
||||
virtualization;
|
||||
parallel processing;
|
||||
virtual memory;
|
||||
synchronization primitives;
|
||||
system call interface;
|
||||
and more.
|
||||
`digital signaling`
|
||||
`combinational logic`
|
||||
`CMOS technologies`
|
||||
`sequential logic`
|
||||
`finite state machines`
|
||||
`processor instruction sets`
|
||||
`caches`
|
||||
`pipelining`
|
||||
`virtualization`
|
||||
`parallel processing`
|
||||
`virtual memory`
|
||||
`synchronization primitives`
|
||||
`system call interface`
|
||||
`and more`
|
||||
|
||||
Courses | Duration | Effort | Prerequisites
|
||||
:-- | :--: | :--: | :--:
|
||||
@ -351,21 +351,21 @@ if you are struggling, you can find a physics MOOC or utilize the materials from
|
||||
### Advanced theory
|
||||
|
||||
**Topics covered**:
|
||||
formal languages;
|
||||
Turing machines;
|
||||
computability;
|
||||
event-driven concurrency;
|
||||
automata;
|
||||
distributed shared memory;
|
||||
consensus algorithms;
|
||||
state machine replication;
|
||||
computational geometry theory;
|
||||
propositional logic;
|
||||
relational logic;
|
||||
Herbrand logic;
|
||||
concept lattices;
|
||||
game trees;
|
||||
and more.
|
||||
`formal languages`
|
||||
`Turing machines`
|
||||
`computability`
|
||||
`event-driven concurrency`
|
||||
`automata`
|
||||
`distributed shared memory`
|
||||
`consensus algorithms`
|
||||
`state machine replication`
|
||||
`computational geometry theory`
|
||||
`propositional logic`
|
||||
`relational logic`
|
||||
`Herbrand logic`
|
||||
`concept lattices`
|
||||
`game trees`
|
||||
`and more`
|
||||
|
||||
Courses | Duration | Effort | Prerequisites
|
||||
:-- | :--: | :--: | :--:
|
||||
@ -447,7 +447,7 @@ The important thing is to **internalize** the core concepts and to be able to us
|
||||
## Pro CS
|
||||
|
||||
After completing the requirements of the curriculum above, you will have completed the equivalent of a full bachelor's degree in Computer Science, or quite close to one.
|
||||
You can stop here, but if you really want to make yourself valuable, the next step to completing your studies is to develop skills and knowledge in a specific domain.
|
||||
You can stop in the Advanced CS section, but the next step to completing your studies is to develop skills and knowledge in a specific domain.
|
||||
Many of these courses are graduate-level.
|
||||
|
||||
Choose one or more of the following **specializations**:
|
||||
@ -466,9 +466,9 @@ These aren't the only specializations you can choose. Check the following websit
|
||||
|
||||
- Look for a job as a developer!
|
||||
- Check out the [readings](extras/readings.md) for classic books you can read that will sharpen your skills and expand your knowledge.
|
||||
- Join a local developer meetup (e.g. via [Meetups.com](https://www.meetups.com/)).
|
||||
- Join a local developer meetup (e.g. via [meetup.com](https://www.meetup.com/)).
|
||||
- Pay attention to emerging technologies in the world of software development, such as:
|
||||
- [Elixir](http://elixir-lang.org/), a new functional programming language for the web based on the battle-tested BEAM VM!
|
||||
- [Elixir](http://elixir-lang.org/), a new functional programming language for the web based on the battle-tested Erlang Virtual Machine!
|
||||
- [Rust](https://www.rust-lang.org/), a systems language which uses borrowing and lifetimes to achieve memory safety without a garbage collector!
|
||||
|
||||
![keep learning](http://i.imgur.com/REQK0VU.jpg)
|
||||
@ -496,14 +496,13 @@ We also have **labels** to help you have more control through the process.
|
||||
The meaning of each of these labels is:
|
||||
|
||||
- `Main Curriculum`: cards with that label represent courses that are listed in our curriculum.
|
||||
- `Extra Courses`: cards with that label represent courses that was added by the student.
|
||||
- `Extra Resources`: cards with that label represent courses that was added by the student.
|
||||
- `Doing`: cards with that label represent courses the student is current doing.
|
||||
- `Done`: cards with that label represent courses finished by the student.
|
||||
Those cards should also have the link for at least one project/article built with the knowledge acquired in such course.
|
||||
- `Section`: cards with that label represent the section that we have in our curriculum.
|
||||
Those cards with the `Section` label are only to help the organization of the Done column.
|
||||
You should put the *Course's cards* below its respective *Section's card*.
|
||||
- `Extra Sections`: cards with that label represent sections that was added by the student.
|
||||
|
||||
The intention of this board is to provide our students a way to track their progress, and also the ability to show their progress through a public page for friends, family, employers, etc.
|
||||
You can change the status of your board to be *public* or *private*.
|
||||
@ -511,7 +510,7 @@ You can change the status of your board to be *public* or *private*.
|
||||
## Team
|
||||
|
||||
* **Curriculum Founder**: [Eric Douglas](https://github.com/ericdouglas)
|
||||
* **Curriculum Maintainer**: [Eric Douglas](https://github.com/ericdouglas)
|
||||
* **Curriculum Maintainer**: [Eric Douglas](https://github.com/ericdouglas) and [hanjiexi](https://github.com/hanjiexi)
|
||||
* **Contributors**: [contributors](https://github.com/open-source-society/computer-science/graphs/contributors)
|
||||
|
||||
# References
|
||||
|
Loading…
Reference in New Issue
Block a user