Hacker News new | comments | ask | show | jobs | submit login

For learning how to program, How To Code [1] (based on How to Design Programs [2]) is tragically underrated given that it's hands down the best approach to learn how to program (actually, more importantly, how to think about programming) of the many I have looked at. Wish I had known this years ago. Rarely the best learning resources are widely know, so sad.

I decided to give this course a go after reading the eye-opening paper The Structure and Interpretation of the Computer Science Curriculum [3], and then discovered the edx course in HN [4] [5].

Although having programmed for many years it totally changed the way I look at programming; I followed this with the sadly unfinished but still excellent How to Design Classes [6], which consistently extends this initially FP approach to OO. To check how this approach is language neutral, have a look at Design Recipes in C [7].

Another neglected but wonderful resource is MIT OCW Elements of Software Construction (the 2008 version) [8], which, like the above, is centered around design rather than coding.

What did I get out of all this? A systematic approach to programming.

[1] https://www.edx.org/course/how-code-simple-data-ubcx-htc1x

[2] https://htdp.org/

[3] https://cs.brown.edu/~sk/Publications/Papers/Published/fffk-...

[4] https://news.ycombinator.com/item?id=9810542

[5] https://news.ycombinator.com/item?id=16455240

[6] http://www.ccs.neu.edu/home/matthias/htdc.html

[7] https://hci.uni-hannover.de/files/prog1script/script.html

[8] https://ocw.mit.edu/courses/electrical-engineering-and-compu...

Thank you for this valuable advice. I always love to learn more about programming.

Thank you for this. I've been programming for a while and always appreciate another perspective on things. Starting with 3 now!

It is great that I have helped you learn about 3, enjoy!

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact