A design for a hypothetical undergraduate CS curriculum

John Ohno on 2018-03-14

CS100: Introduction to Programming in Lua This is the introductory programming course. In it, students are expected to learn conditionals, control structures, and the use of arrays and hash tables, as well as solve simple problems involving regular expressions. Will also cover the use of version control systems. Textbook: Programming in Lua by Roberto Ierusalimschy.

CS101: Introduction to Programming II In this course, students will learn to write the same imperative control structures they learned in CS101 in C, as well as how to interface C code to Lua and how to write makefiles and use standard Unix build tools. Textbooks: Programming in Lua by Roberto Ierusalimschy, The C Programming Language by Kerninghan & Richie. Prerequisite: CS100

CS110: Discrete Math for Computer Science A course covering introductory number theory, introductory graph theory, symbolic and first order logic, and boolean algebra. It should also cover the concept of computability and universal turing machines.

CS200: Language Survey I Each class will represent an introduction to a new programming language, with assignments for small but non-trivial projects in that language due by the following class. Languages covered: Brainfuck, Forth, Befunge, Scheme, APL, Replace, Unlambda, and Hyper Set Language. Cannot be waived. Prerequisite: CS110