diff --git a/CHANGELOG.md b/CHANGELOG.md index ea2683d..5de6dd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 @@ -170,12 +175,12 @@ Due to Coursera's platform changes, we had the following updates: ## [3.0.0] 2016-05-04 ### Removed -- Section: **Introduction to Computer Science**: +- Section: **Introduction to Computer Science**: - Introduction to Computer Science and Programming Using Python - From Nand to Tetris (Part 1) ### Added -- Section: **Introduction to Computer Science**: +- Section: **Introduction to Computer Science**: - Introduction to Computer Science - CS50 ## [2.0.1] 2016-04-04 @@ -187,7 +192,7 @@ Due to Coursera's platform changes, we had the following updates: - Program Design section course's names and links ### Removed -- **Introduction to Computer Science**: +- **Introduction to Computer Science**: - Introduction to Computer Science - Introduction to Computational Thinking and Data Science - **Algorithms** @@ -196,19 +201,19 @@ Due to Coursera's platform changes, we had the following updates: - Principles of Reactive Programming - **Math (Calculus)** - Multivariable Calculus -- **Software Architecture**: +- **Software Architecture**: - Web Application Architectures -- **Software Engineering**: +- **Software Engineering**: - Agile Development Using Ruby on Rails - Basics - Agile Development Using Ruby on Rails - Advanced - Startup Engineering -- **Computer Architecture**: +- **Computer Architecture**: - The Hardware/Software Interface -- **Operating Systems**: +- **Operating Systems**: - Operating System Engineering -- **Computer Networks**: +- **Computer Networks**: - Introduction to Computer Networking -- **Cryptography**: +- **Cryptography**: - Applied Cryptography **ps**: These removed courses are now in the [extras](https://github.com/open-source-society/computer-science/tree/master/extras) section. diff --git a/PROJECTS.md b/PROJECTS.md index c779a02..69ef681 100644 --- a/PROJECTS.md +++ b/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 :-- | :-- | :--: | :-- diff --git a/README.md b/README.md index a933fb8..daa9897 100644 --- a/README.md +++ b/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 :-- | :--: | :--: | :--: @@ -132,20 +132,20 @@ Courses | Duration | Effort | Prerequisites 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. +**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` 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 @@ -524,4 +523,4 @@ You can change the status of your board to be *public* or *private*. - [Carnegie Mellon University: Computer Science Major Requirements](https://www.csd.cs.cmu.edu/academics/undergraduate/requirements) - [MIT Open Courseware](http://ocw.mit.edu/courses/#electrical-engineering-and-computer-science) - [Teach Yourself Computer Science](https://teachyourselfcs.com/) -- [Obtaining a Thorough CS Background Online](http://spin.atomicobject.com/2015/05/15/obtaining-thorough-cs-background-online/) \ No newline at end of file +- [Obtaining a Thorough CS Background Online](http://spin.atomicobject.com/2015/05/15/obtaining-thorough-cs-background-online/)