Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
5d29b1c
Restructure folders/coursepages
Flomza Jun 29, 2025
a463773
Update prerequisites, create all coursepage skeleton
Flomza Jun 29, 2025
1bb844c
Complete Prerequisite page
Flomza Jun 29, 2025
94c80a1
Complete Class-Based Program Design page
Flomza Jun 30, 2025
67d74af
Update Calculus page; add pinned hw files from spamegg
Flomza Jun 30, 2025
01716a7
Slight reorganization, improve Calculus, start Programming Languages …
Flomza Jun 30, 2025
8a34a37
start Object-Oriented Design page
Flomza Jun 30, 2025
a59a466
small changes to Programming Languages, start Software Architecture page
Flomza Jun 30, 2025
c329eb6
small changes to Class-Based & Object Oriented
Flomza Jun 30, 2025
1b400b0
Update time estimates for program design & math
Flomza Jun 30, 2025
789b26c
Add Missing Semester page
Flomza Jun 30, 2025
01d2b59
Add nand2tetris, update ostep
Flomza Jun 30, 2025
9dac9b8
Start Computer Networking page
Flomza Jun 30, 2025
41d361d
Update hrs for networking & systems
Flomza Jun 30, 2025
83d6fcf
add pages for ethics & security
Flomza Jul 1, 2025
936e36a
add pages for applications
Flomza Jul 1, 2025
27647d0
Update Theory
Flomza Jul 1, 2025
64d594c
Update computer science overview, move Missing Semester, move Advance…
Flomza Jul 3, 2025
7b9a786
Add links; final edits
Flomza Jul 5, 2025
feb65f6
Fix broken links
Flomza Jul 5, 2025
4ced45e
Apply suggestions from code review
Flomza Jul 6, 2025
1335d75
Tweak wording in Discrete Math, add Theory descriptions, add extra re…
Flomza Jul 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 103 additions & 0 deletions docs/computer-science/advanced-cs/electives/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
---
sidebar_position: 6
---

# Electives

*Timeline: varies per student*

After completing **every required course** in Core CS, students should choose a subset of courses from Advanced CS based on interest.
Not every course from a subcategory needs to be taken.
But students should take *every* course that is relevant to the field they intend to go into.

#### Advanced programming

**Topics covered**:
`debugging theory and practice`
`goal-oriented programming`
`parallel computing`
`object-oriented analysis and design`
`UML`
`large-scale software architecture and design`
`and more`

Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Parallel Programming](https://www.coursera.org/learn/scala-parallel-programming)| 4 weeks | 6-8 hours/week | Scala programming
[Compilers](https://www.edx.org/learn/computer-science/stanford-university-compilers) | 9 weeks | 6-8 hours/week | none
[Introduction to Haskell](https://www.seas.upenn.edu/~cis194/fall16/)| 14 weeks | - | -
[Learn Prolog Now!](https://www.let.rug.nl/bos/lpn//lpnpage.php?pageid=online) ([alternative](https://github.com/ossu/computer-science/files/6085884/lpn.pdf))*| 12 weeks | - | -
[Software Debugging](https://www.youtube.com/playlist?list=PLAwxTw4SYaPkxK63TiT88oEe-AIBhr96A)| 8 weeks | 6 hours/week | Python, object-oriented programming
[Software Testing](https://www.youtube.com/playlist?list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) | 4 weeks | 6 hours/week | Python, programming experience

(*) book by Blackburn, Bos, Striegnitz (compiled from [source](https://github.com/LearnPrologNow/lpn), redistributed under [CC license](https://creativecommons.org/licenses/by-sa/4.0/))

#### 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`

Courses | Duration | Effort | Prerequisites | Notes
:-- | :--: | :--: | :--: | :--:
[Computation Structures 1: Digital Circuits](https://learning.edx.org/course/course-v1:MITx+6.004.1x_3+3T2016) [alternative 1](https://ocw.mit.edu/courses/6-004-computation-structures-spring-2017/) [alternative 2](https://ocw.mit.edu/courses/6-004-computation-structures-spring-2009/) | 10 weeks | 6 hours/week | [Nand2Tetris II](https://www.coursera.org/learn/nand2tetris2) | Alternate links contain all 3 courses.
[Computation Structures 2: Computer Architecture](https://learning.edx.org/course/course-v1:MITx+6.004.2x+3T2015) | 10 weeks | 6 hours/week | Computation Structures 1 | -
[Computation Structures 3: Computer Organization](https://learning.edx.org/course/course-v1:MITx+6.004.3x_2+1T2017) | 10 weeks | 6 hours/week | Computation Structures 2 | -

#### 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`
`game trees`
`and more`

Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Theory of Computation](https://ocw.mit.edu/courses/18-404j-theory-of-computation-fall-2020/) ([alternative](https://www.youtube.com/playlist?list=PLEE7DF8F5E0203A56)) | 13 weeks | 10 hours/week | [Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about), logic, algorithms
[Computational Geometry](https://www.edx.org/learn/geometry/tsinghua-university-ji-suan-ji-he-computational-geometry) | 16 weeks | 8 hours/week | algorithms, C++
[Game Theory](https://www.coursera.org/learn/game-theory-1) | 8 weeks | 3 hours/week | mathematical thinking, probability, calculus

#### Advanced Information Security

Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Web Security Fundamentals](https://www.edx.org/learn/computer-security/ku-leuven-web-security-fundamentals) | 5 weeks | 4-6 hours/week | understanding basic web technologies
[Security Governance & Compliance](https://www.coursera.org/learn/security-governance-compliance) | 3 weeks | 3 hours/week | -
[Digital Forensics Concepts](https://www.coursera.org/learn/digital-forensics-concepts) | 3 weeks | 2-3 hours/week | Core Security
[Secure Software Development: Requirements, Design, and Reuse](https://www.edx.org/learn/software-development/the-linux-foundation-secure-software-development-requirements-design-and-reuse) | 7 weeks | 1-2 hours/week | Core Programming and Core Security
[Secure Software Development: Implementation](https://www.edx.org/learn/software-development/the-linux-foundation-secure-software-development-implementation) | 7 weeks | 1-2 hours/week | Secure Software Development: Requirements, Design, and Reuse
[Secure Software Development: Verification and More Specialized Topics](https://www.edx.org/learn/software-engineering/the-linux-foundation-secure-software-development-verification-and-more-specialized-topics) | 7 weeks | 1-2 hours/week | Secure Software Development: Implementation

#### Advanced math

Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [high school math](/precollege-math/index.md)
[Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | 14 weeks | 12 hours/week | corequisite: Essence of Linear Algebra
[Introduction to Numerical Methods](https://ocw.mit.edu/courses/mathematics/18-335j-introduction-to-numerical-methods-spring-2019/index.htm)| 14 weeks | 12 hours/week | [Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/)
[Introduction to Formal Logic](https://forallx.openlogicproject.org/) | 10 weeks | 4-8 hours/week | [Set Theory](https://www.youtube.com/playlist?list=PL5KkMZvBpo5AH_5GpxMiryJT6Dkj32H6N)
[Probability](https://stat110.hsites.harvard.edu/) | 15 weeks | 5-10 hours/week | [Differentiation and Integration](https://www.edx.org/course/calculus-1b-integration)

32 changes: 32 additions & 0 deletions docs/computer-science/advanced-cs/final-project/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
sidebar_position: 6
---

# Final Project
*Timeline: varies per student*

### Final project

Part of learning is doing.
The assignments and exams for each course are to prepare you to use your knowledge to solve real-world problems.

After you've completed Core CS and the parts of Advanced CS relevant to you,
you should identify a problem that you can solve using the knowledge you've acquired.
You can create something entirely new, or you can improve some tool/program that you use and wish were better.

Students who would like more guidance in creating a project may choose to use a series of project oriented courses.
Here is a sample of options
(many more are available, at this point you should be capable of identifying a series that is interesting and relevant to you):

Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Fullstack Open](https://fullstackopen.com/en/) | 12 weeks | 15 hours/week | programming
[Modern Robotics (Specialization)](https://www.coursera.org/specializations/modernrobotics) | 26 weeks | 2-5 hours/week | freshman-level physics, linear algebra, calculus, [linear ordinary differential equations](https://www.khanacademy.org/math/differential-equations)
[Data Mining (Specialization)](https://www.coursera.org/specializations/data-mining) | 30 weeks | 2-5 hours/week | machine learning
[Big Data (Specialization)](https://www.coursera.org/specializations/big-data) | 30 weeks | 3-5 hours/week | none
[Internet of Things (Specialization)](https://www.coursera.org/specializations/internet-of-things) | 30 weeks | 1-5 hours/week | strong programming
[Cloud Computing (Specialization)](https://www.coursera.org/specializations/cloud-computing) | 30 weeks | 2-6 hours/week | C++ programming
[Data Science (Specialization)](https://www.coursera.org/specializations/jhu-data-science) | 43 weeks | 1-6 hours/week | none
[Functional Programming in Scala (Specialization)](https://www.coursera.org/specializations/scala) | 29 weeks | 4-5 hours/week | One year programming experience
[Game Design and Development with Unity 2020 (Specialization)](https://www.coursera.org/specializations/game-design-and-development) | 6 months | 5 hours/week | programming, interactive design

10 changes: 10 additions & 0 deletions docs/computer-science/advanced-cs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
sidebar_position: 10
---

# Advanced CS
*Timeline: varies per student*

import DocCardList from '@theme/DocCardList';

<DocCardList />
12 changes: 12 additions & 0 deletions docs/computer-science/applications/computer-graphics/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
sidebar_position: 3
---

# Computer graphics
*Timeline: 72 hours*

Learn to create images of 3D scenes in both real-time and with realistic ray tracing in this introductory computer graphics course.
- [Computer Graphics](https://www.edx.org/learn/computer-graphics/the-university-of-california-san-diego-computer-graphics)

Alternative course:
- [CSE 167: Computer Graphics](https://cseweb.ucsd.edu/~viscomp/classes/cse167/wi22/schedule.html)
11 changes: 11 additions & 0 deletions docs/computer-science/applications/databases/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
sidebar_position: 1
---

# Databases
*Timeline: 60 hours*

These courses will give the student a basic understanding of databases, specifically with SQL:
- [Relational Databases & SQL](https://www.edx.org/learn/relational-databases/stanford-university-databases-relational-databases-and-sql), 20 hrs
- [Modeling & Theory](https://www.edx.org/learn/databases/stanford-university-databases-modeling-and-theory), 20 hrs
- [Semistructured Data](https://www.edx.org/learn/relational-databases/stanford-university-databases-semistructured-data), 20 hrs
10 changes: 10 additions & 0 deletions docs/computer-science/applications/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
sidebar_position: 9
---

# Applications
*Timeline: 279 - 291 hours*

import DocCardList from '@theme/DocCardList';

<DocCardList />
14 changes: 14 additions & 0 deletions docs/computer-science/applications/machine-learning/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
sidebar_position: 2
---

# Machine Learning
*Timeline: 99 hours*

These courses provide a broad introduction to modern machine learning, including supervised learning (multiple linear regression, logistic regression, neural networks, and decision trees), unsupervised learning (clustering, dimensionality reduction, recommender systems), and some of the best practices used in Silicon Valley for artificial intelligence and machine learning innovation (evaluating and tuning models, taking a data-centric approach to improving performance, and more.)

- [Supervised Machine Learning: Regression and Classification](https://www.coursera.org/learn/machine-learning), 33 hrs

- [Advanced Learning Algorithms](https://www.coursera.org/learn/advanced-learning-algorithms), 34 hrs

- [Unsupervised Learning, Recommenders, Reinforcement Learning](https://www.coursera.org/learn/unsupervised-learning-recommenders-reinforcement-learning), 27 hrs
16 changes: 16 additions & 0 deletions docs/computer-science/applications/software-engineering/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
sidebar_position: 4
---

# Software Engineering
*Timeline: 48 - 60 hours*

This course introduces how teams design, build, and test multi-version software systems.

You will learn software engineering principles that are applicable to the breadth of large-scale software systems. The course explores topics such as agile development, REST and Async programming, software specification, design, refactoring, information security, and more.

By the end of this course, learners will work in teams, applying an agile software development process to specify, design, and test multiple versions of complex software systems.
- [Software Engineering: Introduction](https://www.edx.org/learn/software-engineering/university-of-british-columbia-software-engineering-introduction)

Alternative:
- [UBC CPSC - Software Engineering Resources](https://github.com/ubccpsc/310/blob/main/resources/README.md)
12 changes: 12 additions & 0 deletions docs/computer-science/ethics-security/cyber-fundamentals/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
sidebar_position: 2
---

# Cybersecurity
*Timeline: 80 - 96 hours*

Learn cybersecurity fundamentals, including how to detect threats, protect systems and networks, and anticipate potential cyber attacks.
- [Cybersecurity Fundamentals](https://www.edx.org/learn/cybersecurity/rochester-institute-of-technology-cybersecurity-fundamentals)

Extra resources:
- [Professor Messer SY0-701 Security+ Training Course](https://www.youtube.com/playlist?list=PLG49S3nxzAnl4QDVqK-hOnoqcSKEIDDuv)
15 changes: 15 additions & 0 deletions docs/computer-science/ethics-security/ethics/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
sidebar_position: 1
---

# Ethics
*Timeline: 35 hours*

This course provides an introduction to ethics in engineering and technology.
- [Ethics, Technology & Engineering](https://www.coursera.org/learn/ethics-technology-engineering), 18 hrs

This course will introduce the various types of U.S. intellectual property: patents, which cover inventions and process innovations; copyright, which protects original works of authorship; and trademarks, which protect a business’ commercial identity as the source of valuable goods and services. You will then explore case studies of how global businesses have used intellectual property law to generate enormous value from these intangible assets.
- [Introduction to Intelectual Property](https://www.coursera.org/learn/introduction-intellectual-property), 8 hrs

This course is designed to introduce data privacy to a wide audience and help each participant see how data privacy has evolved as a compelling concern to public and private organizations as well as individuals. In this course, you will hear from legal and technical experts and practitioners who encounter data privacy issues daily. This course will review theories of data privacy as well as data privacy in the context of social media and artificial intelligence. It will also explore data privacy issues in journalism, surveillance, new technologies like facial recognition and biometrics.
- [Data Privacy Fundamentals](https://www.coursera.org/learn/northeastern-data-privacy), 9 hrs
10 changes: 10 additions & 0 deletions docs/computer-science/ethics-security/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
sidebar_position: 8
---

# Ethics & Security
*Timeline: 167 - 183 hours*

import DocCardList from '@theme/DocCardList';

<DocCardList />
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
sidebar_position: 3
---

# Secure Coding Practices
*Timeline: 52 hours*

Through these courses, you will cover the principles of secure coding, concepts of threat modeling, cryptography, and exploit vulnerabilities in C/C++ or Java languages, all of which will prepare you to think like a hacker and protect your organizations information. The courses provide ample practice activities including exploiting WebGoat, an OWASP project designed to teach penetration testing.

- [Principles of Secure Coding](https://www.coursera.org/learn/secure-coding-principles), 16 hrs
- [Identifying Security Vulnerabilities](https://www.coursera.org/learn/identifying-security-vulnerabilities), 16 hrs

Now pick **one** of the following courses to apply your knowledge:
- [Identifying Security Vulnerabilities in C/C++](https://www.coursera.org/learn/identifying-security-vulnerabilities-c-programming), 20 hrs
- [Identifying Security Vulnerabilities in Java](https://www.coursera.org/learn/exploiting-securing-vulnerabilities-java-applications), 20 hrs
2 changes: 1 addition & 1 deletion docs/computer-science/extras/index.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 3
sidebar_position: 11
---

# Extra Resources
Expand Down
Loading