- Course participants are expected to be able to use Python and be familiar with the language's syntax. They are also expected to understand programming concepts like basic algorithms, data structures and lambda functions.
Knowing the right way to approach programming and create solutions is a crucial skill for any Python developer. This e-learning course is designed to guide participants through the methods, patterns and concepts that will grow coding abilities. Move from beginner to expert quickly with this highly engaging course led by programming savant, Peter Norvig.
PRACTICAL, HANDS-ON LEARNING
This course is designed to provide learners with the relevant practice necessary for moving from the description of a problem to formulating its solution. Working through a number of different assignments, learners will gain valuable techniques and shortcuts to implement when faced with programming challenges.
THIS DESIGN OF COMPUTER PROGRAMS COURSE IS DIVIDED INTO SEVEN LESSONS, INCLUDING:
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.
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.
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.
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.
Dealing with uncertainty through probability
- Probability: the game of Pig; Maximizing expected utility to optimize strategy.
- Managing complexity; Large sets of words; Appropriate data structures; Word games.
- Final exam/project
Who is this course for?
This Design of Computer Programs course is intended for anyone wanting to learn how to work through programming challenges.