├── 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 | Topic Map 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 | --------------------------------------------------------------------------------