CS50 计算机科学导论
这门课学什么
这是哈佛的计算机入门课,每年更新。课程从 Scratch 开始,再用 C 语言讲内存和算法,然后学 Python、SQL、HTML、CSS、JavaScript、Flask。最后自选题目做 1 个期末项目。
内容摘要
CS50x 是哈佛的计算机科学入门课。主线是从“怎么想问题”走到“怎么让机器跑起来”。课程不要求编程基础。它先用图形化语言 Scratch 讲清函数、条件、循环这些概念,再换成 C 语言,最后升到 Python、SQL 和网页技术。
课程分 3 个阶段。第 1 阶段是 Week 1–5,全部用 C。学生要亲手管理内存,理解数组、指针、栈和堆,并自己实现链表、哈希表这类数据结构。这一段最难,也是这门课和普通“学语法”课的分界。第 2 阶段是 Week 6–7。学生用 Python 重写前面的程序,体会高级语言省掉了什么,再用 SQL 查询真实数据库。第 3 阶段是 Week 8–9。课程讲 HTML、CSS、JavaScript 和 Flask,把前面的知识拼成一个能用的网站。Week 7 和 Week 8 之间还插了一讲人工智能,介绍提示词、机器学习和大语言模型。
每周有 1 套习题(Problem Set)。很多题给“基础版”和“进阶版”两个难度,学生二选一。代表性的作业有:用 C 画马里奥金字塔、实现凯撒密码、给图片加滤镜、从损坏的存储卡里恢复照片、写一个拼写检查器,最后用 Flask 做一个模拟炒股网站。作业提交后由自动评测程序打分。课程最后是一个自选题目的期末项目。
学完以后,学生能读写 C 和 Python 程序,理解程序在内存里怎么运行,能用 SQL 处理数据,能搭一个带数据库的小型网站。更重要的是,课程训练“正确、设计、风格”3 个标准,教学生以后自学新语言。
讲课人是大卫·马兰(David J. Malan)。他讲课节奏快,舞台演示多。例如他会撕电话簿讲二分查找,请学生上台扮演数组元素。课程每年更新录像,并提供讲义、源代码、短视频和 AI 助教 CS50.ai,自学配套很完整。
为什么值得学
它可能是全世界最受欢迎的编程入门课。马兰讲课有感染力,习题和在线工具对自学者很友好。
课程信息
- 学校
- 哈佛(Harvard)
- 课程号
- CS50x
- 讲师
- 大卫·马兰(David J. Malan)
- 学期
- 2026
- 平台
- 课程官网 + edX + YouTube
- 费用
- 免费
- 难度
- 入门
- 学时
- 11 周(Week 0–10),每周 1 讲加 1 套习题
- 先修
- 无。
- 材料
- 视频、讲义、作业、代码
- 许可证
- CC BY-NC-SA 4.0
课程大纲 · 共 13 节
大纲依据:CS50x 2026 课程官网周列表(Week 0–10 加 AI 专题讲),配合 YouTube 播放列表与各周 Problem Set 页面(查看原始页面 ↗)
- 0Scratch 与计算思维Scratch
讲二进制、ASCII、Unicode 和 RGB 怎么表示信息,引出算法与运行时间。用 Scratch 演示函数、条件、循环和事件,作业是做一个 Scratch 作品。
- 1C 语言入门C
从 Scratch 换到 C,讲编译、类型、变量、条件和循环,以及整数溢出和浮点误差。作业包括打印马里奥金字塔和找零或信用卡校验程序。
- 2数组与字符串Arrays
拆开编译的 4 个步骤,讲调试方法、数组、字符串和命令行参数,并引入密码学。作业有 Scrabble 计分、文本可读性评级和凯撒或替换加密。
- 3算法Algorithms
比较线性查找与二分查找,以及冒泡、选择、归并 3 种排序,引入大 O 记号和递归。作业是分析排序程序和实现多种投票计票规则。
- 4内存Memory
讲指针、动态内存分配、栈与堆、缓冲区溢出和文件读写。作业是调整音频音量、给 BMP 图片加滤镜、从存储卡镜像恢复 JPEG。
- 5数据结构Data Structures
讲抽象数据类型、队列、栈、链表、二叉搜索树、哈希表和字典树(trie)。作业是模拟血型遗传,以及用哈希表写一个快速拼写检查器。
- 6PythonPython
用 Python 重写前几周的 C 程序,对比两种语言的写法和效率,讲模块与包。作业是把旧题改写成 Python,并做一个 DNA 序列比对程序。
- 7SQL 与数据库SQL
讲表、数据类型、查询语句、约束、索引和事务,并讨论竞态条件和 SQL 注入。作业是查询歌曲和电影数据库,并用 SQL 破解一桩虚构案件。
- AI人工智能Artificial Intelligence
介绍提示词工程、决策树、极小化极大搜索、强化学习、神经网络和 Transformer,并讨论大语言模型的幻觉问题。
- 8HTML、CSS 与 JavaScriptHTML, CSS, JavaScript
先讲 TCP/IP、DNS 和 HTTP,再讲网页结构、样式和浏览器端脚本。作业是做一个问答小网页和一个个人主页。
- 9Flask 网页应用Flask
用 Flask 写服务器端程序,讲路由、请求与响应、会话和 Cookie。作业是生日记录网站和一个模拟股票买卖网站 Finance。
- 10结课The End
最后一讲回顾整门课,以游戏和问答收尾,并引导学生开始期末项目。
- 期末期末项目Final Project
学生自选题目,用任意语言和技术做一个完整软件,并录制简短的演示视频。
哈佛的其他经典课
- CS50 Python 编程导论 · CS50's Introduction to Programming with Python
- 公正:该如何做是好? · Justice: What's the Right Thing to Do?
- 概率论(Stat 110) · Statistics 110: Probability
- 幸福之路:中国哲学教我们如何过好生活 · The Path to Happiness: What Chinese Philosophy Teaches Us about the Good Life
- ChinaX 中国通史系列(第 1 部分:从圣王到孔子) · ChinaX: China's Political and Intellectual Foundations: From Sage Kings to Confucius (Part 1 of the China series)
- 莎士比亚的《哈姆雷特》:鬼魂 · Shakespeare's Hamlet: The Ghost