# Discrete Structures for Computer Science

## Overview

Underlying mathematical rules that govern algorithm design and data structures. Leans in on more of a mathematics course than a CS one. The course covers [`set theory`](https://brilliant.org/wiki/set-theory/), [`combinatorics`](https://brilliant.org/wiki/combinatorics/), [`recurrence relations`](https://brilliant.org/wiki/recurrence-relations/), [`graph theory`](https://brilliant.org/wiki/graph-theory/) and [`group theory`](https://brilliant.org/wiki/group-theory-introduction/)

[Judith Gerstring's book](https://drive.google.com/open?id=14pZnQh0iN7ATQqFdpkTNBd-etwoNzdOY) is a perfect introduction to the course for beginners. It is recommended to use [Kenneth Rosen's book](https://drive.google.com/open?id=14Hfrd7Ogz7UjI_xFS1ENdMaJQH7STmLb) which provides examples and problems whose solutions can be found [here](https://drive.google.com/open?id=1Y9bDZVoljQCjPt_egUKnqtHi-2mtTY5x)

## Navigation

* [Prerequisites](/openlib-cs/courses/csf222.md#prerequisites)
* [Textbooks](/openlib-cs/courses/csf222.md#textbooks)
* [Videos](/openlib-cs/courses/csf222.md#videos)
* [Apps](/openlib-cs/courses/csf222.md#apps)

## Prerequisites

This course has no prerequisites.

This course is a prerequisite for:

* [Theory of Computation](/openlib-cs/courses/csf351.md)
* [Data Structures & Algorithms](/openlib-cs/courses/csf211.md)

## Textbooks

| Title                                                                                                                                                       | Author(s)                        |     Edition    |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | :------------: |
| [Discrete Mathematics for Computer Scientists & Mathematicians](https://drive.google.com/open?id=1wxJ2zh-3XQ2bqFL_cZcA_Cnxt39ulyNM)                         | Mott, Kandel & Baker             |   2nd (2008)   |
| [Discrete Mathematics and its Applications](https://drive.google.com/open?id=14Hfrd7Ogz7UjI_xFS1ENdMaJQH7STmLb)                                             | Kenneth Rosen                    |   7th (2012)   |
| [Student's Solution Guide to Accompany Discrete Mathematics and its Applications](https://drive.google.com/open?id=1Y9bDZVoljQCjPt_egUKnqtHi-2mtTY5x)       | Jerrold Grossman & Kenneth Rosen |   7th (2012)   |
| [Mathematical Structures for Computer Science: Discrete Mathematics & its Applications](https://drive.google.com/open?id=14pZnQh0iN7ATQqFdpkTNBd-etwoNzdOY) | Judith Gersting                  |   7th (2014)   |
| [Lehman & Leighton Notes](https://drive.google.com/open?id=1r2ajkPY1x6EWp_k38yxH_8MPGvQOUocO)                                                               | Lehman & Leighton                | Revised (2004) |
| [Discrete Mathematics with Applications](https://drive.google.com/open?id=1r2ajkPY1x6EWp_k38yxH_8MPGvQOUocO)                                                | Susanna S. Epp                   |   4th (2011)   |

## Videos

* [Set Theory, *Knowledge Gate*](https://www.youtube.com/playlist?list=PLmXKhU9FNesTSqP8hWDncxpCj8a4uzmu7)
* [Relations, Posets, etc., *Knowledge Gate*](https://www.youtube.com/playlist?list=PLmXKhU9FNesTpQNP_OpXN7WaPwGx7NWsq)
* [Relations Intro., *Knowledge Gate* ](https://www.youtube.com/playlist?list=PLmXKhU9FNesQSH0J7qjWJ1TFS49o-EVFC)
* [Graph Theory *Knowledge Gate*](https://www.youtube.com/playlist?list=PLmXKhU9FNesS7GpOddHDX3ZCl86_cwcIn)
* [Group Theory, *Knowledge Gate*](https://www.youtube.com/watch?v=7ifHq5J58cE\&list=PLmXKhU9FNesQrSgLxm6zx3XxH_M_8n3LA)
* [Group Theory & Abstract Algebra, *Socratica*](https://www.youtube.com/watch?v=IP7nW_hKB7I\&list=PLi01XoE8jYoi3SgnnGorR_XOW3IcK-TP6)
* [Discrete Math Full Course: Sets, Logic, Proofs, Probability, Graph Theory, etc, *Trefor Bazett*](https://www.youtube.com/playlist?list=PLHXZ9OQGMqxersk8fUxiUMSIx0DBqsKZS) *(Full Course)*
* [Discrete Math 1, *TrevTutor*](https://www.youtube.com/watch?v=tyDKR4FG3Yw\&list=PLDDGPdw7e6Ag1EIznZ-m-qXu4XX3A0cIz)
* [Discrete Math 2, *TrevTutor*](https://www.youtube.com/watch?v=DBugSTeX1zw\&list=PLDDGPdw7e6Aj0amDsYInT_8p6xTSTGEi2)
* [Introduction to Mathematical Thinking, *Stanford University*](https://www.coursera.org/learn/mathematical-thinking)
* [Discrete Mathematics Specialisation, *UC San Diego*](https://www.coursera.org/specializations/discrete-mathematics)

## Apps

* [Wolfram Alpha](https://www.wolframalpha.com/)
* [Algorithms: Explained and Animated](http://algorithm.wiki/en/app/)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bpdc-acm.gitbook.io/openlib-cs/courses/csf222.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
