名校公开课 / 哈佛 / 经典

CS50 计算机科学导论

CS50's Introduction to Computer ScienceCS50x哈佛2026免费
C 语言算法与数据结构PythonSQLWeb 开发

这门课学什么

这是哈佛的计算机入门课,每年更新。课程从 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 页面(查看原始页面 ↗)

  1. 0
    Scratch 与计算思维Scratch

    讲二进制、ASCII、Unicode 和 RGB 怎么表示信息,引出算法与运行时间。用 Scratch 演示函数、条件、循环和事件,作业是做一个 Scratch 作品。

  2. 1
    C 语言入门C

    从 Scratch 换到 C,讲编译、类型、变量、条件和循环,以及整数溢出和浮点误差。作业包括打印马里奥金字塔和找零或信用卡校验程序。

  3. 2
    数组与字符串Arrays

    拆开编译的 4 个步骤,讲调试方法、数组、字符串和命令行参数,并引入密码学。作业有 Scrabble 计分、文本可读性评级和凯撒或替换加密。

  4. 3
    算法Algorithms

    比较线性查找与二分查找,以及冒泡、选择、归并 3 种排序,引入大 O 记号和递归。作业是分析排序程序和实现多种投票计票规则。

  5. 4
    内存Memory

    讲指针、动态内存分配、栈与堆、缓冲区溢出和文件读写。作业是调整音频音量、给 BMP 图片加滤镜、从存储卡镜像恢复 JPEG。

  6. 5
    数据结构Data Structures

    讲抽象数据类型、队列、栈、链表、二叉搜索树、哈希表和字典树(trie)。作业是模拟血型遗传,以及用哈希表写一个快速拼写检查器。

  7. 6
    PythonPython

    用 Python 重写前几周的 C 程序,对比两种语言的写法和效率,讲模块与包。作业是把旧题改写成 Python,并做一个 DNA 序列比对程序。

  8. 7
    SQL 与数据库SQL

    讲表、数据类型、查询语句、约束、索引和事务,并讨论竞态条件和 SQL 注入。作业是查询歌曲和电影数据库,并用 SQL 破解一桩虚构案件。

  9. AI
    人工智能Artificial Intelligence

    介绍提示词工程、决策树、极小化极大搜索、强化学习、神经网络和 Transformer,并讨论大语言模型的幻觉问题。

  10. 8
    HTML、CSS 与 JavaScriptHTML, CSS, JavaScript

    先讲 TCP/IP、DNS 和 HTTP,再讲网页结构、样式和浏览器端脚本。作业是做一个问答小网页和一个个人主页。

  11. 9
    Flask 网页应用Flask

    用 Flask 写服务器端程序,讲路由、请求与响应、会话和 Cookie。作业是生日记录网站和一个模拟股票买卖网站 Finance。

  12. 10
    结课The End

    最后一讲回顾整门课,以游戏和问答收尾,并引导学生开始期末项目。

  13. 期末
    期末项目Final Project

    学生自选题目,用任意语言和技术做一个完整软件,并录制简短的演示视频。

哈佛的其他经典课