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 https://introtcs.org
Please use the issues and pull requests to post any suggestions, comments, typo fixes, etc.
I am working on improving this text during the spring of 2019.
My priorities are:
-
Make the book less "idiosyncratic" - emphasize the models of Boolean Circuits, Turing Machines and RAM machines as opposed to their programming-language variants. As a byproduct I am renaming the programming languages to NAND-CIRC, NAND-TM and NAND-RAM to emphasize their roots and connections to standard models.
-
Add exercises.
-
More explanations and proof ideas.
-
Make the text more "linear": fewer footnotes and remarks that disrupt the flow of reading.
-
Write two chapters: space bounded computation and proofs and programs.
-
Adding supplemental code, which will eventually be on github.com/boazbk/tcscode
I am producing the 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 scripts directory 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 https://creativecommons.org/licenses/by-nc-nd/4.0/ 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 may also 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.