Udacity CS212: Design of Computer Programs

Design of Computer Programs
Programming Principles
Instructor: Peter Norvig, Udacity
Zeitraum: Oktober 2012
Status: habe ich gemacht, inkl. Exams und Zertifikat

Anmerkung: Ganz klar einer der besten Kurse, die ich bisher besucht habe. Hirnwindtechnisch vl. der anspruchsvollste (Norvig ist wohl nicht der beste Pädagoge, aber ganz klar ein Genie).


Course Syllabus

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; Longest palindrome substring algorithm.

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.

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