Design of Computer Programs

Online Course

Design of Computer Programs

What is the course about?

Design of Computer Programs
The course Design of Computer Programs is an online class provided by Udacity. The skill level of the course is Advanced. It may be possible to receive a verified certification or use the course to prepare for a degree.

Understanding how to approach programming problems and devise a solution is an essential skill for any Python developer. In this course, you’ll learn new concepts, patterns, and methods that will expand your coding abilities from programming expert, Peter Norvig.

Course description
  • Design of Computer Programs
  • 2 months
  • Programming Principles
  • Winning Poker Hands
  • Back of the Envelope
  • Regular Expressions, other languages and interpreters
  • Dealing with complexity through search
  • Dealing with uncertainty through probability
  • Word Games
  • Conclusion
  • Steps of the design process and developing for clarity and generality.
  • Arguments for program correctness and experimentation and simulation.
  • Design tradeoffs; Simplicity and Clarity. Decomposition and composability.
  • 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.
  • Defining the language of regular expressions and Interpreting the language.
  • Defining the set of strings matched by a regular expression
  • Other languages.
  • Search: finding your way with a flashlight or boat.
  • Analyzing the efficiency of an algorithm.
  • Recurrence relations and Matching data types with algorithms.
  • Probability: the game of Pig.
  • Maximizing expected utility to optimize strategy.
  • Managing complexity.
  • Large sets of words.
  • Appropriate data structures.
  • Interviews and practice exam.
  • This course is intended for experienced Python programmers; students should be familiar with the Python syntax, as well as familiar with the following programming concepts: data structures, basic algorithms, and lambda functions.
  • This course is intended to challenge you. Be ready to struggle (and learn)!
  • See the Technology Requirements for using Udacity.
  • 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. During office hours segments, Peter will also share his own personal tips and tricks for approaching programming problems – and his techniques may surprise you!

Prerequisites & Facts

Design of Computer Programs

Course Topic

Computer Science, Programming

University, College, Institution


Course Skill Level


Course Language


Place of class

Online, self-paced (see curriculum for more information)



Degree & Cost

Design of Computer Programs

To obtain a verified certificate from Udacity you have to finish this course or the latest version of it, if there is a new edition. The class may be free of charge, but there could be some cost to receive a verified certificate or to access the learning materials. The specifics of the course may have been changed, please consult the provider to get the latest quotes and news.
Design of Computer Programs
provided by Udacity


[display-frm-data id=”8278″ filter=”1″]

Share your experience

Design of Computer Programs
Udacity Udacity
Rate the course

Do you recommend the course? *
Here you can find information, reviews and user experiences for the course “Design of Computer Programs“. The provider of the course – “Udacity” – will be glad to answer any questions you may have about the class, click here to use the offical support channels. It would be great if you could share your experience of participating in the course – Your honest review will surely help others to choose the right class!
School: Udacity
Topic: Computer Science, Programming