名校公开课 / 普林斯顿 / 经典

计算机科学:有目的的编程

Computer Science: Programming with a PurposeCOS 126普林斯顿self-paced免费
Java 编程函数与递归性能分析面向对象数据类型

这门课学什么

这是普林斯顿计算机入门课 COS 126 的前半部分。课程用 Java 和科学计算例子讲编程:数据类型、循环、数组、函数、递归、性能分析和面向对象。共 10 个单元。

内容摘要

这门课是普林斯顿入门课 COS 126 的前半部分,用 Java 教零基础学生编程。它把编程当作解决科学和工程问题的工具,例子来自物理模拟、数字音频、图像处理和数据可视化。课程对应教材《计算机科学:跨学科方法》(Computer Science: An Interdisciplinary Approach)的前 3 章。

全课 10 讲,分 3 个阶段。第 1 阶段是第 1–4 讲,讲基本语法:数据类型、条件与循环、数组和输入输出。第 2 阶段是第 5–7 讲,讲怎样组织程序:函数与库、递归,以及用实验和数学模型分析性能。第 3 阶段是第 8–10 讲,讲数据抽象:先使用现成的数据类型,再自己创建数据类型,最后把 Java 放到编程语言的大图景里比较。

每讲配 1 个测验和 1 个编程作业。编程作业自动评分,多数预计约 8 小时。题目从 Hello World 开始,逐步做到递归绘图、性能实验和自定义数据类型。最后一个作业是条形图竞赛动画(Bar Chart Racer),把文件输入、数据类型和绘图结合起来。

学完以后,学生能用 Java 写出几百行的完整程序,能用标准输入输出和绘图库做数据处理和可视化,能估算程序的运行时间,并能设计简单的类。后续课程 Algorithms, Theory, and Machines 接着讲算法、计算理论和计算机硬件。

讲师是塞奇威克(Robert Sedgewick)和韦恩(Kevin Wayne)。讲课节奏紧凑,以短程序为中心。每讲都先给出一个能跑的小程序,再说明它用到的语言特性,最后给出可选的延伸材料。

为什么值得学

课程把编程当作做科学的工具来教,不是语言教程。零基础可以学。

课程信息

学校
普林斯顿(Princeton)
课程号
COS 126
讲师
罗伯特·塞奇威克(Robert Sedgewick)、凯文·韦恩(Kevin Wayne)
学期
self-paced
平台
Coursera
费用
免费
难度
入门
学时
约 2 个月 × 每周 10 小时
先修
无。
材料
视频、幻灯片、作业、教材
许可证
未注明
去课程主页 ↗
课程是英文的。本页的介绍、摘要和大纲由极客教育原创撰写,讲次标题为中文意译。开课时间、收费和链接以官方页面为准。

课程大纲 · 共 10 节

大纲依据:Coursera 模块列表(Lecture 1–10,每讲一个模块;结构取自 api.coursera.org onDemandCourseMaterials.v2 与课程页)(查看原始页面 ↗)

  1. 1
    基本编程概念Basic Programming Concepts

    讲为什么要学编程、Java 程序的开发流程、内置数据类型和类型转换。作业是 Hello World 一类入门练习。

  2. 2
    条件与循环Conditionals and Loops

    讲 if、while、for 语句和嵌套结构,并介绍调试方法。

  3. 3
    数组Arrays

    讲一维数组的基本用法、典型的数组处理代码和二维数组。

  4. 4
    输入与输出Input and Output

    讲标准输入输出和标准绘图库,用它们画分形图形和做动画。

  5. 5
    函数与库Functions and Libraries

    讲静态方法和模块化编程,案例是数字音频合成和高斯分布函数库。

  6. 6
    递归Recursion

    从标尺函数和汉诺塔讲起,再讲递归绘图、指数级重复计算的避免方法和动态规划。

  7. 7
    性能Performance

    用实验测量运行时间,再建立数学模型,并介绍倍率实验法(doubling method)。

  8. 8
    抽象数据类型Abstract Data Types

    讲如何使用现成的数据类型,例子是颜色、图像处理和字符串处理。

  9. 9
    创建数据类型Creating Data Types

    讲实例变量、构造函数、实例方法和测试用例,例子是点电荷、海龟绘图和复数。

  10. 10
    编程语言Programming Languages

    比较流行的编程语言,讲 Java 的定位、面向对象、类型检查和函数式编程。最后一个作业是条形图竞赛动画。

普林斯顿的其他经典课