I have taught the following courses (Currently, I regularly teach COMP 182 and COMP 571):

- COMP 182 - Algorithmic Thinking. (The course material is on all Canvas and, therefore, is password-protected. Below I share the slides from the Spring 2018 offering of the course.)
- Algorithms are the engines of a great majority of systems, natural and
artificial alike. This course introduces algorithmic thinking as a
discipline for reasoning algorithmically about problems. This reasoning
entails formulating problems mathematically, thinking about different
correct algorithms for the problems, and reasoning about efficiency in
order to choose among those algorithms. To achieve of all of this,
students must learn mathematics, and this course focuses on several
topics in discrete mathematics. This discipline will be
illustrated through applications to problems from the domains of social
sciences and biology.
- Administrivia.
- What is algorithmic thinking?.
- Logic.
- Proofs.
- Graphs.
- Breadth-first search.
- Algorithm efficiency. (A note on constants C and k)
- Divide-and-conquer algorithms and the Master Theorem.
- Sequences and summations.
- Weighted graphs and greedy algorithms. (Analyses of Dijkstra's and Prim's algorithms, The Knapsack problem)
- Mathematical induction.
- Relations.
- Dynamic programming. (The longest increasing subsequence problem)
- Iterative improvement algorithms.
- Counting.
- Discrete probability. (Markov chains and HMMs)

- COMP 481 - Automata, Formal Languages, and Computability. (Homepage)
- This course covers regular languages (automata, regular expressions, regular grammars, etc.), context-free languages (push-down automata, context-free grammars, etc.), recursive and recursively enumerable languages (Turing machines, etc.), computability (of languages and functions) and reductions, and elements of complexity theory.
- COMP 571 - Bioinformatics: Sequence Analysis. (Homepage)
- This course covers topics in population genetics (Hardy-Weinberg, finite populations and genetic drift, population structure and gene flow, mutation, selection, and molecular evolution) and phylogenetics (sequence alignment, phylogenetic tree reconstruction, and phylogenomics).
- COMP 572 - Bioinformatics: Network Analysis. (Homepage)
- This course covers topics in the analysis of topological and dynamic properties of transcriptional, signaling, and metabolic networks.
- COMP 670 - Graduate Seminar on Computational Biology. (Homepage)
- This seminar covers advanced topics in computational biology; the theme changes from semester to another.

Back to Luay's homepage.