Prerequisite for both is CS1-2. Either course (Berkeley and Carnegie Mellon) is suitable as an alternative to nand2tetris and/or 6.004 as the required course of choice for Computer Architecture/Organization. The Princeton course that's already here would have one of these 4 courses as a prerequisite and is suitable as an elective.
This books contains easy to understand introduction to the automata theory, which is missing in "Introduction to computing" book by David Evans. It does not require complicated math, so it can be useful to students who do not want to become theoretical computer scientists, but want do have general understanding of it's topics. Also, it almost perfectly matches The Automata Theory course we have in the curriculum.
This is probably the best introduction to computer systems for programmers. It contains all needed essentials of computer architecture, describes how C language works internally (e.g. how data structures are organized in memory and managed on machine language level) and even describes essentials of operating systems.
GTx CS1301, "Computing In Python" is proposed as a supplemental course in the OSSU curriculum and as a potential future candidate for the Introduction to Computer Science course. It is an online-adapted version of the on-campus Introduction to Computing course for Georgia Tech computer science students. The online version is comprised of four parts, delivered on-demand via edX. The course is self-paced with 16 weeks of effort, and is 100% free to audit with all materials included. It covers all introductory CS topics discussed in MIT 6.00.1x from a language-agnostic perspective, while providing additional instruction and support in learning Python as a language. Students who complete this course will have an understanding of basic CS topics **and** a working knowledge of Python 3 they can immediately apply to interesting problems.
PBRT is an amazing book detailing the implementation of a real, well-developed path tracer and is used in many real Computer Graphics courses. The authors have no released it for free, so it would make a great addition to the curriculum.
Since we want every course in Intro CS and Core CS to be required, I have removed
the optional courses from Intro CS. But they are still good courses so I made
a new section in extras/courses.md to house courses on online learning.
I also added a new course under this new section, the sequel to Learning How
to Learn.