名校公开课 / 哈佛 / 经典

CS50 Python 编程导论

CS50's Introduction to Programming with PythonCS50P哈佛2022 (videos); self-paced免费
Python 基础异常处理单元测试正则表达式面向对象编程

这门课学什么

这门课只讲 Python,面向零基础。内容有函数、条件、循环、异常、单元测试、第三方库、文件读写、正则表达式、面向对象。每周有自动评分练习,最后做 1 个项目。

内容摘要

CS50P 是 CS50 系列里专讲 Python 的入门课。它不讲计算机底层,只讲怎么用 Python 写出正确、好读、可测试的程序。课程适合零基础的人,也适合学过别的语言、想系统补 Python 的人。

课程按“语法 → 健壮性 → 工程化”3 个阶段展开。第 1 阶段是 Week 0–2,讲函数、变量、条件和循环,以及列表和字典。第 2 阶段是 Week 3–5,讲异常处理、第三方库和单元测试,教学生写出不容易崩溃、可以自动验证的代码。第 3 阶段是 Week 6–9,讲文件读写、正则表达式和面向对象编程,最后一讲补齐类型提示、生成器、推导式这些进阶写法。

每周有 1 套习题,每套 4–6 道小题,全部由自动评测程序打分。题目贴近日常:计算小费、做自动售货机、校验车牌、解析日期、调用比特币价格接口、处理 CSV 文件、用正则表达式校验 IP 地址、生成带文字的 T 恤图片。从 Week 5 开始,学生还要给自己的代码写 pytest 测试。课程最后是期末项目,要求用 Python 写一个程序,至少包含 3 个带测试的函数。

学完以后,学生能独立写 Python 命令行程序,会读文档、装库、写测试,能处理文本和文件数据,并能看懂中等规模的面向对象代码。这些能力可以直接衔接 CS50 的数据科学、人工智能和 Web 课程。

讲课人是大卫·马兰(David J. Malan)。他在每讲里边讲边写代码,常常先写一个有问题的版本,再一步步改好,让学生看到程序员真实的思考过程。每讲配有讲义、源代码和多段短视频(Shorts)。

为什么值得学

这是 CS50 家族里最容易入门的一门。学完可以直接接 CS50AI 和数据科学课。

课程信息

学校
哈佛(Harvard)
课程号
CS50P
讲师
大卫·马兰(David J. Malan)
学期
2022 (videos); self-paced
平台
课程官网 + edX + YouTube
费用
免费
难度
入门
学时
10 周(Week 0–9),每周 1 讲加 1 套习题
先修
无。
材料
视频、讲义、作业、代码
许可证
CC BY-NC-SA 4.0
去课程主页 ↗看视频 ↗
课程是英文的。本页的介绍、摘要和大纲由极客教育原创撰写,讲次标题为中文意译。开课时间、收费和链接以官方页面为准。

课程大纲 · 共 11 节

大纲依据:CS50P 课程官网周列表(Week 0–9)与各周 Problem Set 页面,配合 YouTube 播放列表(查看原始页面 ↗)

  1. 0
    函数与变量Functions, Variables

    讲函数、参数、返回值、变量、字符串、整数和浮点数,并自己定义函数。作业是大小写转换、表情替换和小费计算这类小程序。

  2. 1
    条件Conditionals

    讲 if、elif、else、布尔表达式和 match 语句。作业包括判断文件类型、解析算式和按时间判断用餐时段。

  3. 2
    循环Loops

    讲 while 和 for 循环,以及列表、字典和 range。作业包括驼峰命名转换、自动售货机找零和车牌号校验。

  4. 3
    异常Exceptions

    讲 try、except、else 和 raise,让程序在用户输错时不会崩溃。作业包括油量表换算、点餐计价和日期格式转换。

  5. 4
    库Libraries

    讲模块、命令行参数、pip 安装第三方包、调用网络 API 和解析 JSON。作业包括猜数字游戏、算术练习和查询比特币价格。

  6. 5
    单元测试Unit Tests

    讲 assert 和 pytest,教学生把代码拆成可测试的函数。作业是给前几周写过的程序补上测试。

  7. 6
    文件读写File I/O

    讲打开、读取和写入文件,处理 CSV 数据,并用 Pillow 库处理图片。作业包括统计代码行数、把 CSV 转成表格和给图片叠加 T 恤图案。

  8. 7
    正则表达式Regular Expressions

    讲正则表达式的语法、捕获组,以及 re 模块的查找、匹配和替换函数。作业包括校验 IPv4 地址、提取 YouTube 链接和转换时间格式。

  9. 8
    面向对象编程Object-Oriented Programming

    讲类、对象、属性、方法、property 装饰器、类方法、静态方法、继承和运算符重载。作业包括计算年龄分钟数、实现饼干罐类和生成 PDF 证书。

  10. 9
    其他进阶主题Et Cetera

    补充集合、全局变量、类型提示与 mypy、文档字符串、argparse、可变参数、推导式、map 与 filter、生成器。本周没有习题。

  11. 期末
    期末项目Final Project

    学生自选题目写一个 Python 程序,必须有 main 函数和至少 3 个配 pytest 测试的函数。

哈佛的其他经典课