Hacker News new | ask | show | jobs
by nextos 2192 days ago
The OSSU curriculum has a nice selection of textbooks.

However, I am concerned with the fact that these curated lists lack a unifying idea of what CS is.

If you go to pure math instead, the consensus is clear. A pure math bootcamp, like Math 55, is mostly linear algebra and real analysis, taught from Axler and Rudin in its current iteration.

Simpler math curriculums progress more slowly, or use easier textbooks, but the idea remains the same: Linear algebra and real analysis.

What is the equivalent distilled core of CS? It can't be so many things. There must be a core which you build upon by stacking other courses and textbooks.

My take on this is logic and computation. They are the algebra and calculus of CS, and they are intimately related by the Curry-Howard isomorphism. I find it alarming that CS students are often not taught basics of propositional logic, first-order predicate logic or lambda calculus. It's the basics, and it is really useful.

Software Foundations [1] implements a nice curriculum in line with the ideas I have written about, but it is aimed at graduates and consequently it lacks background. I am still thinking about combinations of textbooks for undergrads that would offer something equivalent. Any suggestions welcome.

[1] https://softwarefoundations.cis.upenn.edu/

2 comments

Were I to suggest two things to read/watch it would be Nand2Tetris and The Little Schemer. They not only teach the theory but teach you to apply the theory, and the movement of theory to application is crucial to me when discussing computing, an applied science.

N2T teaches digital logic, what Turning saw, how it was physically implemented and how programming languages were and are developed. TLS introduced various topics like the halting problem in an effective and playful manner. Both spark interest, something I find some maths courses fail to do in many people unfortunately.

This "Software Foundations" series feels to me like a focused exploration on PL. I totally agree that a solid grasp on PL theories is actually one of the most helpful things you could do to become a better programmer, and the MOOC by Dan Grossman from the University of Washington is amazing on this. But I'm not sure if this is exactly the same as learning "logic and computation".