For a Computer Science Freshman
I'm currently a Computer Science freshman at Nanyang Technological University in Singapore. While taking the first semester, I have gathered some reading materials that helped (or would have helped) me during my first semester.

I'm currently a Computer Science freshman at Nanyang Technological University in Singapore. While taking the first semester, I have gathered some reading materials that helped (or would have helped) me during my first semester.
There might be topics too complex, but bookmark them for now, because you need to rely on them later.
How does CPU Cache work?
A cache is a piece of super fast memory that retains some information from RAM. It helps the CPU to be more responsive by storing and serving frequently accessed data. Since cache memory is faster then system memory, performance gainz.
https://youtu.be/6JpLD3PUAZk
Cache Mapping are techniques used to store cache data. They are often based on the Principle of Locality (a.k.a. Locality of Reference). This Principle describes what data and how much of it should be stored in cache.
https://www.geeksforgeeks.org/locality-of-reference-and-cache-operation-in-cache-memory/. The 3 techniques I learnt were:
- Direct Mapping
https://youtu.be/pSarQQTJbDA - N-way Associated
https://youtu.be/isbdr73Ymug - Fully Associated
https://youtu.be/Pg6bqkekAXY
How does Virtual Memory works?
Random Access Memory (RAM) is one of the most expensive components in a computer. As an optimization and cost-saving measure, virtual memory exist. Virtual memory stores less accessed data from the system memory onto a hard drive. Resulting in slower access time, but more available system memory. The Windows implementation of this is called Paging, while it is called Swapping on Linux. The implementation is slightly different, but the general idea is the same.
Linus Sebastian explains Virtual Memory - https://youtu.be/1VDP5TCAK2c
Translation Lookaside Buffer - https://youtu.be/95QpHJX55bM
The Assembly Language
Every university teaches assembly a bit differently, but it helps to have a basic understanding of how assembly instructions are represented as binary bits, how to store, retrieve and add data, etc
https://www.tutorialspoint.com/assembly_programming/assembly_introduction.htm
Understanding C
When we are working with computers, it helps that we understand how strings are stored in memory, how pointers operate, how to store values that are larger than one address space. C is one of the best programming language to learn these concepts. This is not about "which language is great for beginners", but rather an essential background knowledge for all computer science students.
https://youtu.be/QXjU9qTsYCc
https://xingzhi.dev/blog/how-to-transit-from-js-to-c/
Two's complement
Two's complement is a binary representation of numbers in base 2 (normal decimal numbers is base 10). It can handle addition, subtraction and multiplication of signed values (binary values that are positive/negative) easily.
https://youtu.be/4qH4unVtJkE
https://www.tutorialspoint.com/two-s-complement