Hacker Courses The online courses programmers keep recommending, ranked from 20 years of public forum comments.
i
Design of Computer Programs
Image: udacity.com
#37 overallEvergreen

Design of Computer Programs

Udacity

13 recommenders · 12 threads · recommended in 8 years, 2012–2023 · score 15.0

Go to course ↗

A Udacity course taught by Peter Norvig that uses Python to teach program design and problem solving, including puzzle-style programs, decorators and elegant problem decomposition.

Commenters call it an excellent, rewarding course in problem solving and programming taste, taught clearly by Peter Norvig.

Programming Languagesintermediatefreevideo lectures#python#program design#problem solving#norvig#decorators

Recommendations by year

20062026

What commenters said (14)

  1. Strongly recommendsdeepGem2017in “Norvig's Python programs to practice or demonstrate skills”

    His Design of Computer programs course on Udacity is amazing.

    https://in.udacity.com/course/design-of-computer-programs--c...

  2. Strongly recommendsluckycharms8102017in “Ask HN: Any “bootcamps” or courses for intermediate/advanced people?”

    Highly recommend 'Design of Computer Programs' on Udacity. Its a 300 level class taught by Peter Norvig, and while the quizzes and homework's aren't terribly challenging, its a great way to learn how to break down problems for an intermediate developer.

  3. Recommendsupghost2023in “Ask HN: Did Anyone Else Here Simply Not Do Well at School?”

    Fck school dude, you good. I mean, unless you like it. My only regret from college is that I spent it studying instead of doing a lot of drugs. If you’re doing computer stuff, the grades don’t mean anything. There are so many paths to get in. You should only stress about the grades if you wanted to go on to be an academic— but if you aren’t enjoying the setting then you probably don’t want to go the academic route anyway.

    Here’s the best most beautiful part about coding:

    ### ain’t no one can stop you ###

    You don’t need* a degree to do it. School is not the gatekeeper. The information is yours for the taking.

    Check it out: https://www.udacity.com/course/design-of-computer-programs--...

    You do NOT need to pay money for that course, I know they really try to get you to sign up for a nanodegree but click around till you can take the course.

    If you can understand and replicate even 30% of the material in that course you are a certified badass.

    Can you load data from a file, manipulate it, and save it to another file? Congrats you are able to get a job with some effort.

    If you have an opportunity to take any courses, even the video courses, from Dave Beazley, do it: https://dabeaz.com/ (assuming Python is your thing). You will know more about Python than all of your professors and anyone interviewing you.

    Last bit of “stick it to the man” advice, you have one major advantage over more experienced developers that often goes overlooked: the ability to go deep on a technology. Most senior developers need to be generalists, the cost of going deep is almost never worth it. At this point in your career you actually have the opportunity to become better, for instance, at TypeScript or Python by spending a whole year or two studying the hell out of it while you look for a job. And being a specialist early in your career is something you can hang your hat on, people WILL hire you just for your subject matter expertise, and they figure you can learn the rest on the job.

    Oh yeah two more things (I also have ADHD) #1 go to conferences, like PyCon or ClojureConj or whatever you are interested in. They are extremely welcoming for new folks. We are excited that anyone gives a sht about the stuff we are interested in. You will almost certainly walk away with tons of interview opportunities if not offers.

    Lastly, about school — don’t overlook the opportunity to make friends and take advantage of the school resources. That’s my biggest regret from school. I don’t have any friends from college despite being a generally outgoing person. And schools have an ENORMOUS amount of opportunities available and most people don’t take advantage of them. These opportunities for socializing and resources are MUCH harder to come by after school in the work force.

    tl;dr fck school

  4. Recommendskross114802023in “Ask HN: What's the best lecture series you've seen?”

    I would recommend Peter Norvig's "Design of Computer Programs" course in Udacity. Gave me an insight on elegant thinking and programming with python.

  5. RecommendsSloopJon2018in “Paradigms of Artificial Intelligence Programming (1992)”

    Peter Norvig is probably my favorite online teacher, from the AI class in 2011 to his Design of Computer Programs on Udacity. His attitude is inviting, and his exposition clear.

    The kerning in the PDF looks weird on my Mac, but it's really cool that this is available.

  6. Recommendsnafizh2017in “Norvig's Python programs to practice or demonstrate skills”

    You should check out Norvig's design of computer programs course on Udacity (https://www.udacity.com/course/design-of-computer-programs--...) where he uses these kinds of puzzle programs to teach programming design concepts. It is a hard but really rewarding course.

  7. Recommends7273742016in “How to Write a Spelling Corrector”

    If people like this, also check out his course at Udacity - https://www.udacity.com/course/design-of-computer-programs--...

  8. RecommendsAdam_O2015in “Ask HN: What's your favorite online course?”

    My all star lineup would be:

    The Analytics Edge - https://www.edx.org/course/analytics-edge-mitx-15-071x-0

    Design of Computer Programs - https://www.udacity.com/course/design-of-computer-programs--...

    Justice - https://www.edx.org/course/justice-harvardx-er22-1x-0

    If I had more time I would love to go through the bioinformatics specialization on Coursera. They have 2 books and an exercise site (rosalind.info). It looks like great fun.

    https://www.coursera.org/specializations/bioinformatics?utm_...

  9. Recommendsmanish2015in “Python Decorators in 12 Steps (2012)”

    Udacity's course Design of Computer Programs by Peter Norwig was the best intro to decorators I have seen.

  10. Recommendsbrudgers2014in “Ask HN: Best online programming class for newbies?”

    'Newbie' covers many experience levels - from afraid to turn the computer on to moving beyond Excel pivot table macros. People need different degrees of handholding.

    Not necessarily my favorite, Coursera's Programming for Everybody [1] moves forward very very slowly. Great for some people, drying paint for others. It is taught in Python.

    A course I think is great is Coursera's Introduction to Systematic Program Design [2] based on Felleisen's How to Design Programs introductory text. It is possible to register for the last session, from a year ago, and complete the work on your own. It is taught in Racket.

    Another course that takes a learn-by-making approach is Coursera's Creative Programming for Digital Media & Mobile Apps [3]. It is beginner friendly and really encourages "getting into it". It is taught in Processing, and in some ways I think Processing is the ideal language for an introductory course in Software Engineering - it is pared down like Racket's student languages, provides just a pinch of Java pain, facilitates the production of really interesting output, and the environment provides a fast edit-compile-run loop.

    For a person who is more oriented toward scientific or mathematical problems, Coursera's R Programming [4] might by a good fit.

    Among the various Python Courses, I would probably go with Udacity's Design of Computer Programs: Programming Principles [5] because it is taught by Peter Norvig.

    All that said, a book may be better than an open-enrollment class for many people, and there's a lot more variation.

    [1] https://www.coursera.org/course/pythonlearn

    [2] https://www.coursera.org/course/programdesign

    [3] https://www.coursera.org/course/digitalmedia

    [4] https://www.coursera.org/course/rprog

    [5] https://www.udacity.com/course/cs212

  11. Recommendsabelardx2013in “Ask HN: How to get back into mathematics?”

    I would recommend some MOOC's for a good, pressure-free re-introduction. Udacity has an algebra class. I assume it's really good. The Norvig course I took there was excellent. Also check out Coursera.

    https://www.udacity.com/courses

    https://www.coursera.org/courses

    If your interest is math for programming, you want an introductory course or book on 'discrete mathematics', which should be enough math for you to take an algorithms and data structures class. That will position you to do some real programming.

    Beware of trying to learn everything. For adults that is probably impossible due to time constraints. Standard subjects like trigonometry and calculus will have less utility for programming than discrete math.

    Focus on algebra and discrete math. Then, if you want more, probability and statistics. That will give you the biggest bang for the buck.

  12. Recommendsih2013in “Peter Norvig and eight others are Hacker School residents”

    You can also take a free course online (https://www.udacity.com/course/cs212) by Peter Norvig with Udacity (https://www.udacity.com/) in case you can't make it to hacker school.

  13. Recommendswoadwarrior012012in “Scribd says: Beat our programmers at a coding challenge”

    You might want to check out Peter Norvig's CS212 on Udacity. From what I've seen over the past 6 weeks it's an excellent course problem solving and `good taste` in programming.

  14. Mentions_coveredInBees2017in “Coursera raises Series D”

    Coursera has been sliding steadily into irrelevance over the past couple of years. It started with lofty goals, and then at some point it just became a money grab when they refused to let you take quizzes and assessments without paying. That would still be fine if paying them gave you any semblance of help/support/mentorship.

    My wife started the bioinformatics track and was deeply disappointed by the complete lack of any support on the forums. There isn't even a nominal course TA who helps answer questions posted by paying students. For several hundred dollars, you get the privilege of viewing a sequence of videos and going through assessments that can vary substantially in quality, without any prospect of getting any help from a community.

    I've taken my share of Coursera courses in the past, but I didn't even bother with the Hinton's Neural Network class after my wife's experience and after checking it out and realizing that all the courses are pretty much zombie courses with no instructor or TA participation.

    If you want quality online education, look no further than edX. There are some amazing courses on there (especially a bunch of MIT, Harvard and Caltech courses) and all of them have a pretty good amount of instructor, student and TA participation. It's so good that I've almost always paid for the certification simply to show my support to the universities in the hopes that they continue providing these classes freely to anyone with the interest and determination to learn something new.

    Udacity is okay... it started with similar lofty goals and then pivoted hard to being a very for-profit organization. Nothing inherently bad about it, but I look at most of their newer content as going to a trade school where you just learn the essentials to cobble some things together without a deeper understanding of things. Udacity courses will rarely satisfy a deeper intellectual curiosity, though they will likely help you get started with coding. That being said, they do have some great content from when they first started out, including Peter Norvig's outstanding course on Design of Computer Programs.

Related courses

Keyboard

In the course grid
←↑→↓
Move between courses
Home End
Start / end of row (with Ctrl: first / last)
PgUp PgDn
Jump several rows
Enter
Open course
S
Save / unsave course
1–5
Best, Trending, Hidden gems, Evergreen, Saved
[ ]
Previous / next topic
On a course page
← →
Previous / next course in your list
S
Save / unsave
O
Open the course website
Esc
Back to the grid
Everywhere
/
Search
T
Light / dark theme
?
This help