Reading Assignment [Weeks 1-2]: Basic concepts, Searching and Sorting, Complexity notations
Alsuwaiyel: Sections 1.3 - 1.12 (skip 1.5)
Watch Python Tutorials: 1-7 (see Course Materials)
Reading Assignment [Weeks 3-4]: Solving recurrences, Mater Theorem, Input size analysis
CLRS: Sections 3.1*, 4.3, 4.5
Alsuwaiyel: Sections 1.14, 1.15*
Reading Assignment [Weeks 5-6]: Divide and Conquer, Quicksort, Dynamic Programming, LCS, Matrix Chain, Knapsack Problem, Greedy Algorithms
Alsuwaiyel: Sections 5.1-5.4, 5.6
Alsuwaiyel: Sections 6.1-5.4, 6.6
Alsuwaiyel: Sections 7.1
Reading Assignment [Weeks 7-9]: NP-Completeness, Reduction, Quantum Gates, Matrix Representations, Tensor Product, Classical and Quantum systems
Alsuwaiyel: Sections 9.1-9.3
CLRS: Chapter 34*
Yanofsky: Section 2.7 (Chapter 2*)
Yanofsky: Sections 3.1-3.3, 3.4*
Reading Assignment [Week 10]: Review for the midterm exams
Reading Assignment [Week 11]: Deutsch Algorithm,
Yanofsky: Section 6.1
Reading Assignment [Weeks 12-13]: Computer Architecture, Classical and Quantum Gates, Universal Gates, Deutsch-Jozsa Algorithm
Yanofsky: Chapter 5
Yanofsky: Section 6.2
Online material: ppt slides Lecture 07.
Reading Assignment [Weeks 14-15]: Superdense Coding, Grover Algorithm, Shor Algorithm, Project Presentations
Yanofsky: Section 6.4, 6.5
Online material: Classnotes, ppt slides Lectures 08-09, Project presentations/papers*.