OSSU课程是使用在线资料进行的完整的计算机科学教育。 它不仅仅是为了职业培训或专业发展。 它适合那些希望获得所有计算学科基本概念的适当、全面基础的人, 以及那些有纪律、有意愿和(最重要的是!)良好习惯,能够在很大程度上自主获得这种教育的人, 但同时也能得到来自全球学习者社区的支持。
它是根据本科计算机科学专业的学位要求设计的,减去了通识教育(非CS)要求, 因为我们假设大多数遵循这个课程的人在CS领域之外已经受过教育。 课程本身是世界上最好的课程,通常来自哈佛、普林斯顿、麻省理工等, 但专门选择以满足以下标准。
课程必须:
当没有课程满足上述标准时,课程工作会辅以一本书。 当有不适合课程但质量高的课程或书籍时, 它们属于extras/courses或extras/readings。
组织。课程设计如下:
持续时间。如果你仔细规划并每周投入大约20小时的学习时间,在大约2年内完成是可能的。学习者可以使用这个电子表格
来估计他们的结束日期。复制一份并在Timeline表中输入你的开始日期和预期每周学习时间。当你完成课程时,可以在Curriculum Data表中输入实际的课程完成日期,并获得更新的完成估计。
**警告:**虽然电子表格是估算完成本课程所需时间的有用工具,但它可能不是最新的课程。仅使用电子表格来估算所需时间。使用OSSU CS网站或仓库来查看需要学习的课程。
费用。所有或几乎所有课程材料都是免费的。然而,一些课程可能会对作业/测试/项目的评分收费。 请注意,Coursera和edX都提供经济援助。
根据自己的时间和预算决定花费多少; 只要记住你不能购买成功!
过程。学生可以独自或分组完成课程,按顺序或不按顺序进行。
内容政策。如果你计划公开展示一些课程作业,你必须只分享你被允许分享的文件。 尊重你在每门课程开始时签署的行为准则!
获取帮助 (关于我们的常见问题和聊天室的详细信息)
**警告:**在搜索OSSU时,你可能会发现一些第三方/废弃/过时的材料。我们建议你忽略它们,只使用OSSU CS网站或OSSU CS Github仓库。一些已知的过时材料包括:
- 一个未维护和废弃的firebase应用。在FAQ中阅读更多信息。
- 一个未维护和废弃的trello板
- 第三方notion模板
课程版本:8.0.0(查看CHANGELOG)
如果你从未写过for循环,或者不知道编程中的字符串是什么,请从这里开始。这门课程是自定进度的,允许你根据自己的需求调整每周投入的时间。
涵盖的主题:
简单程序
简单数据结构
| 课程 | 持续时间 | 努力 | 先决条件 | 讨论 |
|---|---|---|---|---|
| 编程入门 | 10周 | 每周10小时 | 无 | 聊天 |
这门课程将向你介绍计算机科学的世界。已经接触过编程的学生,无论是通过上述课程还是其他学习途径,都应该学习这门课程,以了解将要学习的内容。如果你完成课程后想要更多,那么计算机科学很可能适合你!
涵盖的主题:
计算
命令式编程
基本数据结构和算法
等等
| 课程 | 持续时间 | 努力 | 先决条件 | 讨论 |
|---|---|---|---|---|
| 使用Python进行计算机科学和编程入门 | 9周 | 每周15小时 | 高中代数 | 聊天 |
除非另有说明,CS核心下的所有课程都是必修的。
涵盖的主题:
函数式编程
测试设计
程序要求
常见设计模式
单元测试
面向对象设计
静态类型
动态类型
ML系列语言(通过Standard ML)
Lisp系列语言(通过Racket)
Ruby
等等
| 课程 | 持续时间 | 努力 | 先决条件 | 讨论 |
|---|---|---|---|---|
| 系统程序设计 | 13周 | 每周8-10小时 | 无 | 聊天:第1部分 / 第2部分 |
| 编程语言,A部分 | 5周 | 每周4-8小时 | 系统程序设计(听讲师说明) | 聊天 |
| 编程语言,B部分 | 3周 | 每周4-8小时 | 编程语言,A部分 | 聊天 |
| 编程语言,C部分 | 3周 | 每周4-8小时 | 编程语言,B部分 | 聊天 |
| 面向对象设计 | 4周 | 每周4小时 | 基础Java | 聊天 |
| 设计模式 | 4周 | 每周4小时 | 面向对象设计 | 聊天 |
| 软件架构 | 4周 | 每周2-5小时 | 设计模式 | 聊天 |
离散数学(CS数学)是先决条件,与算法和数据结构的研究密切相关。微积分既为学生准备离散数学,又帮助学生发展数学 成熟度。
| 课程 | 持续时间 | 工作量 | 注释 | 先决条件 | 讨论 |
|---|---|---|---|---|---|
| 微积分1A:微分 (替代课程) | 13周 | 每周6-10小时 | 替代课程涵盖本课程和后续2门课程 | 高中数学 | 聊天 |
| 微积分1B:积分 | 13周 | 每周5-10小时 | - | 微积分1A | 聊天 |
| 微积分1C:坐标系和无穷级数 | 6周 | 每周5-10小时 | - | 微积分1B | 聊天 |
| 计算机科学的数学基础 (替代课程) | 13周 | 每周5小时 | 2015/2019解答 2010解答 2005解答. | 微积分1C | 聊天 |
理解理论很重要,但你也需要创建程序。有许多广泛使用的工具可以让这个过程更容易。现在学习它们,以便将来更轻松地编写程序。
涵盖的主题:
终端和shell脚本
vim
命令行环境
版本控制
等等
| 课程 | 持续时间 | 工作量 | 先决条件 | 讨论 |
|---|---|---|---|---|
| 你的计算机科学教育中缺失的一学期 | 2周 | 每周12小时 | - | 聊天 |
涵盖的主题:
过程式编程
手动内存管理
布尔代数
门逻辑
内存
计算机体系结构
汇编
机器语言
虚拟机
高级语言
编译器
操作系统
网络协议
等等
| 课程 | 持续时间 | 工作量 | 附加文本/作业 | 先决条件 | 讨论 |
|---|---|---|---|---|---|
| 从头开始构建现代计算机:从与非门到俄罗斯方块 (替代课程) | 6周 | 每周7-13小时 | - | 类C编程语言 | 聊天 |
| 从头开始构建现代计算机:从与非门到俄罗斯方块 第二部分 | 6周 | 每周12-18小时 | - | 这些编程语言之一, 从与非门到俄罗斯方块 第一部分 | 聊天 |
| 操作系统:三个简单的部分 | 10-12周 | 每周6-10小时 | - | 从与非门到俄罗斯方块 第二部分 | 聊天 |
| 计算机网络:自顶向下方法 | 8周 | 每周4–12小时 | Wireshark实验 | 代数, 概率, 基础计算机科学 | 聊天 |
涵盖的主题:
分治法
排序和搜索
随机算法
图搜索
最短路径
数据结构
贪心算法
最小生成树
动态规划
NP完全性
等等
| 课程 | 持续时间 | 工作量 | 先决条件 | 讨论 |
|---|---|---|---|---|
| 分治法、排序与搜索、随机算法 | 4周 | 每周4-8小时 | 任何编程语言, 计算机科学的数学基础 | 聊天 |
| 图搜索、最短路径和数据结构 | 4周 | 每周4-8小时 | 分治法、排序与搜索、随机算法 | 聊天 |
| 贪心算法、最小生成树和动态规划 | 4周 | 每周4-8小时 | 图搜索、最短路径和数据结构 | 聊天 |
| 最短路径重访、NP完全问题及其对策 | 4周 | 每周4-8小时 | 贪心算法、最小生成树和动态规划 | 聊天 |
涵盖的主题
机密性、完整性、可用性
安全设计
防御性编程
威胁和攻击
网络安全
密码学
等等
| 课程 | 持续时间 | 工作量 | 先决条件 | 讨论 |
|---|---|---|---|---|
| 网络安全基础 | 8周 | 每周10-12小时 | - | 聊天 |
| 安全编码原则 | 4周 | 每周4小时 | - | 聊天 |
| 识别安全漏洞 | 4周 | 每周4小时 | - | 聊天 |
选择以下之一:
| 课程 | 持续时间 | 工作量 | 先决条件 | 讨论 |
|---|---|---|---|---|
| 识别C/C++编程中的安全漏洞 | 4周 | 每周5小时 | - | 聊天 |
| 利用和保护Java应用程序中的漏洞 | 4周 | 每周5小时 | - | 聊天 |
涵盖的主题:
敏捷方法
REST
软件规格说明
重构
关系数据库
事务处理
数据建模
神经网络
监督学习
无监督学习
OpenGL
光线追踪
等等
| 课程 | 持续时间 | 工作量 | 先决条件 | 讨论 |
|---|---|---|---|---|
| 数据库:建模和理论 | 2周 | 每周10小时 | 核心编程 | 聊天 |
| 数据库:关系数据库和SQL | 2周 | 每周10小时 | 核心编程 | 聊天 |
| 数据库:半结构化数据 | 2周 | 每周10小时 | 核心编程 | 聊天 |
| 机器学习 | 11周 | 每周9小时 | 基本编码 | 聊天 |
| 计算机图形学 (替代课程) | 6周 | 每周12小时 | C++或Java, 线性代数 | 聊天 |
| 软件工程:入门 | 4周 | 每周8-10小时 | 核心编程, 以及一个较大的项目 | 聊天 |
涵盖的主题:
社会背景
分析工具
专业伦理
知识产权
隐私和公民自由
等等
| 课程 | 持续时间 | 工作量 | 先决条件 | 讨论 |
|---|---|---|---|---|
| 伦理、技术与工程 | 9周 | 每周2小时 | 无 | 聊天 |
| 知识产权导论 | 4周 | 每周2小时 | 无 | 聊天 |
| 数据隐私基础 | 3周 | 每周3小时 | 无 | 聊天 |
在完成核心计算机科学的每门必修课程后,学生应根据兴趣从高级计算机科学中选择一部分课程。 不需要学习每个子类别的所有课程。 但学生应该学习与他们打算从事的领域相关的每门课程。
涵盖的主题:
调试理论与实践
目标导向编程
并行计算
面向对象分析与设计
UML
大规模软件架构与设计
等等
| 课程 | 持续时间 | 工作量 | 先决条件 |
|---|---|---|---|
| 并行编程 | 4周 | 每周6-8小时 | Scala编程 |
| 编译器 | 9周 | 每周6-8小时 | 无 |
| Haskell入门 | 14周 | - | - |
| 现在学习Prolog! (替代链接)* | 12周 | - | - |
| 软件调试 | 8周 | 每周6小时 | Python, 面向对象编程 |
| 软件测试 | 4周 | 每周6小 | |
| 课程 | 时长 | 投入 | 先修要求 |
| :-- | :--: | :--: | :--: |
| 计算理论 (替代) | 13周 | 每周10小时 | 计算机科学数学、逻辑、算法 |
| 计算几何 | 16周 | 每周8小时 | 算法、C++ |
| 博弈论 | 8周 | 每周3小时 | 数学思维、概率、微积分 |
| 课程 | 时长 | 投入 | 先修要求 |
|---|---|---|---|
| Web安全基础 | 5周 | 每周4-6小时 | 了解基本的Web技术 |
| 安全治理与合规 | 3周 | 每周3小时 | - |
| 数字取证概念 | 3周 | 每周2-3小时 | 核心安全 |
| 安全软件开发:需求、设计和重用 | 7周 | 每周1-2小时 | 核心编程和核心安全 |
| 安全软件开发:实现 | 7周 | 每周1-2小时 | 安全软件开发:需求、设计和重用 |
| 安全软件开发:验证和更专业的主题 | 7周 | 每周1-2小时 | 安全软件开发:实现 |
| 课程 | 时长 | 投入 | 先修要求 | 讨论 |
|---|---|---|---|---|
| 线性代数的本质 | - | - | 高中数学 | 聊天 |
| 线性代数 | 14周 | 每周12小 时 | 同修:线性代数的本质 | 聊天 |
| 数值方法导论 | 14周 | 每周12小时 | 线性代数 | 聊天 |
| 形式逻辑导论 | 10周 | 每周4-8小时 | 集合论 | 聊天 |
| 概率论 | 15周 | 每周5-10小时 | 微分与积分 | 聊天 |
学习的一部分是实践。 每门课程的作业和考试都是为了让你准备好运用所学知识解决现实世界的问题。
在完成核心计算机科学课程和与你相关的高级计算机科学部分后, 你应该确定一个可以用你所获得的知识解决的问题。 你可以创造一些全新的东西,或者改进你使用的并希望能变得更好的某些工具/程序。
希望获得更多指导来创建项目的学生可以选择使用一系列面向项目的课程。 以下是一些选项示例 (还有更多可用选项,此时你应该能够确定一个有趣且与你相关的系列):
| 课程 | 时长 | 投入 | 先修要求 |
|---|---|---|---|
| 全栈开放 | 12周 | 每周15小时 | 编程 |
| 现代机器人学(专业) | 26周 | 每周2-5小时 | 大一物理、线性代数、微积分、线性常微分方程 |
| 数据挖掘(专业) | 30周 | 每周2-5小时 | 机器学习 |
| 大数据(专业) | 30周 | 每周3-5小时 | 无 |
| 物联网(专业) | 30周 | 每周1-5小时 | 强大的编程能力 |
| 云计算(专业) | 30周 | 每周2-6小时 | C++编程 |
| 数据科学(专业) | 43周 | 每周1-6小时 | 无 |
| Scala函数式编程(专业) | 29周 | 每周4-5小时 | 一年编程经验 |
| Unity 2020游戏设计与开发(专业) | 6个月 | 每周5小时 | 编程、交互设计 |
完成上述课程要求后, 你将完成相当于计算机科学学士学位的全部内容。 恭喜你!
接下来你可以做什么?可能性是无限的,而且相互交叉:

将GitHub仓库分叉到你自己的GitHub账户,并在完成内容时在已完成的内容旁边放置✅。这可以作为你的看板,实施起来比任何其他解决方案都快(让你有时间专注于课程)。


最适合小白的AI自动化工作流平台
无需编码,轻松生成可复用、可变现的AI自动化工作流

大模型驱动的Excel数据处理工具
基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒 以内,支持超过100万行数据的即时分析。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


AI论文写作指导平台
AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。


AI一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频


实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号