I'd argue that knowledge about concurrency, a model of CPU threading, and race conditions/data sharing between threads is foundational.
Database transaction locks, data (form of race condition), SQL (declarative graph traversal combined with a simple projection), slightly derivative.
Compilers and SQL are technically not the foundations IMO.
Jumping/reading/evaluating/copying data, binary trees/log base 2 hierarchies, state machines, set theory, functional programming, Von Neumann model plus knowledge of multiple pipelines for integer adding are the basics.
...But, studying compilers and SQL is highly advised. Compiling code, and an understanding of database transactions locks are incredibly important practical skills.
In the US, the basic concurrency topics are covered in an OS class, which I believe is a mandatory part of the curriculum. But a course dedicated to it would definitely be an elective.
Database transaction locks, data (form of race condition), SQL (declarative graph traversal combined with a simple projection), slightly derivative.
Compilers and SQL are technically not the foundations IMO.
Jumping/reading/evaluating/copying data, binary trees/log base 2 hierarchies, state machines, set theory, functional programming, Von Neumann model plus knowledge of multiple pipelines for integer adding are the basics.
...But, studying compilers and SQL is highly advised. Compiling code, and an understanding of database transactions locks are incredibly important practical skills.