Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Introduction to Theoretical Computer Science

This is the git repository for a book in preparation for an introductory undergraduate course on computer science. The book is posted (in both html and pdf formats) on the web page

Please use the issues and pull requests to post any suggestions, comments, typo fixes, etc.

There are two chapters that are still missing: space bounded computation & proofs and programs.

Supplemental code for the book is on

I am producing this book from the markdown source using Pandoc. The templates for the LaTeX and HTML versions are derived from Tufte LaTeX, Gitbook and Bookdown. You can see the following respository for some of the templates, scripts and panflute filter I am using.

This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. To view a copy of this license, visit or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

While this text will remain freely and publicly available, I might create a printed book version in the future. By making any contribution to this work, such as a typo fix or any other suggestion or edit, you are assigning me the rights to use your contribution in both the online or any other version of this work.


Book in preparation: introduction to theoretical computer science







No packages published