NATURAL LANGUAGE PROCESSING Spring 2024
Introduction to basic natural language analysis tasks such as language modeling and syntactic analysis, as well as core applications such as text classification, information extraction, question answering, and machine translation, including relevant algorithms, machine learning solutions, and evaluation methodologies.
MACHINE LEARNING Spring 2016-19
Covers fundamental concepts for intelligent systems that autonomously learn to perform a task and improve with experience, including problem formulations and learning frameworks, standard models, methods, computational tools, algorithms and modern techniques, as well as methodologies to evaluate learning ability and to select optimal models. Applications to areas such as computer vision, natural language processing, and robotics motivate the material.
INFORMATION THEORY & COMMUNICATION Fall 2017
Information Theory is one of the very few fields in computer science that have a well-defined beginning, in Claude Shannon's famous paper, "A Mathematical Theory of Communication" (1948). For a few decades, this field remained in relative obscurity, until results from information theory started to play a fundamentally important role in artificial intelligence, cryptography, computer security, data processing and storage, etc. This course introduces the basic concepts of information theory, and then dives into some important applications of the theory. A part of the coursework will involve seminar-style presentations and discussions. Topics include mutual information, data compression, entropy and counting, amortized complexity, streaming algorithm bounds, pseudorandom generation, data processing in noisy channels, and applications in AI.
COMPUTATIONAL FINANCE Fall 2018 | Spring 2024
The financial industry is a major employer of computer science graduates, and this industry is undergoing tremendous changes vis-à-vis automation and AI-driven processes. In this course, we will study the basic tools and terminology of finance, and focus on computational and mathematical modeling techniques used in financial data analysis. In particular, we will study derivatives, pricing models, and financial time series.
PROGRAMMING ABSTRACTIONS Spring/Fall 2019-23 | Fall 2024 | Spring 2025
Intermediate-level programming concepts and paradigms, including functional programming, object-orientation, basics of type systems, memory management, program and data abstractions, parameter passing, modularity, and concurrency. Programming assignments utilize a variety of high-level languages such as OCaml, Java, and Python.
SYSTEMATIC PROGRAM DESIGN, CODING, & TESTING Spring/Fall 2016-17 | Spring 2018 | Spring 2019
Development of the basic concepts and techniques learned in introductory computer science courses into practical programming skills that include a systematic approach to program design, coding, testing, and debugging. Application of these skills to the construction of robust programs of several thousand lines of source code. Use of programming environments and tools to aid in the software development process. The course instills an appreciation of modularity and the use of appropriate design patterns in the context of large-scale object-oriented programming.
DATA STRUCTURES Fall 2015 | Spring/Fall 2016 | Spring 2017 | Fall 2020 | Fall 2022 | Fall 2023
Programming concepts for data storage and manipulation on complex data sets. Topics include data structures like stacks, queues, binary trees, heaps, balanced trees, and graphs, and searching and sorting algorithms with asymptotic analysis of efficiency. Recursion is heavily utilized.
FOUNDATIONS OF COMPUTER SCIENCE Spring 2016 | Summer 2018
Introduction to the logical and mathematical foundations of computer science. Topics include functions, relations, and sets; recursion; elementary logic; and mathematical induction and other proof techniques; an understanding of recursion as a computing paradigm.