This commit is contained in:
hashcookie 2023-08-27 18:04:47 +08:00
parent 85ffe64eb4
commit 99f5d03386
1 changed files with 525 additions and 0 deletions

525
README-cn.md Normal file
View File

@ -0,0 +1,525 @@
# OSSU 2023 调查
你好 OSSUnians
我们正在进行第一次人口普查。[您愿意花 15 分钟填写调查表吗?](https://docs.google.com/forms/d/e/1FAIpQLSfrON-YAh5nza6R0wpRkkhTOke5v9xSrZ3DXzec8f93KVSXjw/viewform?usp=sf_link)
您的回答将有助于我们了解您的学习背景和需求。所有回答都是匿名的。所有回答都将决定开源社会大学的未来。调查将持续两周。
![开源社会大学OSSU](https://i.imgur.com/kYYCXtC.png)
<h3 align="center">开源社会大学</h3>
<p align="center">
计算机科学免费自学教育之路!
</p>
<p align="center">
<a href="https://github.com/sindresorhus/awesome">
<img alt="Awesome" src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg">
</a>
<a href="https://github.com/ossu/computer-science">
<img alt="Open Source Society University - Computer Science" src="https://img.shields.io/badge/OSSU-computer--science-blue.svg">
</a>
</p>
# 目录
- [概述](#概述)
- [社区](#社区)
- [课程](#课程)
- [行为准则](#行为准则)
- [团队](#团队)
# 概述
OSSU 的课程是利用在线教材进行的 **完整的计算机科学教育**
它不仅仅是为了职业培训或专业发展。
它适合那些希望在所有计算机学科的基本概念方面获得适当、全面基础的人、
以及那些有纪律、有意愿(最重要的是!)养成良好习惯,能够在很大程度上靠自己获得这种教育的人、
但有来自全球学习者社区的支持。
它是根据计算机科学本科专业的学位要求,减去通识教育(非计算机科学)的要求而设计的、
因为我们假定,学习这门课程的大多数人都已经接受过计算机科学领域以外的教育。
课程本身是世界上最好的课程之一,通常来自哈佛大学、普林斯顿大学、麻省理工学院等、
这些课程通常来自哈佛大学、普林斯顿大学、麻省理工学院等名校,但都是根据以下标准特别挑选的。
**必备课程**:
- 开放注册
- 定期运行(最好采用自定进度的形式,否则每年运行多次)
- 教材和教学原则质量普遍较高
- 与 [CS 2013](CURRICULAR_GUIDELINES.md) 的课程标准相匹配:计算机科学本科学位课程指南
如果没有符合上述标准的课程,则以书籍作为课业的补充。
有的课程或书籍不符合课程设置,但在其他方面质量很高、
它们属于 [extras/courses] (extras/courses.md) 或 [extras/readings] (extras/readings.md)。
**组织** 课程设计如下:
- *CS 入门*:让学生尝试学习 CS看看是否适合自己
- *核心 CS*:大致相当于计算机科学课程的前三年,学习所有专业必修的课程
- *高级 CS*:大致相当于计算机科学课程的最后一年,根据学生的兴趣选修课
- *最终项目*:学生验证、巩固和展示其知识的项目,由全球同行进行评估
**学制** 如果你认真计划,每周投入大约 20 个小时的学习时间,在大约 2 年内完成学业是可能的。学员可以使用 [此电子表格
](https://docs.google.com/spreadsheets/d/1bkUU90y4rKYQHwY5AR2iX6iiPTrPEsYs75GkCAkrgm4/copy)来估算自己的结束日期。复制一份,并在 "时间表 "表中输入开始日期和每周预计学时。在学习课程的过程中,您可以在 "课程数据 "表中输入您的实际课程完成日期,并获得最新的完成时间估计。
**费用** 所有或几乎所有课程材料均免费提供。不过,有些课程可能会对作业/测试/项目的评分收取费用。
请注意,[Coursera](https://www.coursera.support/s/article/209819033-Apply-for-Financial-Aid-or-a-Scholarship?language=en_US) 和 [edX](https://courses.edx.org/financial-assistance/) 都提供经济援助。
根据自己的时间和预算来决定花多少钱;
请记住,成功是买不来的!
**过程** 学生可以单独或分组、按顺序或不按顺序完成课程。
- 我们建议在核心 CS 中学习所有课程,只有在确定已经学过相关内容时才跳过某门课程。
- 为简单起见,我们建议按照从上到下的顺序学习课程(尤其是核心 CS因为这些课程已经按照先决条件进行了[拓扑排序](https://en.wikipedia.org/wiki/Topological_sorting)。
- 高级 CS 课程为选修课。选择一个您希望成为专家的科目(如高级编程),然后选修该科目下的所有课程。您也可以创建自己的自定义科目,但我们建议您就所选科目从社区中获得验证。
**内容政策**。如果您打算公开展示您的部分课程作业,您必须只共享您被允许共享的文件。
请勿违反您在每门课程开始时签署的行为准则!
**[如何贡献](CONTRIBUTING.md)**
**[获取帮助](HELP.md)** (有关常见问题解答和聊天室的详细信息)
# 社区
- 我们有一个 Discord 服务器![![Discord](https://img.shields.io/discord/744385009028431943.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/wuytwK5s9h) 这应该是您与其他 OSSU 学生交流的第一站。何不现在就自我介绍一下呢?[加入 OSSU Discord](https://discord.gg/wuytwK5s9h)
- 您还可以通过 GitHub 问题进行互动。如果课程有问题,或者需要对课程进行修改,可以在这里开始对话。阅读更多 [此处](CONTRIBUTING.md)。
- 订阅我们的 [时事通讯](https://tinyletter.com/OpenSourceSocietyUniversity)。
- 将开源社会大学添加到您的 [Linkedin](https://www.linkedin.com/school/11272443/) 个人资料中!
- 注意:在搜索开放源码社会大学时,您可能会发现一个未经维护且已过时的 firebase 应用程序。您可以放心地忽略它。请参阅 [FAQ](./FAQ.md#why-is-the-firebase-ossu-app-different-or-broken) 获取更多信息。
# 课程
**课程版本**`8.0.0`(参考 [变更日志](CHANGELOG.md))。
- [先决条件](#先决条件)
- [CS 简介](#CS-简介)
- [编程入门](#编程入门)
- [计算机科学导论](#计算机科学导论)
- [核心 CS](#核心CS)
- [核心编程](#核心编程)
- [核心数学](#核心数学)
- [CS 工具](#CS工具)
- [核心系统](#核心系统)
- [核心理论](#核心理论)
- [核心安全](#核心安全)
- [核心应用](#核心应用)
- [核心伦理](#核心伦理)
- [高级 CS](#高级CS)
- [高级编程](#高级编程)
- [高级系统](#高级系统)
- [高级理论](#advanced-theory)
- [高级信息安全](#高级信息安全)
- [高级数学](#高级数学)
- [最终项目](#最终项目)
---
## 先决条件
- [核心 CS](#核心CS)假定学生已经学过[高中数学](https://github.com/ossu/computer-science/blob/master/FAQ.md#how-can-i-review-the-math-prerequisites),包括代数、几何和微积分前期课程。
- [高级 CS](#高级CS)假定学生已学完核心 CS 的全部课程。
并有足够的知识来决定选修哪些课程。
- 请注意,[高级系统](#高级系统) 假设学生已修过基础物理课程(如高中的 AP 物理)。
## CS 简介
### 编程入门
如果您从未编写过 for 循环,或者不知道什么是编程中的字符串,那么就从这里开始吧。本课程是自定进度的,您可以根据自己的需要调整每周的学时。
**所涉主题**:
`简单程序`
`简单数据结构`
课程 | 时间 | 精力 | 先决条件 | 讨论
:-- | :--:| :--:| :--:| :--:
[面向所有人的 Python](https://www.py4e.com/lessons) | 10 周 | 10 小时/周 | 没有 | [聊天](https://discord.gg/syA242Z)
### 计算机科学入门
本课程将向您介绍计算机科学的世界。已经通过上述课程或其他学习方式接触过编程的学生,应该选修本课程,以便了解未来的学习内容。如果你学完这门课程后还想了解更多,那么计算机科学很可能就是你的选择!
**所涉主题**:
`计算`
`命令式编程`
`基本数据结构和算法`
`更多`
课程 | 时间 | 精力 | 先决条件 | 讨论
:-- | :--:| :--:| :--:| :--:
[计算机科学与 Python 编程入门](https://ocw.mit.edu/courses/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/) ([替代](https://www.edx.org/course/introduction-to-computer-science-and-programming-7))| 9 周 | 15 小时/周 | [高中代数](https://www.khanacademy.org/math/algebra-home) | [聊天](https://discord.gg/jvchSm9)
## 核心 CS
除非另有说明,否则核心 CS 下的所有课程均为**必修**。
### 核心编程
**所涉主题**:
`函数式编程`
`试验设计`
`计划要求`
`常用设计模式`
`单元测试`
`面向对象的设计`
`静态类型化`
`动态分型`
`ML 家族语言(通过标准 ML`
`Lisp 家族语言(通过 Racket`
`Ruby`
`更多`
课程 | 时间 | 精力 | 先决条件 | 讨论
:-- | :--:| :--:| :--:| :--:
[如何编写代码 - 简单数据](https://www.edx.org/course/how-to-code-simple-data) [(课本)](https://htdp.org/2022-8-7/Book/index.html) | 7 周 | 8-10 小时/周 | 无 | [聊天](https://discord.gg/RfqAmGJ)
[如何编码 - 复杂数据](https://www.edx.org/course/how-to-code-complex-data) | 6 周 | 8-10 小时/周 | 如何编码:简单数据 | [聊天](https://discord.gg/kczJzpm)
[编程语言 A 部分](https://www.coursera.org/learn/programming-languages) | 5 周 | 4-8 小时/周 | 如何编码 ([听教员讲课](https://www.coursera.org/lecture/programming-languages/recommended-background-k1yuh)) | [聊天](https://discord.gg/8BkJtXN)
[编程语言 B 部分](https://www.coursera.org/learn/programming-languages-part-b) | 3 周 | 4-8 小时/周 | 编程语言 A 部分 | [聊天](https://discord.gg/EeA7VR9)
[编程语言 C 部分](https://www.coursera.org/learn/programming-languages-part-c) | 3 周 | 4-8 小时/周 | 编程语言 B 部分 | [聊天](https://discord.gg/8EZUVbA)
[面向对象设计](https://www.coursera.org/learn/object-oriented-design) | 4周 | 4小时/周 | [基础Java](https://www.youtube.com/watch?v=GoXwIVyNvX0)
[设计模式](https://www.coursera.org/learn/design-patterns) | 4 周 | 4 小时/周 | 面向对象设计
[软件体系结构](https://www.coursera.org/learn/software-architecture) | 4 周 | 2-5 小时/周 | 设计模式
### 核心数学
离散数学CS 数学)是先修课程,与算法和数据结构的学习密切相关。微积分既能为学生学习离散数学做好准备,又能帮助学生发展成熟的数学能力。
**所涉主题**:
`离散数学`
`数学证明`
`基本统计`
`O 符号`
`离散概率`
`更多`
课程 | 时间 | 精力 | 笔记 | 先决条件 | 讨论
:-- | :--:| :--:| :--:| :--:| :--:
[微积分 1A微分](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.1x+2T2019/about) ([替代](https://ocw.mit.edu/courses/mathematics/18-01sc-single-variable-calculus-fall-2010/index.htm)) | 13 周 | 6-10 小时/周 | 备用课程涵盖本课程和以下 2 门课程 | [高中数学](FAQ.md#how-can-i-review-the-math-prerequisites) | [聊天](https://discord.gg/mPCt45F)
[微积分 1B: 积分](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.2x+3T2019/about) | 13 周 | 5-10 小时/周 | - | 微积分 1A | [聊天](https://discord.gg/sddAsZg)
[微积分1C: 坐标系与无穷级数](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.3x+1T2020/about) | 6 周 | 5-10 小时/周 | - | Calculus 1B | [chat](https://discord.gg/FNEcNNq)
[计算机科学数学](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/约) ([替代](https://ocw.mit.edu/courses/6-042j-mathematics-for-computer-science-fall-2010/))| 13 周 | 5 小时/周 | [2015/2019 年解决方案](https://github.com/spamegg1/Math-for-CS-solutions) [2010 年解决方案](https://github.com/frevib/mit-cs-math-6042-fall-2010-problems) [2005 年解决方案](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/assignments/)。| 微积分 1C | [聊天](https://discord.gg/EuTzNbF)
### CS工具
理解理论很重要,但你也需要编写程序。有许多工具被广泛用于简化这一过程。现在就学习它们,以便将来编写程序。
**所涉主题**:
`终端和Shell脚本编写`
`Vim编辑器`
`命令行环境`
`版本控制`
`更多`
课程 | 时间 | 精力 | 先决条件 | 讨论
:-- | :--: | :--: | :--: | :--:
[你计算机科学教育中缺失的那个学期](https://missing.csail.mit.edu/) | 2 周 | 12 小时/周 | - | [聊天](https://discord.gg/5FvKycS)
### 核心系统
**所涉主题**:
`过程式编程`
`手动内存管理`
`布尔代数`
`逻辑门电路`
`存储器`
`计算机体系结构`
`汇编语言`
`机器语言`
`虚拟机`
`高级语言`
`编译器`
`操作系统`
`网络协议`
`更多`
课程 | 时间 | 精力 | 附加文本/作业| 先决条件 | 讨论
:-- | :--: | :--: | :--: | :--: | :--:
[从 Nand 到 Tetris建立现代计算机](https://www.coursera.org/learn/build-a-computer) ([备选](https://www.nand2tetris.org/)) | 6 周 | 7-13 小时/周 | - | 类似 C 的编程语言 | [聊天](https://discord.gg/vxB2DRV)
[从 Nand 到 Tetris建立现代计算机 II 部分](https://www.coursera.org/learn/nand2tetris2) | 6 周 | 12-18 小时/周 | - | 以下编程语言之一 [这些编程语言](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), 从 Nand 到 Tetris 第一部分 | [聊天](https://discord.gg/AsUXcPu)
[操作系统:三步轻松完成](coursepages/ostep/README.md) | 10-12 周 | 6-10 小时/周 | - | 从 Nand 到 Tetris 第二部分 | [聊天](https://discord.gg/wZNgpep)
[计算机网络:自顶向下方法](http://gaia.cs.umass.edu/kurose_ross/online_lectures.htm)| 8 周 | 412 小时/周 | [Wireshark 实验](http://gaia.cs.umass.edu/kurose_ross/wireshark.php) | 代数、概率、基本的计算机科学 | [聊天](https://discord.gg/MJ9YXyV)
### 核心理论
**所涉主题**:
`分治算法`
`排序和搜索`
`随机算法`
`图搜索`
`最短路径`
`数据结构`
`贪心算法`
`最小生成树`
`动态规划`
`NP完全性`
`更多`
课程 | 时间 | 精力 | 先决条件 | 讨论
:-- | :--: | :--: | :--: | :--:
[分治算法、排序和搜索、以及随机算法](https://www.coursera.org/learn/algorithms-divide-conquer) | 4 周 | 4-8 小时/周 | 任何编程语言、计算机科学中的数学知识 | [聊天](https://discord.gg/mKRS7tY)
[图搜索、最短路径和数据结构](https://www.coursera.org/learn/algorithms-graphs-data-structures) | 4 周 | 4-8 小时/周 | 分治算法、排序和搜索、以及随机算法 | [聊天](https://discord.gg/Qstqe4t)
[贪心算法、最小生成树和动态规划](https://www.coursera.org/learn/algorithms-greedy) | 4 周 | 4-8 小时/周 | 图搜索、最短路径和数据结构 | [聊天](https://discord.gg/dWVvjuz)
[最短路径再探、NP完全问题以及解决方案](https://www.coursera.org/learn/algorithms-npcomplete) | 4 周 | 4-8 小时/周 | 贪心算法、最小生成树和动态规划 | [聊天](https://discord.gg/dYuY78u)
### 核心安全
**所涉主题**
`保密性,完整性,可用性`
`安全设计`
`防御性编程`
`威胁和攻击`
`网络安全`
`密码学`
`更多`
课程 | 时间 | 精力 | 先决条件 | 讨论
:-- | :--: | :--: | :--: | :--:
[网络安全基础知识](https://www.edx.org/course/cybersecurity-fundamentals) | 8 周 | 10-12 小时/周 | - | [聊天](https://discord.gg/XdY3AwTFK4)
[安全编码原则](https://www.coursera.org/learn/secure-coding-principles)| 4 周 | 4 小时/周 | - | [聊天](https://discord.gg/5gMdeSK)
[安全漏洞的识别](https://www.coursera.org/learn/identifying-security-vulnerabilities) | 4 周 | 4 小时/周 | - | [聊天](https://discord.gg/V78MjUS)
选择下列 **其中** 一个:
课程 | 时间 | 精力 | 先决条件 | 讨论
:-- | :--: | :--: | :--: | :--:
[C/C++编程中的安全漏洞识别 ](https://www.coursera.org/learn/identifying-security-vulnerabilities-c-programming) | 4 周 | 5 小时/周 | - | [聊天](https://discord.gg/Vbxce7A)
[Java应用程序中的漏洞利用与安全性保障](https://www.coursera.org/learn/exploiting-securing-vulnerabilities-java-applications) | 4 周 | 5 小时/周 | - | [聊天](https://discord.gg/QxC22rR)
### 核心应用程序
**所涉主题**:
`敏捷方法`
`REST`
`软件规格`
`重构`
`关系型数据库`
`事务处理`
`数据建模`
`神经网络`
`监督学习`
`无监督学习`
`OpenGL`
`光线追踪`
`更多`
课程 | 时间 | 精力 | 先决条件 | 讨论
:-- | :--: | :--: | :--: | :--:
[数据库:建模与理论](https://www.edx.org/course/modeling-and-theory)| 2 周 | 10 小时/周 | 核心编程 | [聊天](https://discord.gg/pMFqNf4)
[数据库关系数据库与SQL](https://www.edx.org/course/databases-5-sql)| 2 周 | 10 小时/周 | 核心编程 | [聊天](https://discord.gg/P8SPPyF)
[数据库:半结构化数据](https://www.edx.org/course/semistructured-data)| 2 周 | 10 小时/周 | 核心编程 | [聊天](https://discord.gg/duCJ3GN)
[机器学习](https://www.coursera.org/specializations/machine-learning-introduction)| 11 周 | 9 小时/周 | 基本编程 | [聊天](https://discord.gg/NcXHDjy)
[计算机图形学](https://www.edx.org/course/computer-graphics-2)| 6 周 | 12 小时/周 | C++ 或 Java线性代数 | [聊天](https://discord.gg/68WqMNV)
[软件工程:入门](https://www.edx.org/course/software-engineering-introduction) | 6 周 | 8-10 小时/周 | 核心编程, 和一个 [较大的项目](FAQ.md#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses) | [聊天](https://discord.gg/5Qtcwtz)
### 核心道德
**所涉主题**:
`社会背景`
`分析工具`
`职业道德`
`知识产权`
`隐私和公民自由`
`更多`
课程 | 时间 | 精力 | 先决条件 | 讨论
:-- | :--: | :--: | :--: | :--:
[道德、技术与工程](https://www.coursera.org/learn/ethics-technology-engineering)| 9 周 | 2 小时/周 | none | [聊天](https://discord.gg/6ttjPmzZbe)
[知识产权概论](https://www.coursera.org/learn/introduction-intellectual-property)| 4 周 | 2 小时/周 | 无 | [聊天](https://discord.gg/YbuERswpAK)
[Data Privacy Fundamentals](https://www.coursera.org/learn/northeastern-data-privacy)| 3 周 | 3 小时/周 | 无 | [聊天](https://discord.gg/64J34ajNBd)
## 高级CS
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/course/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) ([alt](https://github.com/ossu/computer-science/files/6085884/lpn.pdf))*| 12 weeks | - | -
[Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks | 6 hours/week | Python, object-oriented programming
[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 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) [alt1](https://ocw.mit.edu/courses/6-004-computation-structures-spring-2017/) [alt2 ](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/) ([alt](http://aduni.org/courses/theory/index.php?view=cw)) | 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/course/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/course/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/course/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/course/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/course/secure-software-development-verification-and-more-specialized-topics) | 7 weeks | 1-2 hours/week | Secure Software Development: Implementation
### Advanced math
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/m6wHbP6)
[Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | 14 weeks | 12 hours/week | corequisite: Essence of Linear Algebra | [chat](https://discord.gg/k7nSWJH)
[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/) | [chat](https://discord.gg/FNEcNNq)
[Introduction to Formal Logic](https://forallx.openlogicproject.org/) | 10 weeks | 4-8 hours/week | [Set Theory](https://www.youtube.com/playlist?list=PL5KkMZvBpo5AH_5GpxMiryJT6Dkj32H6N) | [chat](https://discord.gg/MbM2Gg5)
[Probability](https://projects.iq.harvard.edu/stat110/home) | 15 weeks | 5-10 hours/week | [Differentiation and Integration](https://www.edx.org/course/calculus-1b-integration) | [chat](https://discord.gg/UVjs9BU)
## Final project
OSS University is project-focused.
The assignments and exams for each course are to prepare you to use your knowledge to solve real-world problems.
After you've gotten through all of Core CS and the parts of Advanced CS relevant to you, you should think about a problem that you can solve using the knowledge you've acquired.
Not only does real project work look great on a resume, but the project will also validate and consolidate your knowledge.
You can create something entirely new, or you can find an existing project that needs help via websites like
[CodeTriage](https://www.codetriage.com/)
or
[First Timers Only](https://www.firsttimersonly.com/).
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
### Evaluation
Upon completing your final project:
- Submit your project's information to [PROJECTS](PROJECTS.md) via a pull request.
- Put the OSSU-CS badge in the README of your repository!
[![Open Source Society University - Computer Science](https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/ossu/computer-science)
- Markdown: `[![Open Source Society University - Computer Science](https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/ossu/computer-science)`
- HTML: `<a href="https://github.com/ossu/computer-science"><img alt="Open Source Society University - Computer Science" src="https://img.shields.io/badge/OSSU-computer--science-blue.svg"></a>`
- Use our [community](#community) channels to announce it to your fellow students.
Solicit feedback from your OSSU peers.
You will not be "graded" in the traditional sense — everyone has their own measurements for what they consider a success.
The purpose of the evaluation is to act as your first announcement to the world that you are a computer scientist
and to get experience listening to feedback — both positive and negative.
The final project evaluation has a second purpose: to evaluate whether OSSU,
through its community and curriculum, is successful in its mission to guide independent learners in obtaining a world-class computer science education.
### Cooperative work
You can create this project alone or with other students!
**We love cooperative work**!
Use our [channels](#community) to communicate with other fellows to combine and create new projects!
### Which programming languages should I use?
My friend, here is the best part of liberty!
You can use **any** language that you want to complete the final project.
The important thing is to **internalize** the core concepts and to be able to use them with whatever tool (programming language) that you wish.
## Congratulations
After completing the requirements of the curriculum above, you will have completed the equivalent of a full bachelor's degree in Computer Science. Congratulations!
What is next for you? The possibilities are boundless and overlapping:
- 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 [meetup.com](https://www.meetup.com/)).
- Pay attention to emerging technologies in the world of software development:
+ Explore the **actor model** through [Elixir](https://elixir-lang.org/), a new functional programming language for the web based on the battle-tested Erlang Virtual Machine!
+ Explore **borrowing and lifetimes** through [Rust](https://www.rust-lang.org/), a systems language which achieves memory- and thread-safety without a garbage collector!
+ Explore **dependent type systems** through [Idris](https://www.idris-lang.org/), a new Haskell-inspired language with unprecedented support for type-driven development.
![keep learning](https://i.imgur.com/REQK0VU.jpg)
# Code of conduct
[OSSU's code of conduct](https://github.com/ossu/code-of-conduct).
## How to show your progress
1. Create an account in [Trello](https://trello.com/).
1. Copy [this](https://trello.com/b/IScNSzsI/ossu-compsci) board to your personal account.
See how to copy a board [here](https://help.trello.com/article/802-copying-cards-lists-or-boards).
Now that you have a copy of our official board, you just need to pass the cards to the `Doing` column or `Done` column as you progress in your study.
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 Resources`: cards with that label represent courses that were added by the student.
- `Doing`: cards with that label represent courses the student is currently 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 a 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*.
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*.
# Team
* **[Eric Douglas](https://github.com/ericdouglas)**: founder of OSSU
* **[Josh Hanson](https://github.com/joshmhanson)**: lead technical maintainer
* **[Waciuma Wanjohi](https://github.com/waciumawanjohi)**: lead academic maintainer
* **[Contributors](https://github.com/ossu/computer-science/graphs/contributors)**