what should a beginner learn
I want to be a programmer
My students constantly ask me this question. I'm learning programming. What should I learn?
It turns out it is quite simple answer. A beginner should only focus on learning 5 things.
Operating systems
OS, RAM, CPU, ROM, GPU, components of RAM/ROM, NUMA, architecture of the kernel, monolithic vs microkernel, I/O, syscalls, privilages
CPU
CPU scheduling, processes, tasks, preemptive/non preemptive scheduling, scheduling algorithms
Tasks and processes syncronization
Tasks, threads, processes, kernel vs user, M:N, IPC, deadlocks, shared memory, sockets, CSP, lockfree
Memory management and disk management
Allocation, swap, virtual memory, pages and faults, segmentation, partitions, static/dynamic linking, tracing memory, file systems, structures, disk scheduling
Networking
Types of networks, data link, transport, application, compression, security and cryptography, distributed system, distributed algortihms
Note: One day I will clean this list so it's more compact and memorable.