## Design of Computer Programs

 所在平台: Udacity 课程类别: 计算机科学 大学或机构: Udacity Self

#### 课程详情

Move along the path towards becoming an expert programmer! In this class you will practice going from a problem description to a solution, using a series of assignments.

Lesson 1: Winning Poker Hands
Steps of the design process; Developing for clarity and generality; Arguments for program correctness; Experimentation and simulation.; Design tradeoffs; Simplicity and Clarity. Decomposition and composability.

Lesson 2: Back of the Envelope
Back of envelope calculations; When to use brute force and when to be clever; The Zebra puzzle; Generator expressions; Permutations and combinations. Cryptarithmetic; Recursive and wishful thinking.

Lesson 3: Regular Expressions, other languages and interpreters
Defining the language of regular expressions; Interpreting the language; Defining the set of strings matched by a regular expression;
Other languages.

Lesson 4: Dealing with complexity through search
Search: finding your way with a flashlight or boat; pouring water. Analyzing the efficiency of an algorithm; Recurrence relations; Matching data types with algorithms; Longest palindrome substring algorithm.

Lesson 5: Dealing with uncertainty through probability
Probability: the game of Pig; Maximizing expected utility to optimize strategy.

Lesson 6: Word Games
Managing complexity; Large sets of words; Appropriate data structures; Word games.

Lesson 7: Conclusion
Final exam/project

#### 课程评论(4条)

 0 大吃一惊异 2014-06-29 12:29 0 票支持; 0 票反对 对这门课有复杂的情感。一方面，Norvig讲课很好，他选的几个topic我挺喜欢的（搜索，造工具，概率reasoning等等），看大神解决问题的过程很过瘾。另一方面，他让学生实践的切入点通常是通过各种游戏和puzzle，这个不太对我胃口。本人对扑克，保龄球，飞镖什么的一点都没兴趣，为了完成作业还得实现他们的规则，略感蛋疼。最大的收获是bird by bird。
 2 52nlp 2014-02-26 09:18 2 票支持; 0 票反对 战战兢兢，如履薄冰的完成了这门课程，也是我在Udacity上耗时最长的课程，不过毕竟是Peter Norvig大牛的课程，同时作为Udacity的联合创始人，这门课真心不错。每个单元都围绕一个或多个有意思的问题展开，基本上是问题驱动式的编程，很多时候自己用笨拙的方法解决完一个问题后，再看Norvig大牛的答案，常常有原来可以如此简单而优雅的Python解决方案。不过课程难道确实很大，但是内容很厚实，非常非常推荐，比较适合有一定编程及Python基础的同学来尝试。
 1 要有光LTBL 2013-10-17 13:46 1 票支持; 0 票反对 一开始学编程就上了这门课，难度相当之高，每周作业都觉得我肯定写不出来。。。虽然最后都写出来了吧＝ ＝ 如果能上下来收获也是非常非常非常大的。讲得也很好，讲完了最后一段视频跟第一段比感觉老师苍老了很多。。。
 2 wzyer 2013-05-22 15:52 2 票支持; 0 票反对 Peter Norvig的名气让我选了这门课。考虑到他的著名lisp程序员身份，这门课可能会有点偏函数式编程。而且我觉得这门课还是有一定难度，不建议新手选择。不过，能亲眼看到大师给你敲代码，解决问题，绝对是一个不能错过的体验。

#### 课程简介

Learn new concepts, patterns, and methods that will expand your programming abilities, helping move you from a novice to an expert programmer.

#### 课程标签

Peter-Norvig Google 程序 程序设计 编程 计算机程序设计 Python编程 Python Python程序设计