Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

Select Page

Building Blocks for Theoretical Computer Science

Building Blocks for Theoretical Computer Science

This book teaches two different sorts of things, woven together. It teaches you how to read and write mathematical proofs. It provides a survey of basic mathematical objects, notation, and techniques which will be useful in later computer science courses. These include propositional and predicate logic, sets, functions, relations, modular arithmetic, counting, graphs, and trees. And, finally, it gives a brief introduction to some key topics in theoretical computer science: algorithm analysis and complexity, automata theory, and computability.

Formal mathematics is relevant to computer science in several ways. First, it is used to create theoretical designs for algorithms and prove that they work correctly. This is especially important for methods that are used frequently and/or in applications where we don’t want failures (aircraft design, Pentagon security, ecommerce). Only some people do these designs, but many people use them. The users need to be able to read and understand how the designs work.

Second, the skills you learn in doing formal mathematics correspond closely to those required to design and debug programs. Both require keeping track of what types your variables are. Both use inductive and/or recursive design. And both require careful proofreading skills. So what you learn in this class will also help you succeed in practical programming courses.

Third, when you come to design complex real software, you’ll have to document what you’ve done and how it works. This is hard for many people to do well, but it’s critical for the folks using your software. Learning how to describe mathematical objects clearly will translate into better skills describing computational objects.

Building Blocks for Theoretical Computer Science

by Margaret M. Fleck (PDF, Online reading) – 21 chapters

Building Blocks for Theoretical Computer Science by Margaret M. Fleck