Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

You hit the nail on the head in your post—these are things _you_ consider foundational knowledge.

I graduated with my Bachelors in CS in 2016, and those classes were optional senior electives. You were required to take a certain number as well as some required ones (i.e., Computer Architecture, Analysis of Algorithms). I chose to take Database Systems, Data Mining & Machine Learning, Robotics, Computer Vision, etc. as electives but not Concurrent Programming or Network Programming because I already felt comfortable with those topics. Others chose classes in topics like mobile application programming or programming language theory.

Those topics may be foundational for you, but not for others.



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.


The most surprising part is ML being an elective course in 2016. ML is mandatory in my university, but DL is elective




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: