Design of Computer Programs

Learn how to model problems, and how to optimize performance by using some of the advanced features of Python.

Design of Computer Programs

PriceFREE TRIAL

SchoolUdacity
ScheduleOn Demand
LocationOnline
Duration2 months
Credits0
More Details
Rating Not Rated
Reviews No Reviews
PopularityN/A
In CertificateNo
Difficultyadvanced
EffortN/A
Course DetailsCourse FAQ

Design of Computer Programs

### 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 Interviews and Practice Exam

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.

FAQ

### When does the course begin? This class is self paced. You can begin whenever you like and then follow your own pace. It’s a good idea to set goals for yourself to make sure you stick with the course. ### How long will the course be available? This class will always be available! ### How do I know if this course is for me? Take a look at the “Class Summary,” “What Should I Know,” and “What Will I Learn” sections above. If you want to know more, just enroll in the course and start exploring. ### Can I skip individual videos? What about entire lessons? Yes! The point is for you to learn what YOU need (or want) to learn. If you already know something, feel free to skip ahead. If you ever find that you’re confused, you can always go back and watch something that you skipped. ### How much does this cost? It’s completely free! If you’re feeling generous, we would love to have you contribute your thoughts, questions, and answers to the course discussion forum. ### What are the rules on collaboration? Collaboration is a great way to learn. You should do it! The key is to use collaboration as a way to enhance learning, not as a way of sharing answers without understanding them. ### Why are there so many questions? Udacity classes are a little different from traditional courses. We intersperse our video segments with interactive questions. There are many reasons for including these questions: to get you thinking, to check your understanding, for fun, etc... But really, they are there to help you learn. They are NOT there to evaluate your intelligence, so try not to let them stress you out. ### What should I do while I’m watching the videos? Learn actively! You will retain more of what you learn if you take notes, draw diagrams, make notecards, and actively try to make sense of the material.

Course provided by: Udacity