Stefan's relatively fleshed out computer science curriculum

Here's a table of the actual course per semester:

SemesterCourses
1Computer familiarity and research
2Fundamentals of Programming
3Programming language exploration, Computer Architecture, Software in Computer Science
4Low Level Programming Details, Applications 1
5Data structures, Applications 2, Documentation
6Performance, OSes and Memory Security, Application Security
7Capstone 1, Computer Networks, Elective
8Capstone 2, Elective, Elective

First class - Computer familiarity and research

(skippable by special test only)

This class covers fundamentals of a computer. This includes:

Day 1 - Computer usage basics (yes, really)

Basic Mouse Usage

Left click, right click, scroll wheel, middle click, side buttons on mice that have them.

Basic Keyboard Usage

Besides the letters, pretty much every key - notably windows key, escape, and some combos.

Basic Keyboard Shortcuts

For now probably Windows and Mac based. Start menu, spotlight, task manager, etc.

A secondary goal to this class is to get students to stop being afraid to try things.

Second class - Fundamentals of Programming

(skippable by special test only)

Javascript.

The editing environment would still have some form of the Typescript Language Server, so many problems caught by types will still be caught.

This class covers fundamentals of programming, and well.

Another class - Programming language exploration

Depends on Fundamentals of Programming class.

Another class - Computer Architecture

Depends on Fundamentals of Programming.

Assembly

Another class - Software in Computer Science

Depends on Fundamentals of Programming.

Another class - Low Level Programming Details

Depends on the Computer Architecture class.

C / Zig, probably.

Actually show a debugger for the first time.

Another class - Data structures

Javascript.

Depends on the Low Level Programming Details class.

Another class - OSes and Memory Security

Depends on Low Level Programming Details class.

Another class - Computer Networks

Depends on Low Level Programming Details class.

Another class - Applications 1

Depends on Fundamentals of Programming. Depends on Software in Computer Science but can be taken concurrently.

Another class - Applications 2

Depends on Applications 1

Another class - Documentation

This class counts towards the writing requirement.

Depends on Applications 1

Another class - Performance

Depends on Data structures and Applications 1.

Another class - Application Security

Depends on Application class.

Electives

Pick 3 ish? Most things became required.

Other required classes

Haven't thought about these enough to be specific, probably never will, don't care enough.

Not necessary to be a good programmer, but necessary for the "science".

FAQ

Why Javascript for most of the classes?

For better or for worse, Javascript does the best at three qualities today:

Almost everything besides systems level programming can be done in Javascript, effectively too. Take for example Algorithms. They can all be done to adequately affect and improve the runtime of a program in Javascript. They're not as efficient, sure, but, that's not the point. Nobody teaches best practices for implementation efficiency.

Measure performance first anyway.