CS4All

This is the homepage of the Computer Science for All courses by Professor Christoph Kirsch.

View the Project on GitHub cksystemsteaching/CS4All

Introduction to Computer Science

This is an introductory class on computer science for broad audiences such as bachelor students in computer science, students majoring in other fields but interested in computer science, high-school students, and anybody with a background in basic math and the desire to understand the absolute basics of computer science.

The class follows the book What is Intelligence? Discovering Unproven Truth at talk resolution: proof against truth, along one axis from the small to the vast to the countable to the uncountable, with Cantor, Gödel, Turing and Rice met along the way and selfie run live in every session. The purpose is a deep understanding of basic computer science principles, deep enough to position generative AI, and whatever comes next, properly.

After taking the class, students are able to answer not just basic computer science questions but also questions about themselves such as which courses to take next and which books to follow up with, ideally realizing if they are interested in computer science more than expected, or even less than before.

Syllabus

Week 1 is the talk What is Intelligence?. The lectures follow one axis, from the small to the vast to the countable to the uncountable, in six stations: I Size, II Notation, III Meaning, IV Cost, V Machines, VI Intelligence. Each lecture is an HTML deck with a PDF rendering next to it, and ends with a piece of music and, in the introductory class, two things to read. The decks are at selfie.cs.uni-salzburg.at/classes/ics.

week station lecture
1 What is Intelligence? The talk, then the class (pdf)
2 I Size (pdf)
3 I Everything is Bits (pdf)
4 II Notation (pdf)
5 II Countability (pdf)
6 II The Machine (pdf)
7 III Uncountability (pdf)
8 III Self-Reference I (pdf)
9 III Self-Reference II (pdf)
10 III Systems (pdf)
11 IV Cost (pdf)
12 IV Formal Methods (pdf)
13 V Machines (pdf)
14 VI So, What is Intelligence? (pdf)

Software

The class works by explaining the basic principles behind selfie, a software system written in a tiny subset of C called C* that implements a self-compiling compiler targeting a tiny subset of RISC-V machine code called RISC-U, a self-executing RISC-U emulator, and a self-hosting RISC-U hypervisor. Selfie also comes with rotor and bitme, a model generator and a bounded model checker that turn a RISC-U binary into a formula and ask a SAT or SMT solver whether any input reaches a bad state within a bound.

Exercises and Assessment

The class has no graded assignments. Each lecture ends with a list of recommended exercises, mirrored in introductory-assignments.md, and the exam draws on these exercises and on nothing else: place a number on the axis, build a diagonal, say what a self-check proves, sort text from behaviour, name the outside check. Students who want more can do the first assignments of the compiler and systems classes with selfie’s autograder.

References

The textbook is What is Intelligence? Discovering Unproven Truth, whose chapters are the weeks of the class; it includes recommended readings for every part. The previous edition, Elementary Computer Science: From Bits and Bytes to the Universality of Computing, remains available.

Organization

The class is organized as part of a series of Computer Science for All classes.