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账户,并在完成内容时在已完成的内容旁边放置✅。这可以作为你的看板,实施起来比任何其他解决方案都快(让你有时间专注于课程)。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。