Teaching

COSC-689 Deep Reinforcement Learning - Spring 2019

Deep Reinforcement learning is an area of machine learning that learns how to make optimal decisions from interacting with an environment. From the environment, an agent observes the consequence of its action and alters its behavior to maximize the amount of rewards received in the long term. Reinforcement learning has developed strong mathematical foundations and impressive applications in diverse disciplines such as psychology, control theory, artificial intelligence, and neuroscience. A recent example is the winning of AlphaGo, developed using Monte Carlo tree search and deep neural networks, over world-class human Go players. The overall problem of learning from interaction to achieve goals is still far from being solved, but our understanding of it has improved significantly. In this course, we will study fundamentals, algorithms, and applications in deep reinforcement learning. Topics include Markov Decision Processes, Multi-armed Bandits, Monte Carlo Methods, Temporal Difference Learning, Function Approximation, Deep Neural Networks, Actor-Critic, Deep Q-Learning, Policy Gradient Methods, and connections to Psychology and to Neuroscience. The course will have lectures, mathematical and programming assignments, and exams. Credits: 3. Textbook (required): Reinforcement Learning: An Introduction. Richard S. Sutton and Andrew G. Barto. The MIT Press. 2017. (Preprint is available online)

COSC-878 Statistical Machine Learning: Big Data - Spring 2015, Fall 2018

This doctoral seminar studies topics in statistical machine learning in the age of big data and artificial intelligence. In the seminar, we read both classical and recent work in supervised learning, nonparametric models, optimization, and deep reinforcement learning. In the class, we study textbooks and survey milestone papers. Students are expected to submit questions for the readings before each class and give presentations when it is their turns. To have first-hand experience, students are also expected to do a few programming exercises in the textbooks. An earlier course website can be found at here . (Please note the content will change from year to year).

COSC-589 Web Search and Sense-making - Spring 2016, Spring 2017, Spring 2018

The Web provides abundant information which allows us to live more conveniently and make quicker decisions. At the same time, the growth of the Web and the improvements in data creation, collection, and use have lead to tremendous increase in the amount and complexity of the data that a search engine needs to handle. The increase of the magnitude and complexity of the data has become a major drive for new data analytics algorithms and technologies that are scalable, highly interactive, and able to handle complex and dynamic information seeking tasks in the big data era. How to effectively and efficiently search for the documents relevant to our information needs and how to extract the valuable information and make sense out from “big data” are the subjects of this course.

The course will cover Web search theory and techniques, including basic probabilistic theory, representations of documents and information needs, various retrieval models, link analysis, classification and recommender systems. The course will also cover programming models that allow us to easily distribute computations across large computer clusters. In particular, we will teach Apache Spark, which is an open-source cluster computing framework that has soon become the state-of-the-art for big data programming. The course is featured in step-by-step weekly/bi-weekly small assignments which composes a large big data project, such as building Google’s PageRank on the entire Wikipedia. Students will be provided knowledge to Spark, Scala, Web search engines, and Web recommender systems with a focus on search engine design and "thinking at scale”.

Find more information in the syllabus.

COSC-282 Big Data Analytics - Fall 2015, Spring 2017, Spring 2018, Spring 2019

The growth of the Web and the improvements in data creation, collection, and use have lead to tremendous increase in the amount and complexity of the data that a search engine needs to handle. "Big data" presents challenges to search engines from three perspectives: bigger data volume, higher data complexity, and faster data change rate. The increase of the magnitude and complexity of the data has become a major drive for new data analytics algorithms and technologies that are scalable, highly interactive, and able to handle complex and dynamic information seeking tasks in the big data era. In this class, we will focus on text retrieval algorithms and programming based on Big Data. We will cover programming models that allow us to easily distribute computations across large computer clusters. In particular, we will teach Apache Spark, which is an open-source cluster computing framework that has soon become the state-of-the-art for big data programming. In contrast to Hadoop's MapReduce paradigm, Spark's in-memory primitives provide performance up to 100 times faster for certain applications. Spark provides clean API in JAVA, Scala, Python and R. This course will provide an introduction to Spark, focusing specifically on search engine design upon Spark and "thinking at scale"

Find more information in the official course website.

COSC-150 Advanced Programming - Fall 2017

The objective of the course is to develop a mastery of object-oriented programming using the Java programming language and to expose students to advanced programming and basic software engineering concepts important for upper-division courses. Topics include object-oriented design and programming, unit testing, UML, event-driven programming, exception handling, sockets, graphical user interfaces (GUIs), and advanced programming projects such as artificial intelligence and/or mobile computing.

Find more information in the syllabus and the schedule.

Past Courses