Junior Year
Artificial Intelligence
The purpose of this course is to update the student on state-of-the-art artificial intelligence concepts, such as heuristic programming, state-space search techniques, and/or graphs for problem solving, game playing techniques, theorem proving procedures for propositions and first-order logic, knowledge representation, and examples of knowledge-based systems.
We covered a lot of general algorithms for AI, and advantages and disadvantages of each algorithm.
We also spent a lot of time just going over the current AI concepts and what is in use today (As of early 2024), as well as a general idea of how each of them work.
Algorithms
Exploration of standard algorithm construction methods for solving varied problems including a comparison of the different efficiencies of these algorithms when implemented using different data structures.
Methods included branch and bound, backtracking, memoization, greedy algorithms, and dynamic programming.
Heuristic-based methods to find non-optimal solutions were also explored, especially for intractable problems.
Theoretical Computer Science
Core topics from finite automata, languages and the theory of computation.
The Chomsky hierarchy, abstract machines and their associated grammars.
Models of computation (e.g., Turing machines), Church's thesis, unsolvability, and undecidability.
Computational complexity, intractability, and NP-completeness.