Courses at Colgate
Intro to Computing IAn introduction to computer science through the study of programming utilizing the programming language Python. Topics include program control, modular design, recursion, fundamental data structures including lists and maps, and a variety of problem-solving techniques.
Semesters taught: Fall 2022, Spring 2023
Natural Language ProcessingNatural Language Processing systems (i.e., computational models capable of processing human languages) are ubiquitous in our daily lives. Internet search, translation systems, autocorrect, hate speech or fake news detectors all require computational systems that can comprehend human language. How can we build such systems and how can we evaluate whether the systems we build are truly comprehending human language? Students use a variety of techniques (such as n-gram models, Bayesian classifiers and neural networks) to build NLP systems. For each system built, students also confront its limitations by identifying and evaluating the system on critical edge cases.
Semesters taught: Spring 2023
Data Structures and AlgorithmsIntroduces foundational methods in the design and analysis of information-processing and problem-solving techniques. Asymptotic time and space complexity are used as an evaluation framework throughout. Data structures include maps, trees, and heaps. Algorithmic approaches include greedy, divide-and-conquer, dynamic programming, and dealing with intractability. Graphs are used extensively, and important graph problems and their algorithms are examined closely.
Semesters taught: Fall 2023
Courses at Johns Hopkins
Playing with Data: an Experimenter's Guide to Hypotheses, Evidence and the Truth (Fall 2021, Instructor)
Bayesian Inference (Spring 2020, TA)
Introduction to Computational Cognitive Science (Fall 2019, TA)
Cognitive Neuropsychology of Visual Perception (Spring 2019, TA)
Cognitive Development (Fall 2018, TA)
Mind, Brain and Experience (Spring 2018, TA)