Topics vary semester to semester.
Deep Learning
This course will begin with an exploration of the mathematics behind deep learning and how to build simple neural networks from Python mathematical primitives. The course will then pivot to exploring modern deep learning architectures and implementing systems using frameworks such as PyTorch, and experiment tracking tools such as MLFlow. Students will explore applications of deep learning such as computer vision, natural language processing, and neural networks for scientific applications. At the course's conclusion, students will research deep learning applications for a domain of their choice. Some experience with Calculus (High School is fine) and proficiency with Python is required. Linear Algebra is helpful to know but not required.
Prerequisite: Calculus I and COMP 131
Sub-field: ARTIFICIAL INTELLIGENCE
Artificial Intelligence and Learning Technologies
This course will cover many topics relevant to the design of learning technologies. The beginning of the class will cover theories of knowledge and learning (i.e., behaviorism, constructivism, cognitivism) and their implications for the design of computer-assisted learning technologies. This will be accompanied by a survey of the history of attempts at teaching machines. The class will culminate in a project where multidisciplinary teams of students design and prototype new learning technologies.
Sub-field: ARTIFICIAL INTELLIGENCE
Social Data Science
This is a team-based course where students will develop a research project that applies data science methods to address a problem in social science or business contexts using social data from online platforms. We will cover key considerations in research design, data collection from digital platforms, and the applications of natural language processing, machine learning and statistical methods for social data mining and analysis. Students will read research papers that employ computational approaches to analyze social media data and participate in group discussions, hackathons, and project presentations. This course aims to offer perspectives in computational social science research and hands-on experience in designing and executing a data science project. It is open to students from both social science and computer science backgrounds who are interested in social data analytics and research.
Sub-field: ARTIFICIAL INTELLIGENCE
Prerequisite: COMP 131 or COMP 146
Game Engine Development
Video game engines are often overshadowed by the games built on top of them, but they are complex pieces of software in their own right. This course will explore the major components that make up a game engine, such as graphics rendering, audio, and networking systems; collision detection and handling; 2D and 3D object and world modeling structures; all the way to game AI and custom scripting programming interface. Over the semester, students in this course will build a usable game engine from scratch and demonstrate its functionality with a game using it.
Sub-field: SOFTWARE
Prerequisite: COMP 229 and COMP 239
Interactive Systems for Enhancing Movement
This class applies computer science in the context of interactive systems to enhance human activities that involve movement, such as dance or sports. The course will go through examples of how sensors are used in diverse physical activities, including how to get movement signals through user-studies, how to evaluate the results, how to process the signals, and how to classify and determine if a movement is "correct" or "incorrect". Students finish the class by designing and evaluating their own projects in an activity that they are passionate or curious about.
Sub-field: ARTIFICIAL INTELLIGENCE
Prerequisite: COMP 131
Modeling and Simulation
A computer model is a hypothesis, formulated with a specific purpose in mind and represented as a computer program, about some aspect of concrete or imagined reality. A model can be "brought to life" through computer simulation. Computer models play an important role in business and policy as well as in engineering and the social and natural sciences, and we interact with them on a daily basis whether we realize it or not. These models, the nature of the "knowledge" they provide, and the implications of their use are the subjects of this course. An introductory familiarity with computer science is enough to build and work with simple computer models, valuable in themselves, that can also form the building blocks of more complex models. Focusing on these simple models, this hands-on course will address model-building, model fitting and validation using data, and model simulation for prediction and decision-making. At each of these stages we will also study questions of approximation and bias, and their implications. Examples will be drawn from a wide range of phenomena but will not require prior expert knowledge.
Sub-field: SOFTWARE
Prerequisites: COMP 131
Data Mining
This course covers computational approaches to uncovering information and patterns in data. Students will learn techniques for visualization of numeric and non-numeric data, data preprocessing, pattern extraction, clustering, and text mining. These techniques will be linked to human perception and other methods for evaluation.
Sub-field: ARTIFICIAL INTELLIGENCE
Abolish Silicon Valley?
The tech industry is known for well-paying jobs that offer the opportunity to work at companies making bold claims about their contribution to social betterment. Yet, those job benefits are only available to certain workers and "tech" is increasingly associated with income inequality, automated job loss, algorithmic bias, surveillance, the commodification of everyday life, and ecological damage. This course borrows its title from Wendy Lui's recent book on her experience as a tech worker and will ask students to (re)consider the politics of tech today, their own potential place in the tech industry, and alternatives to the current organization of techno-capitalism.
Computer Architecture
This course is intended to provide a foundation in performance programming and computer architecture. Students will better understand how software interacts with hardware and how trends in technology, applications, and economics drive changes in computer architecture. The course will cover the following topics: caches, virtual memory, memory system, parallelism, pipelining, superscalar, speculative out-of-order execution, vector, VLIW, simultaneous multithreading, graphics processing units, chip multi-processors, and domain specific accelerators. Students will read research papers on the topics described above. We will use processor simulators to explore design choices relevant to each of these topics. The objective is for you to understand all major concepts used in modern CPUs at the end of the class.
Sub-field: SOFTWARE
Prerequisites: COMP 239