Your programming roadmap

Memory

call stack, heap, how memory is laid out on disk, pointers, and bytes

Understand the structure of your computer’s memory and how your data is stored.

Learn It

This portion of the Pyramid is different from the rest. Memory is a topic that can get dense fast. So the aim here is to provide a conceptual overview: to bring awareness to what memory is, how it’s used, and resources to reference to understand core concepts.

AlgoExpert, which I mention throughout the Pyramid, has a fantastic video lecture on memory, as part of their Data Structures Crash Course. This lecture covers important memory concepts, like bits and bytes, memory layout, and pointers, without assuming too much or making big leaps.

Although you won’t dive into all of the nuances of memory, that isn’t its intent, you’ll come away with a stronger understanding of what memory is, how it works, and why it’s important. This is one of the clearest explanations of memory that I’ve come across, and it’s the place to start if you’re new to the topic of memory or want a refresher.

The Data Structures Crash Course on AlgoExpert also has lectures on various data structures and how they are stored in memory. These, too, are worth checking out.

"Make at least one definite move daily toward your goal."

-Bruce Lee

If you’ve been using Aditya Bhargava’s book, Grokking Algorithms, throughout the Pyramid, you’ll want to use it here, too. That’s because Bhargava offers a clear explanation of the call stack (see chapter 3). Bhargava teaches through pictures, which is very useful for learning purposes.

As you dive into memory, it’ll be helpful to take some time to understand binary numbers. If you’re new to binary numbers, check out this free lecture from Berkeley’s course CS 61A: Structure and Interpretation of Computer Programs. Disc 05 Trees, Binary Numbers, which is also free and also offered by Berkeley, will give you practice with binary numbers. The binary number exercises begin on page 6.

David Malan teaches Harvard's free CS50x course, and I recommend that you check out Week 4 from this course. It covers several memory-related topics, from memory representation to pointers. Malan is a great teacher, who does a nice job of distilling complex topics into easily understandable parts.


← Back to Programmer's Pyramid