Design of Computer Programs
Peter Norvig
GO » Write a Review |
People interested in this course were also interested in
![]() |
Computer Networks University of Washington — Arvind Krishnamurthy, David Wetherall, John Zahorjan |
3 Reviews |
![]() |
Probabilistic Graphical Models Stanford University — Daphne Koller |
7 Reviews |
![]() |
CS184.1x: Foundations of Computer Graphics UC Berkeley — Ravi Ramamoorthi |
0 Reviews |
| Learning From Data California Institute of Technology — Yaser Abu-Mostafa |
0 Reviews |
|
![]() |
Algorithms Michael Littman |
1 Review |
10 Reviews
|
4
|
Not to take anything away from many of the quality courses available, but CS212 is probably the single best course on Udacity, Coursera and EdX combined (I've probably gone through about 20 courses on all these platforms so far). Watching Peter Norvig's solutions is a mind-expanding experience and I learned a ton from watching this course, several times over, and working through the problems. The videos are well paced, with lots of quizes in between, and always include the all-important solutions. Comparing my solutions to Peter Norvig's has been.. illuminating. The assignments are tough but fair, and solvable based on things you learned in the preceding lessons. I've been writing Python for years, both professionally and for side-projects, and I loved the style of the code shown in this class. Many educational resources drive you toward the typical over-engineered object oriented approach. While this class shows you beautifully functional Python that you probably didn't even know existed, peeling away all the silly layers of abstraction and getting down to the heart of each problem in a clear and direct manner, building up amazingly clean, testable and flexible solutions. If your first thought when you face a programming problem is to start writing a class then you'll probably be in for a shock. Otherwise I think you should be in for a real treat, as you get to watch a true master show you how to write great code. Big thank you to Peter Norvig for putting it together and I really hope he decides to offer another class soon. In the meantime I'll keep re-watching the videos from this class and finding new nuggets of awesomeness that are so plentiful within. |
||
|
1
|
This is the course that got me excited about learning programming. The course does not discuss theory at all but it will expose you to some advanced programming ideas like parsing and reflection, backtracking and search, logic programming, data interchange using JSON, and testing and profiling. This course is for people learning programming who are ready to leave the beginner's category. You don't need to know a lot of programming before taking this course, but be prepared to spend a significant amount of time on the assignments. The course is very accessible but very challenging. One of my favorite courses ever. Highly recommended. |
||
|
1
|
This is my favorite class I've taken so far at Udacity, and in terms of quality it's up there with Martin Odersky's Scala class at Coursera, though it is more difficult. The problem sets are very challenging. This is not a class for programming novices, though you don't need to be a Python expert. I just picked up the language as I went along. This class will stretch your mind, and make you a better programmer, no matter what language you program in. |
||
|
1
|
Prior experience in the field: Programming in Python for 3 years, Udacity courses CS 101 & CS 373. Like: Learned about the power of Python and its various libraries (collections, defaultdict, etc.) Being able to "generalize" a search algorithm to solve mundane puzzles and impressive sliding car ones (Unblock me, if you've heard of the android app) was amazing. Understood generators and for expressions in Python, thanks to some great explanations (not to mention wrappers). I feel these are very difficult to "get" by yourself. Peter Norvig is an excellent teacher who was very involved in the forums as well. Kudos to him! Dislike: Overall: |
||
|
1
|
I have been using Python for 5 years at work and in my personal projects but this course was truly an eye-opener: there are tons of ways that I was unaware of to use this powerful programming language to attack problems. It was a very pleasant experience to watch how elegantly Dr. Norvig uses Python to solve games and other computer science problems. I am sure that even more seasoned Python programmers than I would share this feeling with me after taking this course. If you are interested, you can watch Dr. Norvig's thoughts on MOOC in his TED talk at http://www.ted.com/talks/peter_norvig_the_100_000_student_classroom.html. |
||
|
0
|
My full review is a bit too long for this website, but here's a synopsis of my thoughts: I was not impressed with this course at all. The professor obviously does not program any software that is maintained by other developers, because the quality of code that I saw in this course was absurd. The course was originally meant to be taken by students who had just completed Udacity's CS101, but it ended up being labeled as an "advanced" course because of all the complaints in the forums from students who weren't learning. Here is a concise list of things that I believe went wrong with this course: 1) Peter Norvig has a hard time teaching beginners I wouldn't really recommend that anybody take this course, even if you program professionally. The amount of effort put into trying to understand Norvig is not really worth it. For my full review, feel free to check out my blog post on this course: http://grardb.tumblr.com/post/24312405759/review-udacity-cs212 |
||
|
0
|
The course is structured such that you're given a coding challenge and after you attempt a solution Peter will give you his solution. While your code may work invariable Peter's solution is far more elegant and succinct. This is the best way to learn: try something yourself and only after you've struggled with it do you get alternative (and usually) better solutions. This is pure beautiful coding. You're building for simplicity and ease of understanding. Nothing overly complicated. If you like militantly following rules and being told exactly what to do this course is not for you. If you're willing to explore on your own and learn from a master coder it is. |
||
|
0
|
After completing Udacity's CS101 with the first cohort more than a year ago, I rode my brimming wave of enthusiasm into Peter Norvig's Design of Computer Programs. The difficulty level increased dramatically by the third unit, and I didn't have long or frequent enough blocks of time to dedicate to this course. As the difficulty of material increased, the amount of time I needed to grasp new concepts increased, and I quickly lost momentum by the fourth unit. This course is definitely not for beginners. Peter has a natural teaching style, but his delivery was at times simply well above my understanding. I also think the video editing is in some cases to blame, where too much 'dead air' is removed, making the rate of information delivery unnaturally high. Thinking objectively about the course setup, I gave it a 3.5 rating because it didn't properly describe the difficulty or required knowledge in the description, because of the abrupt increase in complexity in the third unit (a smoother trajectory would have done less damage to my morale), and because of the video editing mentioned above. That said, the setup of the course was as good as any other in terms of the short modules, frequent quizzes and interactivity, and Dr. Norvig's pleasant style of speaking that is easy to listen to. Now that I have completed a few more courses, and after reading some of the very positive reviews of this course, I've regained some inspiration to go back and try completing the remainder of this course. |
||
|
0
|
Peter taught me a new way to think about programming. His code is the most elegant I have ever read. Look at his 20 line implementation of a spelling corrector to get an idea of what real programming elegance can be. http://norvig.com/spell-correct.html Also the way that Peter broke down problems into relevant data structures and functions was simply beautiful. This class affects the way I code everyday. |
||
|
0
|
Even though I have been developing for a while (though not in Python), I felt I learnt a few new things in the course. I would say this is an intermediate level course, definitely not for new developers. The main takeaway from this course is how he breaks down problems into smaller pieces so that they become easier to solve and think about. Unlike the other commenter, I actually felt the Peter Norvig was quite a good teacher. |























