Topics
| Topic | Readings | 
|---|---|
| 234-trees | 2-3-4 tree | 
| A and A* | Luger5 §4.2, 
Luger5 §4.3, 
Luger6 §4.2, 
Luger6 §4.3 Admissibility, A*, Dijkstra's and A* | 
| Affordances | Affordance | 
| Algorithm analysis | |
| Alpha-beta pruning | Luger5 §4.4.3, 
Luger6 §4.4.3 Alpha-beta pruning, Branch and bound | 
| Assorted review | |
| B-trees | Elmasri4 §14.3, 
Elmasri6 §18.3, 
Weiss3 §4.7 B-tree | 
| Bayes' Law | Luger5 §5.4, 
Luger6 §5.4 Bayes theorem | 
| Bayesian inference | Luger5 §9.3, 
Luger6 §9.3 Bayesian inference | 
| Brute-force search | Luger5 §3.2, 
Luger6 §3.2, 
Weiss3 §9.3.1, 
Weiss3 §9.6 Depth-first search, Breadth-first search, Iterative deepening depth-first search, Iterative deepening vs depth-first search | 
| Compression | Run-length encoding | 
| Computational geometry | deBerg3 §1.2, 
deBerg3 §1.3 Computational geometry | 
| Converting between models | Elmasri4 §7.1, Elmasri6 §9.1, Ullman2 §3.2 | 
| Convex hulls | deBerg3 §1.1 Convex hull | 
| Convex hulls cont'd | |
| DEFLATE | RFC 1951, DEFLATE | 
| Data independence | Elmasri4 §2.2, 
Elmasri6 §2.2 Data independence | 
| Database components | Elmasri4 §2.4, 
Elmasri6 §2.4, 
Ullman2 §1.2 Database | 
| Database constraints | Elmasri4 §5.2, 
Elmasri4 §8.2, 
Elmasri6 §3.2, 
Elmasri6 §4.2, 
Ullman2 §7.1, 
Ullman2 §7.2 Database constraints | 
| Database correctness (ACID) | Elmasri4 §17.3, 
Elmasri6 §21.3, 
Ullman2 §1.2.4 Database transaction, ACID | 
| Database design principles | Elmasri4 §12.2, Elmasri6 §10.2 | 
| Database security | Elmasri4 §23.1, 
Elmasri4 §23.2, 
Elmasri6 §24.1, 
Elmasri6 §24.2 Database security, "Exploits of a Mom" (Little Bobby Tables) | 
| Design tradeoffs | |
| Dijkstra's algorithm | Weiss3 §9.3.2 Dijkstra's algorithm, Dijkstra example (graphical), Dijkstra example (good pseudocode, great data trace) | 
| Distributing databases | Shard, No SQL | 
| Diversity and accessibility | Web accessibility, The Supreme Court, Domino's, and web accessibility for the visually impaired | 
| Doubly-connected edge lists | deBerg3 §2.2, 
deBerg3 §2.3 Doubly connected edge list | 
| Entity-relationship models | Elmasri4 §3.3, 
Elmasri4 §3.4, 
Elmasri6 §7.3, 
Elmasri6 §7.4, 
Ullman2 §2.1, 
Ullman2 §2.2 E-R model | 
| Feedback | |
| Graphs | Luger5 §3.1, 
Luger6 §3.1, 
Weiss3 §9.1 Graph, Tree | 
| Heuristics, take 2 (minimax) | |
| Huffman coding | Weiss3 §10.1.2 Huffman coding | 
| Implementing best-first search | |
| Information retrieval | Information retrieval | 
| Information theory | Information theory | 
| Introduction | |
| Line segment intersection | deBerg3 §2.1 Line segment intersection | 
| Logic | Luger5 §2.1, 
Luger5 §2.2, 
Luger5 §3.3, 
Luger6 §2.1, 
Luger6 §2.2, 
Luger6 §3.3 Propositional logic, Predicate logic, First-order predicate logic, Theorem proving | 
| Lossy compression | Lossy data compression | 
| Minimax | Luger5 §4.4, 
Luger6 §4.4 Minimax, Minimax in AI/games (don't miss link to part 2) | 
| Nature of intelligence | Luger5 §17.1, 
Luger6 §16.1 Turing test, Chinese room, ELIZA, Turing, A.M. (1950). Computing machinery and intelligence. Mind, 59, 433-460., How Machines Learn (CGP Grey) | 
| Naïve Bayes | Naive Bayes classifier, Chain rule | 
| Paper prototyping | Paper prototyping | 
| Pathfinding | |
| Physical data storage | Elmasri4 §13.1, Elmasri6 §17.1 | 
| Precision and recall | Precision and recall | 
| Probability | Luger5 §5.2, 
Luger6 §5.2 Conditional probability, Joint probability | 
| Problem spaces | Luger5 §3.1.3, 
Luger6 §3.1.3 State space search | 
| Project 2 design | |
| Project design work | |
| Project design work | |
| Prolog | Luger5 §15.1 Prolog, Prolog tutorial | 
| Red-black tree deletion cases | |
| Red-black tree implementation cases | Slides on 234/RB insertion cases, RB insertion and deletion with 234 correspondences (English is imperfect but examples are very good), RB insertion (with examples) | 
| Red-black trees | Weiss3 §12.2 Red-black tree | 
| Relational models | Elmasri4 §5.1, 
Elmasri6 §3.1, 
Weiss3 §3.1 Relational database, Relation, Examples of CREATE/INSERT | 
| SQL | Elmasri6 §4.1, 
Elmasri6 §4.3, 
Ullman2 §6.1, 
Ullman2 §6.5, 
Elmasri4 §8.1, 
Elmasri4 §8.4 SQL, SQL syntax (SQLite dialect), SQL query semantics | 
| SQL cont'd | |
| Sliding window: LZ77 | LZ77 | 
| Stateful comparators | |
| Tries | Trie | 
| UI evaluation criteria | Usability testing | 
| UI perception and cognition | |
| UI standards and guidelines | Best practices in GUI design, List of UI style guides | 
| Unification | |
| User interfaces | User interface, User interface design | 
| Using hash tables | unordered_set in C++, HashSet in Java | 
| Using maps | Weiss3 §4.8 map in C++, Map in Java | 
| Using priority queues | priority_queue in C++, PriorityQueue in Java, queue.PriorityQueue in Python | 
| Writing hash functions | Hash functions, hash in C++, hashCode() in Java |