MIT**********

advertisement
MIT计算机科学及编程导论
课程情况
http://ocw.mit.edu/courses/electrical-engineering-andcomputer-science/6-00-introduction-to-computer-scienceand-programming-fall-2008/index.htm
课程概况
 Instructor(s)
 Prof. Eric Grimson
 Prof. John Guttag
 MIT Course Number:6.00
 As taught in:Fall 2008(also in Fall 2007)
 edX version(www.edX.org):
 Fall 2012 (runs September 26, 2012 to January 14, 2013)
 Spring 2013 (runs February 4, 2013 to May 26, 2013)
 Level:Undergraduate
 No Chinese version in official
课程描述
 课程特点
 全程教学视频
 课程作业(无答案)
 课程测试样例(共3个,2个有解答,1个无解答)
 用于使学生了解课程测试中问题的形式
 课程描述
 面向无任何编程经验的学生
 课程目标是使学生了解计算在解决问题时所起到的作用,帮
助学生能够像一个计算机科学家一样思考问题
 另一个目标是帮助学生(无论其专业为何)获得在自己能力
范围内编写小型程序的自信心
 课程使用Python™ 语言
教学大纲
 讲课:2节/周,1H/节
 复习: 1节/周,1H/节
 目标:
 使学生了解计算在解决问题时所扮演的角色
 帮助学生, 包括那些不主修计算机课程的学生, 获得在自己能
力范围内编写小型程序的自信心
 使学生能够竞争参加UROPs(本科生研究机会计划)并为学
习其他相关课程(如6.01)打下基础
教学大纲(Cont.)
 授课和复习
 有些课程材料仅在授课时分发,所以学生必须到课
 复习课中学生可以对学习材料和课程作业中的问题进行答疑。
复习课到课情况在成绩中有所体现,但允许不参加。
 作业和测验
 每次作业都包含Python编程。学生应学会使用函数库来编写
解决实际问题的程序。
 共3次测验,2次在学期中,1次在期末考试期间。
教学大纲(Cont.)
 合作政策
 作业
 除非特别说明,作业允许”合作”完成,但应标明合作者姓
名。请不要抄袭前人的作业和课程“宝典”。
 需要合作完成的作业不允许独自完成。
 作业的目的是帮助你理解课程内容。
 理解程序代码以便为临时抽查做好准备。在抽查中,会要求
你在我们的注视下修改你的程序代码。
 …
 测验
 不允许合作完成
教学大纲(Cont.)
 成绩评定方法
活动
百分比
作业
55%
测验1
10%
测验2
15%
测验3(期末考试)
20%
 最多允许2次迟交作业,否则必须经过授课教师允许。
 教材
 无,大多数阅读材料需在线获取
 推荐参考书:
 Zelle, John. Python Programming: An Introduction to Computer
Science.
教学日历
课次
主题
1
Goals of the course; what is computation; introduction to data
布置Problem set 0
types, operators, and variables(目标, 计算, 数据类型、操作数和变量入门)
2
Operators and operands; statements; branching, conditionals,
and iteration(运算符和操作数, 语句, 分支, 条件, 循环)
Problem set 0截止
布置Problem set 1
3
Common code patterns: iterative programs(通用模板; 迭代程序)
Problem set 1截止
布置Problem set 2
4
Decomposition and abstraction through functions; introduction
to recursion(通过函数进行分解和抽象; 递归入门)
Problem set 2截止
布置Problem set 3
5
Floating point numbers, successive refinement, finding roots
关键日期
(浮点数, 逐步求精, 求平方根)
6
Bisection methods, Newton/Raphson, introduction to lists
7
Lists and mutability, dictionaries, pseudocode, introduction to
efficiency(线性表和易变性, 字典, 伪代码, 代码效率入门)
(对分法, 牛顿/拉富生方法, 线性表入门)
Problem set 3截止
布置Problem set 4
教学日历(Cont.)
课次
主题
关键日期
8
Complexity; log, linear, quadratic, exponential algorithms
Problem set 4到期
测验1
布置Problem set 5
(复杂度; 对数算法, 线性算法, 指数算法)
9
Binary search, bubble and selection sorts(折半查找, 冒泡和选择排序)
10
Divide and conquer methods, merge sort, exceptions
11
Testing and debugging(测试和调试)
12
More about debugging, knapsack problem, introduction to
dynamic programming(调试的进一步话题, 背包问题, 动态编程入门)
Problem set 6截止
布置Problem set 7
13
Dynamic programming: overlapping subproblems, optimal
substructure(动态编程, 重叠子问题, 最优子结构)
Problem set 7截止
布置Problem set 8
14
Analysis of knapsack problem, introduction to object-oriented
programming(背包问题分析, 面向对象编程入门)
(分治法, 归并排序, 异常)
Problem set 5截止
布置Problem set 6
教学日历(Cont.)
课次
主题
15
Abstract data types, classes and methods(抽象数据类型, 类和方法)
16
Encapsulation, inheritance, shadowing(封装, 继承, 隐藏)
Problem set 8截止
布置Problem set 9
测验2
Problem set 9截止
Computational models: random walk simulation
布置Problem set 10
17
关键日期
(计算模型: 随机游走模拟)
18
Presenting simulation results, Pylab, plotting
19
Biased random walks, distributions(有偏向的随机游走, 分布)
20
Monte Carlo simulations, estimating pi(蒙特卡罗模拟, 估算pi)
21
Validating simulation results, curve fitting, linear regression
(呈现仿真结果, 函数库(Pylab), 绘图)
(验证仿真结果, 曲线拟合, 线性回归)
Problem set 10截止
布置Problem set 11
Problem set 11 截止
布置Problem set 12
教学日历(Cont.)
课次
主题
22
Normal, uniform, and exponential distributions; misuse of
statistics(正态、均匀和指数分布; 滥用统计结果)
23
Stock market simulation(股票市场模拟)
24
Course overview; what do computer scientists do?
关键日期
Problem set 12截止
(课程复习; 如何像计算机科学家一样解决问题)
 共24讲,12次作业,3次测验(最后一次期末考试)
 以Python为工具,介绍如何在不同专业中应用计算
思维来解决问题
教学资源
 在线资源
 教学大纲、教学日历、阅读材料、教学视频、作业、
测验考试
 除教学视频外,可打包下载整个网站
 包括课堂材料(handout)和讲课录音文本
 教学视频可单独下载,国内有带中文字幕的下载
 网易公开课
http://v.163.com/special/opencourse/bianchengdaolun.html
阅读材料
 教材(2013年版):
 Guttag, John. Introduction to Computation and Programming
Using Python. MIT Press, 2013. ISBN: 9780262519632
 Free online Python text
 Think Python:How to Think Like a Computer Scientist (已下载)
 An Introduction to Python
 Python Programming
 每次授课的阅读材料以Think Python为主
Lecture’s readings
 Lectures 1-3
 Introduction: Chapter 1 of How to Think Like a Computer Scientist
 Variables and statements: Chapter 2 of How to Think Like a Computer Scientist
 Strings: Variables and strings section of Python Programming (also, the strings
section)
 Python variables are names: Other languages have "variables", from Code Like A
Pythonista: Idiomatic Python
 For PS0: Input/output section of Python Programming
 Conditionals: Chapter 4 of How to Think Like a Computer Scientist (through section
4.8), and the conditional statements section of Python Programming
 Iteration: Loops section of Python Programming
 Tuples: Tuples and sequences section of the Python Tutorial
 More on traversing and slicing strings: Chapter 7 of How to Think Like a Computer
Scientist
Lecture’s readings
 Lecture 4
 Functions, type conversion, and stack diagrams: Chapter 3 of How to
Think Like a Computer Scientist
 More about functions: Chapter 5 of How to Think Like a Computer
Scientist (through section 5.4)
 Recursion: Chapter 4 of How to Think Like a Computer Scientist (from
section 4.9 on), as well as Chapter 5 of How to Think Like a Computer
Scientist (from section 5.5 on)
 Lecture 5
 Numbers: Floating point arithmetic: issues and limitations from the
Python Tutorial
 Successive approximation: Wikipedia article on Newton's method
Lecture’s readings
 Lecture 6
 Lists: Chapter 8 of How to Think Like a Computer Scientist
 Dictionaries: Chapter 10 of How to Think Like a Computer Scientist
 As a reference: the Python Tutorial section on lists and dictionaries (feel
free to skip 5.1.3 and 5.1.4)
 Lectures 7-8
 Asymptotic notation: Section 3 from the Spring 2005 6.042 lecture notes
on OCW (PDF)
 Order of growth: Sections 2.1 and 2.2 from Computational Modeling and
Complexity Science
 Binary search: Wikipedia article on binary search (focus on the recursive
implementation in Section 4)
Lecture’s readings
 Lectures 9-10
 Selection sort: Wikipedia article on selection sort
 Insertion sort: Wikipedia article on insertion sort
 Merge sort: Wikipedia article on merge sort
 Lecture 12
 The knapsack problem and dynamic programming:
Introduction to dynamic programming on 20bits.com
Lecture’s readings
 Lectures 14-16





Chapter 12 of How to Think Like a Computer Scientist
Chapter 13 of How to Think Like a Computer Scientist
Chapter 14 of How to Think Like a Computer Scientist
Chapter 15 of How to Think Like a Computer Scientist
Chapter 16 of How to Think Like a Computer Scientist
 Lectures 17-19
 Random walks applet
 Matplotlib/pylab reference
 Lecture 20
 Monte Carlo method: Wikipedia article on the Monte Carlo method
课程视频
 全部24讲(已下载)
 迅雷格式xv(中文字幕)——共5GB
 Mp4格式(无字幕)——共2.53GB
 根据录音整理的讲课文本
 授课中使用的材料
作业
ASSN #
0
PROBLEM SETS
A very simple program: entering and printing your name (PDF)
1
Computing prime numbers, product of primes (PDF)
2
Diophantine equations (PDF)
3
Matching strings: a biological perspective (PDF)
4
Simulating a retirement fund (PDF)
5
Word games (PDF)
6
Word games 2 (PDF)
7
Review problems (PDF)
8
9
Dynamic programming (PDF)
Classes and methods (PDF)
Object-oriented programming; graphical user interface for word
game (PDF)
Simulating robots (PDF)
10
11
12
Simulating virus population dynamics (PDF)
测验
EXAMS
FILES
Quiz 1
Sample problems (PDF)
Solutions to sample problems (PDF)
Quiz 2
Sample problems (PDF)
Solutions to sample problems (PDF)
Quiz 3 (final exam)
List of topics covered (PDF)
Code sample for quiz (PY)
Explanation of code sample (PDF)
Sample problems (PDF)
测验
 Quiz 1(有参考答案)








正误选择(7)
阅读代码,回答问题(2)
编写函数(2)
编写伪代码(1)
根据函数定义编写代码(1)
改正代码错误(1)
编程(1)
阅读代码,写出函数定义(1)
测验
 Quiz 2(有参考答案)






正误选择(6)
阅读代码,回答问题(1)
理解概念(1)
编写伪代码(1)
根据函数定义编写代码(1)
编程(1)
测验
 Quiz 3




正误选择(5)
阅读代码,回答问题(2)
理解编程概念(1)
根据定义编写程序代码(1)
Download