Hello! I’m looking for book recommendations for learning programming fundamentals.

To be clear, I’m not necessarily looking for a book on learning language(s), but rather, programming, theory I guess you might call it?

For example, I’ve been playing around a lot in my terminal writing bash scripts, and I just implemented my first function. Another example, I know the phrase “Object Oriented programming”, but have no idea what it means.

I learn well by doing, and I’ve learned a lot just writing scripts and reading about bash scripting, but I also realize there’s a lot about programming at a higher level that I know nothing about.

1 point

I read ‘Computer Science Distilled’ early on and it really helped me. It’s a very shallow summary of some CS fundamentals, but that’s kind of what you want when you’re starting out- just enough knowledge to know what exists to learn later.

Here’s a link: https://www.goodreads.com/book/show/34189798-computer-science-distilled

permalink
report
reply
3 points

I would probably recommend not trying to understand the whole field of programming initially. It’s huge, you won’t understand what the terms mean (e.g. OOP, functional programming, etc.) and it’s not very motivational.

Instead I would pick one or two popular languages to learn and actually make something in. The no-brainers are Python and Typescript. They’re hugely popular, not difficult, and let you get a lot done.

I think I would consider learning both at the same time. If not, at least don’t stick with Python too long. It is immensely popular but also has a lot of brain dead design decisions. Especially a) it’s reaaaally slow, you easily get a 50x speed up just by switching language, and b) the “infrastructure” around it - installing Python, adding libraries etc. is completely awful. There are attempts to fix that but they’re nascent.

Above all I think a good thing to have is a realistic goal of something to make. For Typescript the obvious thing is a web site. I really like this way of making web sites - you can get started with literally 2 command - but it may be a little too much for a beginner.

For Python I would look into some kind of automation or maybe web scraping thing. It’s decent at that.

Or if you have more specific project ideas you could use the most appropriate language for those, e.g. a microcontroller project you probably want to start with Arduino (C++). C++ was my first language (apart from QBasic which doesn’t count). Probably not for everyone though. I was very young and had free time.

permalink
report
reply
3 points

I am going to toot my own horn… Or rather: MIT’s horn.

https://thaumatorium.com/articles/mit-courses/mit.drawio.svg

This is a graph of most of MIT’s CompSci courses, where the lines are dependencies. If you want to learn something on the right, learn the connected things on the left.

While there are video courses, the top link in each block links to MIT pages where they tend to recommend books for each course. The algorithm courses recommend “Introductions into Algorithms, Fourth Edition”, for example.

I hope it helps (even if I don’t think this is the be-all end-all to your question).

permalink
report
reply
7 points

Automate the Boring Stuff with Python is a good way to get many of the general foundations through a series of projects.

permalink
report
reply
1 point
Deleted by creator
permalink
report
reply

Programming

!programming@programming.dev

Create post

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person’s post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you’re posting long videos try to add in some form of tldr for those who don’t want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



Community stats

  • 3.1K

    Monthly active users

  • 892

    Posts

  • 7.7K

    Comments