ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

MIT 6.00计算机科学与编程导论:用Python 3实战计算思维与算法

MIT 6.00计算机科学与编程导论:用Python 3实战计算思维与算法 很多零基础读者在后台问我同一个问题想认真学编程不从某一本 Python 语法书开始而是想系统地建立计算机科学思维应该从哪下手我的回答一般不是“买本语法大全”而是推荐一门经典公开课——MIT 6.00 计算机科学与编程导论。这门课全称是 Introduction to Computer Science and Programming2008 年秋季版是流传很广、口碑很好的一轮。它用 Python 作为教学语言但真正教的是计算思维如何把现实问题拆解成机械可执行的步骤再写成代码运行。本文会围绕课程核心内容整理一份适合自学和复习的路线同时给出大量可运行的 Python 实战代码并专门说明课程历史环境Python 2与当前主流环境Python 3的差异方便你照着做、排错和完成课程作业。这篇文章适合三类读者第一类是刚接触编程、想选一门系统入门课的新手第二类是学过 Python 语法但缺乏算法思维训练的开发者第三类是准备翻阅 MIT 公开课材料却卡在环境配置和语言版本差异上的自学党。读完你会有几方面收获清楚 MIT 6.00 的整体知识框架掌握 Python 基础语法和计算思维核心概念能独立完成课程中常见类型的编程作业遇到报错时知道按什么顺序排查最后还会有一条清晰的进阶学习路线。1. MIT 6.00 课程背景与学习价值1.1 什么是 MIT 6.00MIT 6.00 是麻省理工学院开设的一门本科导论课全称是 Introduction to Computer Science and Programming中文通常翻译为“计算机科学与编程导论”。2008 年秋季这轮课程由 Eric Grimson 和 John Guttag 两位教授主讲课程录像和讲义通过 MIT OpenCourseWare 平台对外公开所以全球各地都能看到原汁原味的课堂内容。它和很多“Python 速成课”最大的区别是语法只是载体课程重点在于教会学生用计算的方式思考和解决问题。所谓计算思维简单说就是“把问题形式化、把解法步骤化”。比如求一个数的平方根数学上可以直接写符号公式但计算机不知道你的公式是什么你必须告诉它每一步怎么迭代、循环什么时候停止、结果误差控制在多少。课程里反复出现的就是这类例子穷举搜索、二分法、牛顿迭代法、递归、复杂度分析。这些内容不会因为 Python 版本升级而过时反而构成了程序员最重要的底层能力。1.2 这门课解决什么问题初学者最大的困惑往往不是语法记不住而是“拿到问题完全没有思路”。给你一个打印九九乘法表的任务你会写循环但如果让你判断一段文本里出现频率最高的单词或者用程序模拟一个猜数字游戏很多人就不知道从哪里开始了。MIT 6.00 解决的正是这个断层它教会你先建立问题的计算模型再选择合适的数据结构和算法最后用 Python 把思路表达出来。课程还非常重视“程序为什么会出错”。MIT 6.00 不会只演示正确代码它会在课堂上展示错误写法分析运行时异常讨论为什么会得到错误结果。这个习惯被很多公司招聘官看重因为生产环境里最大的成本就是排查逻辑错误和边界条件。跟随这门课完成每一次 Problem Set你会逐渐养成写代码前先写伪代码、写完代码后做边界测试的习惯。1.3 为什么现在仍值得学习有人会觉得 2008 年的课程太旧Python 版本都变了学它还有什么用这类质疑有道理但忽略了课程的核心价值。MIT 6.00 的精华在于算法思想、程序抽象、复杂度评估和问题分解策略这些内容被后续的 6.0001 和 6.0002 完整继承。虽然现在 MIT 官网更常见的是更新版本但 2008 秋季版的课程视频至今仍是很多自学者公认讲得最清楚的一版原因在于教授会在黑板上手推过程节奏比新版更适合入门。当然语言版本差异是真实存在的。2008 年课程使用的是 Python 2 生态比如 print 语句不需要括号、输入用 raw_input()、整数除法默认截断。今天官方已经停止维护 Python 2新的学习环境基本是 Python 3。本文后面会专门给出兼容方案你不需要为了看旧课去安装 Python 2 环境只需要了解少量语法差异完全可以用 Python 3 跑通课程原版代码。1.4 学习收益与读者定位如果你决定跟着 MIT 6.00 学习按每周一章、每章完成一个 Problem Set 的节奏五到八周左右可以形成比较完整的编程基础。学完你会掌握Python 基本语法、函数与递归、常见数据结构字符串、列表、字典、文件读写、简单算法设计以及最基本的时间和空间复杂度概念。这些知识可以支撑你继续学习数据结构和算法、Web 开发或者转向数据分析方向。课程定位是“导论”所以不适合完全没有任何操作经验的人我的看法相反正因为它默认学生没有编程背景讲解非常细致零基础反而能跟上。真正需要注意的是公开课没有任何监督你必须有动手解作业的自觉。视频看十遍不如自己敲一遍这也是学习这门课最核心的纪律我会在第 7 章专门讲作业方法。2. 课程内容体系与知识框架2.1 核心主题MIT 6.00 的 36 节课程大致可以分成几个知识模块第一个模块是编程基础包括 Python 语法、变量、表达式、分支、循环、函数和递归第二个模块是数据结构包括字符串、元组、列表、字典第三个模块是算法与复杂度会引入大 O 记号分析不同算法的效率第四个模块是计算模型比如穷举法、二分法、牛顿迭代法、贪心算法和动态规划的初步思想第五个模块是工程实践包括文件读写、异常处理、模块化设计和测试方法。这些主题看起来多但彼此衔接很自然。前两周把语法基础打牢第三周进入递归和函数抽象第四周开始处理更复杂的数据结构最后几周再把算法设计和复杂度思想串起来。每节课都配了对应的 Problem Set作业难度会从“打印菱形图案”逐步过渡到“实现猜单词游戏”这类综合任务。课程测验通常会覆盖编程题和对理解类概念的笔试考察点很全面。2.2 语言工具Python 2 与 Python 3 的差异这是跟着旧课学习时最需要解决的问题。你在课程视频里会看到教授使用 IDLE 编辑器代码风格是 Python 2比如print语句不带括号、raw_input接收键盘输入、整数除以整数得到整数。现在这些写法在 Python 3 里大多会直接报错。为了不浪费时间你可以把下面这张差异表存下来遇到报错时查一下。Python 2 写法Python 3 写法说明print helloprint(hello)print 变成了函数raw_input(请输入)input(请输入)Python 3 的 input 直接返回字符串9 / 2结果是49 / 2结果是4.5//才是整除Python 3 的普通除法保留小数x 10 / 3会截断需要写成10 // 3整数除法语义发生变化默认ASCII编码默认UTF-8编码中文处理更方便xrange(1000)range(1000)range 返回可迭代对象如果你在跟着课程视频敲代码建议用 Python 3 环境运行遇见print是语句的旧示例手动加上括号遇见raw_input直接替换成input遇见除法结果不对检查是不是需要使用//或把某个操作数写成浮点数。改完这些课程里 90% 的代码都能在 Python 3 下运行。2.3 作业、测验与项目结构MIT 6.00 的作业体系很重要它的 Problem Set 不是简单练习题而是需要独立完成的小型编程项目。通常一个 Problem Set 会包含若干道题目前面几题是热身后面 1-2 题需要综合运用当前的语法知识。例如第一周作业可能是写一个简单的数值计算器第二周可能会让你写一个判断闰年的程序到中后期就会出现猜单词、纸牌游戏等完整项目。课程还安排了阶段测验用来检验对概念和代码的理解。你在 OCW 页面上可以看到历年的测验题目和部分答案很适合自测。我的建议是不要只盯着视频看拿到 Problem Set 后先自己设计实现再对照课程提供的测试用例验证。哪怕一开始做不出来也要写下自己的思考过程再去参考样例代码这样收获比直接抄答案大得多。3. 环境准备搭建本地 Python 学习环境3.1 安装 Python 解释器为了让后面的代码示例顺利运行第一步是在本地安装 Python 3。推荐从 Python 官网下载当前稳定版安装时有一个容易忽略的选项Windows 用户记得勾选Add Python to PATH否则在命令行输入python会提示找不到命令。macOS 用户也可以通过 Homebrew 安装但更稳妥的方式同样是官网安装包。安装完成后打开终端Windows 下是 CMD 或 PowerShellmacOS 下是 Terminal输入以下命令检查版本python --version如果显示类似Python 3.10.11的输出说明环境已经可以使用。需要注意不同操作系统上命令可能是python或python3后者多见于 macOS 和 Linux。只要版本是 3.6 以上本文的示例都可以运行。虽然 MIT 6.00 课程视频使用 Python 2但我们不会为了迁就旧课安装老环境后续所有演示都基于 Python 3。3.2 选择 IDE 或编辑器课程视频里使用的是 IDLE这是 Python 官方自带的一个极简开发环境随安装包一起提供在命令行输入idle可以启动。如果你想完全还原课程体验用 IDLE 是没问题的它对初学者非常友好打开就能写代码按 F5 直接运行当前文件。不过我更推荐两位更现代的选择如果你喜欢轻量编辑器和命令行可以用 VS Code安装Python扩展后即可获得代码补全、调试器、语法检查等功能如果你喜欢开箱即用的工程化环境PyCharm 社区版也完全免费。IDE 的选择是个人习惯问题不会影响 MIT 6.00 的学习效果关键是代码能跑起来并且你愿意多打几遍。3.3 运行第一个 Python 程序我们写一个稍作扩展的入门程序体验完整流程。先创建一个项目目录比如mit600在里面新建文件hello.py写入以下代码# 文件路径mit600/hello.py print(Hello, MIT 6.00!) name input(请输入你的名字) print(你好 name 欢迎开始学习计算机科学与编程导论。)在终端进入项目目录然后运行python hello.py程序会先输出问候语等待输入名字再输出一行欢迎信息。这段代码虽然简单却展示了三件事print 输出、input 输入、字符串拼接。在 Python 2 中第一行和第三行需要去掉括号输入函数要写成raw_input(请输入你的名字)。如果你看了课程视频想跟着敲记住这个差异就够了。4. Python 核心语法与编程导论重点4.1 变量、表达式与类型MIT 6.00 第一周的核心是让初学者理解“程序是对数据做操作”。Python 是一种动态类型语言你不需要提前声明变量类型解释器会根据赋值自动推断。下面是最基础的表达式示例# 文件路径mit600/basics.py x 3 y 4.5 name Python is_learning True print(x y) # 7.5 print(x * y) # 13.5 print(name.upper()) # PYTHON print(not is_learning) # False这里可以看到整数、浮点数、字符串和布尔值四种基本类型。在 Python 3 中3 / 2会得到1.5而3 // 2会得到1这就是第 2 章提到的整数除法变化。很多 MIT 6.00 早期作业会故意考察这种边界问题让你体会为什么程序要对数据的“类型”敏感。另一个重要概念是“动态类型但不意味着可以随意混用”。比如执行abc 123Python 会抛出TypeError因为字符串和整数不能直接拼接。这时候你应该用str(123)转换类型或者用格式化字符串。理解类型转换可以避免非常多的初级报错。4.2 条件分支、循环与函数抽象这一部分对应课程中“控制流”和“函数”两讲。编程语言里最基本的能力就是做判断和重复执行Python 的if / elif / else与for / while结构非常直观。我们用一个例子综合展示def classify_number(n): 根据数字 n 的奇偶性和正负性返回描述字符串。 if n % 2 0: print(n, 是偶数) else: print(n, 是奇数) if n 0: print(n, 是正数) elif n 0: print(n, 是负数) else: print(n, 是零) for i in range(-2, 3): classify_number(i)这段代码定义了一个函数classify_number函数体内部使用条件分支主程序用for循环遍历从 -2 到 2 的数字。函数抽象是 MIT 6.00 很强调的内容把一段逻辑封装成函数调用方不需要关心内部实现只需要知道输入输出。这个思想后续会延伸到递归、模块化和面向对象。在 Python 2 中print(n, 是偶数)会被解释成打印一个元组因此输出带括号。为了让 Python 2 兼容课程老代码通常写作print n, 是偶数。我们在 Python 3 中使用函数调用形式即可。实际写作业时建议从第一个程序开始就保持“参数清晰、返回明确”的风格。4.3 字符串、列表、字典与集合MIT 6.00 在课程中段进入数据结构章节。字符串是不可变序列列表是可变序列字典是键值对映射集合是无重复元素的容器。掌握这些数据结构是解决复杂问题的前提。下面这段代码展示了几种主要操作# 字符串基本操作 s hello world print(s[0]) # h print(s[-1]) # d print(s.split()) # [hello, world] print(s.upper()) # HELLO WORLD # 列表操作 nums [3, 1, 4, 1, 5] nums.append(9) nums.sort() print(nums) # [1, 1, 3, 4, 5, 9] # 字典操作 word_count {the: 5, and: 3} word_count[python] 2 print(word_count.get(java, 0)) # 0不存在时返回默认值 # 集合操作 unique set(nums) print(unique) # {1, 3, 4, 5, 9}需要特别注意列表是可变对象函数里直接修改列表会影响外部数据。MIT 6.00 的教授们反复提醒如果不想让函数修改原列表使用nums_copy nums[:]生成副本。字典用get方法比直接下标访问更安全它可以在键不存在时返回默认值这也是后面词频统计作业里最常用的技巧。4.4 文件读写与异常处理课程后半程会涉及从文件读取数据。Python 的文件操作非常简洁推荐使用with语句它会在代码块结束自动关闭文件不用手动调用close()。下面的示例读取一个文本文件统计总行数和总字符数# 文件路径mit600/count_file.py file_path sample.txt with open(file_path, r, encodingutf-8) as f: line_count 0 char_count 0 for line in f: line_count 1 char_count len(line) print(总行数, line_count) print(总字符数, char_count)运行前需要先创建sample.txt或者在代码里改成你自己的文件路径。文件读写过程中最常见的错误就是路径不对或编码不支持所以我建议写文件时都显式指定encodingutf-8。如果文件不存在open 会抛出FileNotFoundError这属于运行时异常下一篇常见错误章节会详细说明如何捕获。5. 典型作业与练习实战5.1 用穷举法求平方根穷举法Exhaustive Enumeration是 MIT 6.00 推出的第一个算法思想从小到大逐个尝试直到找到满足条件的解。先看一个非常简单的版本def sqrt_by_exhaustive(x, epsilon0.01): 用穷举法逼近 x 的平方根epsilon 为允许误差。 guess 0.0 step epsilon ** 2 num_guesses 0 while guess * guess x: guess step num_guesses 1 if abs(guess * guess - x) epsilon * 2: return guess - step, num_guesses else: return None, num_guesses result, times sqrt_by_exhaustive(9) print(近似平方根, result) print(尝试次数, times)这段代码的问题在于效率很低。step越小结果越精确但循环次数会指数级增加。如果对 10000 求平方根循环可能要执行上亿次。教授正是用这种“笨办法”引出效率分析同一个问题不同算法的时间开销天差地别。你需要理解为什么不能用过小的step也要理解while循环终止条件为什么是guess * guess x。5.2 用牛顿-拉弗森法求平方根穷举法太慢MIT 6.00 紧接着会讲牛顿迭代法。牛顿法的核心是从某个初始猜测值出发不断用切线逼近零点。对平方根sqrt(x)来说迭代公式是guess (guess x / guess) / 2。下面是 Python 3 实现def sqrt_newton(x, epsilon0.01): 使用牛顿-拉弗森法求 x 的平方根。 if x 0: raise ValueError(不能对负数求平方根) guess x / 2.0 while abs(guess * guess - x) epsilon: guess (guess x / guess) / 2.0 print(当前猜测值, guess) return guess result sqrt_newton(9) print(平方根近似, result)运行后会看到猜测值快速逼近 3.0。牛顿法相比穷举法最直观的进步是需要的迭代次数大幅减少而且初始值选择得当收敛速度非常快。教授在课堂上会对比两种方法的尝试次数这是后面复杂度分析的启蒙案例。如果你在 Python 2 上运行务必把x / 2.0写成浮点数除法写成x / 2在旧版本里会截断导致结果完全不对。5.3 判断回文字符串回文判断是递归章节的经典练习。一个字符串是回文当且仅当首尾字符相同并且去掉首尾后的子串仍然是回文。用递归表达非常自然def is_palindrome(s): 递归判断字符串 s 是否为回文。 s s.lower() if len(s) 1: return True if s[0] ! s[-1]: return False return is_palindrome(s[1:-1]) print(is_palindrome(racecar)) # True print(is_palindrome(hello)) # False print(is_palindrome(A man a plan a canal Panama)) # False因为忽略空格后才是回文最后一个例子说明这个简单版本没有处理空格如果希望忽略空格和标点可以在递归前先做过滤。MIT 6.00 非常强调“先确定基本情况和递归步骤”的思路基本情况就是长度小于等于 1递归步骤就是比较首尾字符然后调用自身。写递归时最大的坑是忘记基本情况导致无限调用最终触发RecursionError。如果你遇到这个报错第一反应应该检查递归终止条件。5.4 单词频率统计这个综合练习结合了文件读写、字典和字符串处理非常接近真实任务。假设我们有一个英文文本sample.txt希望统计每个单词出现的次数并输出出现次数最多的三个词。完整代码如下# 文件路径mit600/word_freq.py import string def clean_word(word): 去除单词首尾标点并转为小写。 return word.strip(string.punctuation).lower() word_count {} with open(sample.txt, r, encodingutf-8) as f: for line in f: words line.split() for word in words: word clean_word(word) if word: word_count[word] word_count.get(word, 0) 1 sorted_words sorted(word_count.items(), keylambda item: item[1], reverseTrue) print(总单词种类, len(word_count)) print(出现频率最高的 3 个单词) for word, count in sorted_words[:3]: print(word, :, count)先用split()把行切分成单词再用strip()去掉单词两端的标点最后用字典记录频次。word_count.get(word, 0)是安全的写法如果单词不存在就返回 0避免KeyError。最后用sorted的key参数按出现次数排序取前 3 个即达到目标。这道题在课程里属于中上难度完成它可以同时巩固多个核心知识点也是后面学习复杂数据结构前的绝佳热身。6. 常见错误与排查思路6.1 语法错误语法错误是解析阶段就发生的错误Python 无法理解你的代码最常见的表现是SyntaxError: invalid syntax。这类问题通常来自少了冒号、括号不匹配、引号没有成对、把 Python 2 的print语句当成 Python 3 用。比如在 Python 3 中写print hello很快会看到SyntaxError: Missing parentheses in call to print。遇到语法错误不用紧张错误信息会提示出错的行号。按照行号检查上一行和当前行即可因为某些语法错误会被解释器延迟到下一行才报告。对于括号和引号建议在 IDE 里打开语法高亮VS Code 和 PyCharm 都能在输入时显示括号匹配这能提前拦截大量低级错误。6.2 运行时异常代码能解析但运行到某一步时崩溃就属于运行时异常。常见的运行时异常包括TypeError、NameError、IndexError、KeyError、FileNotFoundError、ZeroDivisionError。比如对字符串取下标s[100]会得到IndexError对不存在的字典键做word_count[java]会得到KeyError。捕获异常不是目的更重要的是理解异常出现的原因。MIT 6.00 的练习经常故意设计这些边界情况比如输入空列表、输入 0、输入负数。你可以在代码中主动抛出异常例如平方根函数对负数输入使用raise ValueError也可以使用try / except捕获外部输入导致的错误但不要把try / except当成扑克牌一样到处乱贴良好的参数校验和边界检查才是根治方案。6.3 逻辑错误与调试逻辑错误最隐蔽程序不报错但结果不对。这类问题通常出在没有考虑边界条件、算法公式写错、循环范围多一项或少一项。遇到逻辑错误教授在课程里反复推荐的方法是“在关键位置打印中间变量”。比如牛顿法里每个猜测值都输出你能立刻看出迭代是不是在向正确方向收敛在循环里输出索引你能发现是不是访问越界。更系统的方法是学习使用单元测试思想。把函数拆小然后对每个函数写几个测试用例覆盖正常输入、边界输入和异常输入。比如回文函数测试、a、ab、abba能快速找到递归边界错误。不要只测一个用例就认为代码正确这是初学者最容易犯的乐观错误。6.4 常见新手报错速查表问题现象常见原因解决思路SyntaxError: invalid syntax冒号、括号、引号缺失根据行号检查语法并统一 Python 3 风格NameError: name xx is not defined变量名拼写错误或未定义检查大小写、函数调用顺序TypeError: can only concatenate str不同类型数据直接拼接使用str()或格式化字符串IndexError: list index out of range访问不存在的列表下标打印len(list)检查循环边界KeyError: xx字典键不存在用dict.get(key, default)ZeroDivisionError: division by zero除数为 0增加对 0 的输入检查RecursionError: maximum recursion depth exceeded递归缺少基本情况检查递归终止条件FileNotFoundError文件路径错误打印当前工作目录使用绝对路径这张表可以作为你的调试清单。报错信息先在脑内翻译成上面某一类再定位到具体代码行。长期下来你会形成一种直觉看到IndexError就想长度看到KeyError就想get看到RecursionError就想 base case。这种直觉正是课程真正想培养的能力。7. 学习建议与工程习惯7.1 如何高效完成课程作业看完一节课不代表学会完成对应的 Problem Set 才算有真实反馈。我建议你制定一个固定节奏每周看两到三节视频分别完成配套作业每个 Problem Set 至少预留两到三小时如果超过四小时没有思路允许查看官方提示但必须先把卡住的位置和尝试过的方案记录下来。这样即使参考了答案你也知道自己差在哪一步。动手前先在纸上写伪代码。伪代码不需要严格语法只要逻辑顺序清楚。例如猜单词程序可以先写读取单词列表 → 随机选一个词 → 循环询问用户 → 判断字母是否在词内 → 更新显示进度 → 判断是否猜完或超过次数。这种设计的价值在于把复杂任务拆成小步骤避免直接写代码时迷失方向。写完伪代码再翻译成 Python编程过程会顺畅很多。7.2 代码规范与小函数原则MIT 6.00 课程不是专门的软件工程课但教授们会在课堂上强调好的代码风格。第一点是函数尽量小一个函数只做一件事。如果你发现单个函数超过二十行通常可以拆成两个。第二点是命名要具有描述性变量名用word_count而不是wc函数名用count_words而不是fun2。第三点是注释解释原因而不是重复代码例如“这里加 1 是因为下标从 0 开始”比“i 加一”有价值得多。还有一点容易被新手忽略不要在函数里直接修改全局变量。Python 默认规则是函数内部对变量赋值不会影响外部同名变量理解作用域能避坑。如果确实需要修改外部状态应该显式声明global或nonlocal但这种写法在课程阶段尽量少用更好的做法是让函数通过返回值通信。7.3 从导论到进阶的路线学完 MIT 6.00 之后下一步的方向取决于你的目标。如果目标是算法和竞赛可以学习 MIT 6.006 Introduction to Algorithms或者阅读经典的《算法导论》部分章节。如果目标是数据分析可以先补充 Python 的 NumPy、Pandas 基础再学习概率统计和机器学习入门。如果目标是 Web 开发可以学习 Flask 或 Django 框架并把课程里的文件处理和结构化设计思想迁移过去。这条路线里课程 6.0002 是最自然的衔接课它延续 6.00 的内容讲解计算思维在数据科学和仿真中的应用。看过 6.00 后直接进入 6.0002 能保持思维连续性。不过要提醒一句任何公开课都有时间成本不要同时开多门课专注完成一门再进入下一门效果远比“收藏一堆课程”好。7.4 保持练习节奏公开课最大的敌人是遗忘和拖延。编程知识必须靠练只看不写等于没学。建议每天至少留出半小时写代码即使不推进课程主线也可以回做之前 Problem Set 的变体题。比如你已经实现了回文判断可以把输入从单个单词改成整个句子增加忽略空格和标点的逻辑然后测试各种边界条件。这种刻意练习能让知识真正变成技能。如果中途卡住想放弃记住 MIT 6.00 的视频讲解在网络上是开放的你可以在社区讨论区、编程学习群里提问或者回去复习前几节视频。每个人学编程的瓶颈都不是智商而是连续投入的时间。坚持完成第一周的作业后面会越来越顺。8. 总结与实际落地建议8.1 关键收获回顾这篇文章围绕 MIT 6.00 计算机科学与编程导论梳理了课程背景、知识框架、Python 3 环境搭建、核心语法和典型实战案例同时给出了新旧 Python 版本的兼容方案。现在你应该能理解MIT 6.00 的价值并不在于让你背熟 Python 语法而在于帮助你建立计算思维学会用穷举、二分、牛顿迭代、递归等思想解决问题。如果你是一名零基础学习者今天至少可以完成三件事配置好本地 Python 环境、运行第一个输入输出程序、跟着第 5 章的示例完成平方根和回文练习。如果这些代码都能顺利运行说明你已经具备继续跟进课程的基础。8.2 下一步行动不要再把 MIT 6.00 放在收藏夹里吃灰了。建议你在本周内做两件事第一打开 MIT OCW 的课程主页找到 2008 秋季的课程目录确认第一周的阅读材料和作业列表第二把本文第 5 章的代码完整敲一遍并为每个函数补充两组边界测试用例。用这样的节奏推进下去你离“能独立完成综合编程项目”并不远。如果你能完成猜单词类的综合项目说明你已经正式跨过编程入门的分水岭接下来可以放心进入算法或数据方向的学习。
返回列表