Structure and Interpretation of Computer Programs - 2nd Edition (MIT Electrical Engineering and Computer Science)
About This Book
Structure and Interpretation of Computer Programs has had a dramatic impact on computer science curricula over the past decade.
This long-awaited revision contains changes throughout the text. There are new implementations of most of the major programming systems in the book, including the interpreters and compilers, and the authors have incorporated many small changes that reflect their experience teaching the course at MIT since the first edition was published.
A new theme has been introduced that emphasizes the central role played by different approaches to dealing with time in computational models: objects with state, concurrent programming, functional programming and lazy evaluation, and nondeterministic programming.
There are new example sections on higher-order procedures in graphics and on applications of stream processing in numerical programming, and many new exercises. In addition, all the programs have been reworked to run in any Scheme implementation that adheres to the IEEE standard.
https://www.amazon.com/Elements-Computing-Systems-second-Pri...
* The How to Design Programs book. What the edX course above is based upon.
https://www.amazon.com/How-Design-Programs-Introduction-Prog...
* Structure and Interpretation of Computer Programs (SICP). Uses Scheme. One can use Racket with the `#lang sicp` language.
https://www.amazon.com/Structure-Interpretation-Computer-Pro...
YouTube playlist of the course by the authors: https://www.amazon.com/Thinking-Computation-First-Course-Pre...
https://www.amazon.com/Turtle-Geometry-Mathematics-Artificia...
https://www.amazon.com/Starting-Forth-Leo-Brodie-ebook/dp/B0...
* Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction and also The Nature of Code: Simulating Natural Systems with Processing. Uses Processing and p5.js (the JavaScript version of Processing).
https://www.amazon.com/Learning-Processing-Beginners-Program...
https://www.amazon.com/Nature-Code-Simulating-Natural-Proces...
The author's YouTube channel: https://youtube.com/c/TheCodingTrain
https://processing.org/
In my experience with FP you start with more of a top down approach in contrast to the bottom up approach discussed in the blog post.
There are many good resources on this. I've referenced a few below. Of course there are many more.
[1] https://www.amazon.com/Pearls-Functional-Algorithm-Design-Ri...
[2] https://www.amazon.com/Purely-Functional-Data-Structures-Oka...
[3] https://www.amazon.com/Algorithm-Design-Haskell-Richard-Bird...
[4] https://www.amazon.com/Structure-Interpretation-Computer-Pro...
> Have you read SICP? https://www.amazon.com/Structure-Interpretation-Computer-Pro...
Most functional languages support inner functions. So you can just create your graph representation in the outermost layer and just reference it from the inner function.
This book covers it extensively http://www.amazon.com/gp/product/0262510871/ref=pd_lpo_k2_dp_sr_1?ie=UTF8&cloe_id=aa7c71b1-f0f7-4fca-8003-525e801b8d46&attrMsgId=LPWidget-A1&pf_rd_p=486539851&pf_rd_s=lpo-top-stripe-1&pf_rd_t=201&pf_rd_i=0262011530&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=114DJE8K5BG75B86E1QS
You can find intresting things about functional programming in first chapters of SICP
However, maybe I'm not very smart and feel like I might have a very hard time with it. I'm not that great at math I don't think, nor do I consider myself genius like. Did people who go through this book do every single problem and figure it out themselves? There are a lot more problems then I expected. They are also, so far, some to be quite challenging and math heavy. It does really feel like it helps get my brain thinking differently about a lot of problems and I love it! But it also feels like I might start grinding a lot and burn out on it. Any tips or help or suggestions how to get through it successfully, get a good amount of education out of, and continue to be excited to keep moving forward?
[0] https://www.amazon.com/dp/0262510871
I know it's free online, but I wanted a physical edition.
[0] https://www.amazon.com/Structure-Interpretation-Computer-Pro...
[2] https://web.mit.edu/alexmv/6.037/sicp.pdf
https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena...
https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press...
As a second suggestion, I'd recommend to learn a language somewhat different from JavaScript-like (or C-like) languages, something that challenges your mind to think a little differently and understand and create higher order abstractions. There are many choices, but to avoid confusion and being my favourite, I'll point to one: read the "Structure and Interpretation of Computer Programs" by Abelson and Sussman. It teaches Scheme in a gentle and inspiring way but at the same time it teaches how to become a better programmer:
https://www.amazon.com/Structure-Interpretation-Computer-Pro...
I can't recommend it enough. If you read it, do the exercises, don't limit to read through them.
Maybe it's even better if you start with this, and THEN read the books on algorithms and data structures.
Enjoy your journey!
https://www.amazon.com/Programming-Language-Brian-W-Kernigha...
I'd also learn SICP: https://www.amazon.com/Structure-Interpretation-Computer-Pro...
and algorithms from either CLRS https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press... or Skiena Algorithm Design https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena...
http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
http://www.amazon.com/Elements-Computing-Systems-Building-Pr...
http://www.amazon.com/Structure-Interpretation-Computer-Prog...
http://www.amazon.com/G%C3%B6del-Escher-Bach-Eternal-Golden/...
http://www.amazon.com/Pragmatic-Programmer-Journeyman-Master...
Good luck!