8 ms·
Composing Programs – An introduction to programming in the tradition of SICP
- evacchi 8y agoA friend of mine is approaching programming (very beginner level) through JavaScript. Is there any resource you would suggest in the same vein of this? EDIT: since people are asking, I agree that JS is not the best language to get started, but let's just say he needs to learn that.
- anarchyrucks 8y agoWhy is JavaScript an absolute requirement? I guess he can learn python as his first programming language which I personally think will be easier to setup/run in the machine instead of installing node.
- reacweb 8y agoYes. And for beginners, https://py3.codeskulptor.org/ https://py3.codeskulptor.org/ is fantastic.
- deleted 8y ago[deleted]
- LandR 8y agoI would suggest absolutely not learning programming via javascript as your first language.
- haney 8y agoI agree that javascript is a bit odd for a beginner in terms of scoping, callbacks, truthiness, etc. However, it's really broadly applicable, JS would be a horrible choice for a university introductory course but might not be a bad choice for a hobbyist who's trying to quickly start doing things that keep them interested in learning. I would however, strong suggest that javascript shouldn't be someone's only language.
- jakear 8y agoPython has the same scoping as JS. I really don’t get why people complain about this then propose python as an alternative. JS even got past that with let/const.
- enitihas 8y agoIn JS, declaring a variable without var gives it a global scope, in python not so. Also, js is a lot more inconsistent than python. The amount of js gotchas is huge(== weirdness, hasOwnProperty for iterating through object fields, binding of this, only 64 bit doubles as a number type). Python is much less surprising, and gives you much less opportunities to screw up.
- jakear 8y agoThat’s a strange decision with regard to variable definitions, but not really a “scoping” abnormality. As in: that’s the scope you’d expect from a global variable, but not the syntax you’d expect to get you a global variable. Anyways, a base VS Code installation will throw a warning about that. The other things are also not scoping. I’m not arguing JS is consistent, I’m just saying people should stop complaining about its scoping then offering python as a solution.
- 8y ago
- martalist 8y agofreecodecamp.org is pretty good at taking a practical approach to learning programming, primarily with JavaScript. But if your friend wants to also understand the basics of computer science it's worth considering doing both.
- ivan_ah 8y agoThis might be of interest: https://www.comp.nus.edu.sg/~cs1101s/sicp/ https://www.comp.nus.edu.sg/~cs1101s/sicp/ (SICP in js)
- sciurus 8y agoNot a direct equivalent, but I've frequently seen people recommend https://eloquentjavascript.net/ https://eloquentjavascript.net/
- invalidOrTaken 8y agoSeconding this recommendation.
- e12e 8y agoI guess I struggle to see why it has to be Javascript exactly (even if js6 isn't all bad). How about reasonml or clojure(script)?
- freetonik 8y agoMay I suggest my course on the fundamentals of programming with JavaScript ES6 https://www.youtube.com/playlist?list=PL-xu4i_QDSxcoDNeh8rx5-pHCCTOg0XsI https://www.youtube.com/playlist?list=PL-xu4i_QDSxcoDNeh8rx5... It is heavily inspired by SICP and covers important topics like recursion, iteration, static vs. dynamic typing, testing and more. Each video is accompanied by a text version, a quiz and an interactive programming exercise (links are in video descriptions). The course is completely free of charge and I’ll be happy to answer any questions and help your friend solve problems if he or she decides to do the exercises on our site.
- craigsmansion 8y agoI still don't understand why after so many years people are still trying to write a "SICP, but with language X". "The language doesn't really matter", as such it's imperative Scheme is used. I strongly feel that if you've worked your way through SICP, and, once finished, you think "Neat. I'll rewrite this but with language X," you've really missed out on value of SICP. It's challenging enough to follow for people who know a Lisp going in, but using a language more mainstream and familiar to make it easier is largely counter-productive.
- 40acres 8y agoI'd rather see a SICP rewrite that lowers the barriers of mathematical pre-requisites. SICP is a great book but I found myself having to research calculus equations more than I'd like.
- tashoecraft 8y agoAppreciate someone else mentioning it. As a self taught dev, with pretty poor Math skills, it was frustrating hitting parts refering to some equation you are just supposed to know. Totally derailed my learning having to understand some random equation that wasn’t fully relevant
- opnitro 8y agoHow To Design Programs covers some of the same ground. (It's also in a lisp)
- white-flame 8y agoAs somebody who's always been strong in math, I agree. For the MIT crowd it can be a reasonable expectation, but in general an introductory course in Topic A should not require advanced & unrelated Topic B knowledge.
- 3pt14159 8y agoMaybe I came to SICP too late in life, but I've always struggled to get the hype. It seems so... Basic. Making a linked list is trivial in lisp. Lisp itself is trivial. Why does everyone care about this book so much?
- bogomipz 8y agotangential question - inn the left nav of this page there is a link for "CS 61A: Structure and Interpretation of Computer Programs" with videos, slides and lectures. The URL is: https://cs61a.org/ https://cs61a.org/ However the syllabus begins at week 7. Does anyone know where to find the first 5 weeks of this class? Also does anyone know what school this affiliated with?
- labourcurious 8y agoIt displays week 7 at the top right now because that's the point the students taking the course at Berkeley have reached this semester. The table below includes all weeks.
- bogomipz 8y agoThanks, now I feel silly :)
- dyukqu 8y agoScroll down a little and you'll see a table with the materials of the previous weeks. It goes like Introduction, Functions, Data etc. Paradigms is the current one - Week 7.
- kim0 8y agoWishing for something similar in Golang!