Collections /

The fundamentals

Last updated May 27, 2019
4

Long time Python wizard, with ~20 years of experience in full-stack web deployments, dev infrastructure and OSS. Python #1 on StackOverflow.

I find that when someone has learned the basics of, say, web development, but want to push onwards to understand why the things work the way they do they need to progress on to understanding the fundamentals. Not so much what the next programming language is, or how to learn a new front-end framework, but to know why that new programming language is promoting asynchronous programming, or why you can't just accept incoming data for a large file upload and forward that data to another server easily without running the risk of running out of memory or disk space.

So this collection is a set of pointers to online resources that teach such fundamentals. Algorithms. Data structures, network engineering. The kinds of things you think you'll never need to know about when building a simple website, until you do.

This collection is a work in progress, updated as I come across more resources.

Data structures and algorithms

The fundamental fundamentals. The basic algorithms that all programming builds on, not only the how but also the why. These are all online courses, but for some of these you can take the materials and work through them at your own pace.

Operating systems

The principles of how an OS works are very helpful when writing serious software. How do files or threads even work, what are interrupts, how is memory handled?

Security principles

Any program that interacts with the wider world needs to deal with security issues. These materials help teach you what to look out for, and why.

Concurrent programming

Making your program do multiple things at once, and not have it all fall apart. What exactly is the difference between concurrent, and parallel? How do threads work, and how do you manage shared resources when you never know when what thread does what? What are coroutines, and how can they help with writing concurrent I/O-based programs?

Databases

Computer programs deal with data. Sometimes a lot of it, or you just need structure and persistence. These links should help you deal with the principles.

Like this collection? Save it to read later.
4