├── Study Guide.pdf
├── FCS-concept-map.png
└── README.md
/Study Guide.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/h-sarhan/FCS-study-guide/HEAD/Study Guide.pdf
--------------------------------------------------------------------------------
/FCS-concept-map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/h-sarhan/FCS-study-guide/HEAD/FCS-concept-map.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Fundamentals of Computer Science Study Guide
2 |
3 |
4 |
5 | ### Books
6 |
7 | 1. Rosen, K.H. *Discrete Mathematics and its Applications, Global Edition* [Direct Link](https://www.dawsonera.com/abstract/9780077151515)
8 | 2. Sipser, M. *Introduction to the theory of computation* PDF excerpts are provided on Coursera, however I suggest getting the book, because we only have access to chapter 1. The international edition can be found for cheap. [Link](https://biblio.co.uk/book/introduction-theory-computation-3-e-michael/d/813674725)
9 | 3. Hopcroft, J., R. Motwani and J.D. Ullman *Introduction to automata theory, languages and computation* PDF Excerpts are provided on Coursera.
10 | 4. Forbes, M. *A theoretical introduction to Turing Machine* [Direct Link](https://www.dawsonera.com/abstract/9788132316909)
11 | 5. Kozen, D.C. *Automata and Computability*. PDF excerpts are provided on Coursera
12 | 6. Chang, S. (ed) *Data structures and algorithms* [Direct Link](https://ebookcentral.proquest.com/lib/londonww/detail.action?docID=1223927)
13 |
14 | ### Topics Covered
15 |
16 | * Discrete Math Prerequisites
17 | * Logic
18 | * Proofs:
19 | * Direct Proof
20 | * Proof by Contraposition
21 | * Proof by Contradiction
22 | * Proof by Induction
23 | * Combinatorics
24 | * Automata Theory
25 | * Finite State Automata
26 | * Deterministic
27 | * Nondeterministic
28 | * Regular Languages
29 | * Regular Expressions
30 | * Non-Regular Languages*
31 | * Pumping Lemma
32 | * Context-Free Grammars
33 | * Turing Machines*
34 | * Algorithms
35 | * Algorithm Complexity
36 | * Algorithms Covered:
37 | * Insertion Sort
38 | * Bubble Sort
39 | * Heap Sort
40 | * Quick Sort
41 | * Merge Sort
42 | * Binary Search
43 | * Gale-Shapley
44 | * Master Theorem
45 |
46 | *Consult external resources because these topics are not explained well in the lectures
47 |
48 | ### Topic Map
49 |
50 |
51 |
52 |
53 |
54 | ### Suggested Reading List
55 |
56 | | Week | Topic | Reading |
57 | | ------- | --------------------------------------- | ------------------------------------------------------------ |
58 | | 1 & 2 | Logic | **Rosen**:
Chapter 1.1 - 1.4,
1.5 (optional) |
59 | | 3 & 4 | Proofs | **Rosen**:
Chapter 1.8,
1.9 (optional, to practice proof-writing)
5.1,
5.3 (optional, but highly recommended to get more comfortable with recursion) |
60 | | 5 & 6 | Combinatorics | **Rosen**:
Chapter 6.1 - 6.3 |
61 | | 7 & 8 | Automata Theory: DFA and NFA | **Sipser**:
Chapter 1.1, 1.2 |
62 | | 9 & 10 | Automata Theory: Regular Languages | **Sipser**:
Chapter 1.3, 1.4 |
63 | | 11 & 12 | Automata Theory: Non-Regular Languages* | **Sipser**:
Chapter 2.1 (More concise and easier to understand than Hopcroft reading)
**Hopcroft**:
Chapter 5
Chapter 7.1 (Covers Chomsky Normal Form) |
64 | | 13 & 14 | Automata Theory: Turing Machines* | **Forbes:**
Chapter 1 (I found this book to be unreadable. Read Sipser or Hopcroft instead)
**Kozen:**
Lecture 32
**Sipser:**
Chapter 3.1 (Optional)
**Hopcroft:**
Chapter 8.1, 8.2 (Optional) |
65 | | 15 & 16 | Algorithms I | **Rosen:**
Chapter 3.1
**Chang:**
Chapter 8, 9 |
66 | | 17 & 18 | Algorithms II | **Rosen**:
5.4 |
67 | | 19 & 20 | Algorithms: Complexity | **Rosen**:
Chapter 3.2, 3.3 (both optional)
**Chang:**
Chapter 2,
3 (optional) |
68 |
69 | **The lectures in weeks 11 - 14 (covering non-regular languages and Turing machines) are exceptionally poor so I suggest consulting the resources below*
70 |
71 | ### Resources
72 |
73 | [Lecture notes](https://github.com/world-class/REPL/blob/master/notes/fundamentals_of_computer_science/students_notes/felipe_balbi/notes.pdf) by Felipe Balbi
74 |
75 | ##### Writing Proofs
76 |
77 | 1. The exercises in chapters 1.8, 1.9, and 5.1of the Rosen book give you the opportunity to practice proof-writing. Check your answers [here](https://www.slader.com/textbook/9780071315012-discrete-mathematics-and-its-applications-global-edition-7th-edition/)
78 | 2. [A Guide to Proof-Writing](https://www.cs.ucy.ac.cy/~dzeina/courses/epl111/proofwriting.pdf)
79 | 3. [Techniques for Proof-Writing](http://math.umaine.edu/~weiss/TechniquesForProof.pdf)
80 | 4. The Stanford CS103 [website](http://web.stanford.edu/class/archive/cs/cs103/cs103.1184/) has many resources related to writing proofs
81 |
82 | ##### Automata Theory
83 |
84 | 1. Practice designing automata, regular expressions, grammars, and Turing machines by solving homework problems in the Automata Theory MOOC (#5 below) or the Sipser book. Check your answers [here](https://www.slader.com/textbook/9781285401065-introduction-to-the-theory-of-computation-3rd-edition/)
85 | 2. The Stanford CS103 [website](http://web.stanford.edu/class/archive/cs/cs103/cs103.1184/) also has very well made and detailed slides covering Finite State Automata, Regular Expressions, Context-Free Grammars, and Turing Machines
86 | 3. [Theory of Computation lectures by UC Davis](https://www.youtube.com/playlist?list=PLslgisHe5tBM8UTCt1f66oMkpmjCblzkt). Follows the Sipser book.
87 | 4. [Harry Potter Theory of Computation Playlist](https://www.youtube.com/playlist?list=PLbtzT1TYeoMjNOGEiaRmm_vMIwUAidnQz)
88 | 5. [Stanford Automata Theory MOOC](https://lagunita.stanford.edu/courses/course-v1:ComputerScience+Automata+SelfPaced/about). Follows the Hopcroft book. Includes homework as well.
89 |
90 | ##### Algorithms
91 |
92 | There are many resources to learn algorithms online here is a few of them:
93 |
94 | 1. [Khanacademy](https://www.khanacademy.org/computing/computer-science/algorithms)
95 | 2. [Visualgo](https://visualgo.net/en)
96 | 3. [GeeksforGeeks](https://www.geeksforgeeks.org/)
97 | 4. [Interview Cake sorting algorithms reference](https://www.interviewcake.com/sorting-algorithm-cheat-sheet), [Binary Search reference](https://www.interviewcake.com/concept/python/binary-search)
98 | 5. [Algorithms Youtube Playlist](https://www.youtube.com/playlist?list=PLDN4rrl48XKpZkf03iYFl-O29szjTrs_O)
99 | 6. We also have access to CLRS, a popular algorithms textbook. [Direct Link](https://www.dawsonera.com/abstract/9780262270830)
100 | The chapters relevant to this course are: 2, 3, 4.5, 4.6, 6, 7
101 |
--------------------------------------------------------------------------------