Computer Science (CPSC)
* CPSC 0350b / MUSI 0035b, Twenty-First Century Electronic and Computer Music Techniques Scott Petersen
Exploration of twenty-first century electronic and computer music through the diverse subjects and issues at the intersection of technology and new music. How computers have changed and challenged the analysis, composition, production, and appreciation of music over the last fifty years. Knowledge of basic music theory and the ability to read Western musical notation is assumed. Enrollment limited to first-year students. QR
HTBA
CPSC 1001a or b, Introduction to Programming Staff
Development on the computer of programming skills, problem-solving methods, and selected applications. No previous experience with computers necessary. QR 0 Course cr
HTBA
CPSC 1100a, Python Programming for Humanities and Social Sciences Sohee Park
Introduction to computer science and Python programming with domain-specific applications. Students learn how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, web development, and statistical tools. Students learn to apply computing techniques in the fields of social sciences & humanities by analyzing data. No previous programming experience is required. This course is intended for students of social sciences & humanities majors, but other majors are also welcome. QR 0 Course cr
MW 11:35am-12:50pm
CPSC 1230a or b / PLSC 3508a or b / S&DS 1230a or b / S&DS 5230a or b, YData: An Introduction to Data Science Staff
Computational, programming, and statistical skills are no longer optional in our increasingly data-driven world; these skills are essential for opening doors to manifold research and career opportunities. This course aims to dramatically enhance knowledge and capabilities in fundamental ideas and skills in data science, especially computational and programming skills along with inferential thinking. YData is an introduction to Data Science that emphasizes the development of these skills while providing opportunities for hands-on experience and practice. YData is accessible to students with little or no background in computing, programming, or statistics, but is also engaging for more technically oriented students through extensive use of examples and hands-on data analysis. Python 3, a popular and widely used computing language, is the language used in this course. The computing materials will be hosted on a special purpose web server. QR
HTBA
CPSC 1700b / GLBL 2199b, AI for Future Presidents Brian Scassellati
AI is becoming an essential tool for not only scientists and engineers, but also for physicians, judges, artists, and presidents. This course is designed for all students, with no prerequisites, and requires no programming. We look at topics that range from job loss due to automation, how machine learning systems are impacting healthcare, the impact of language models on education, and many other topics that are at the front of the headlines today. Will ChatGPT make essays obsolete? Will robots take my job? How smart will machines become? Students learn some of the basic limits of this technology, understand how to critically analyze public claims made about AI, and understand the societal impact that AI is having. 0 Course cr
HTBA
CPSC 1710a, Introduction to AI Applications Xiuye (Sue) Chen
'Introduction to AI Applications' demystifies the core principles and practical applications of artificial intelligence for students with introductory programming experience. Covering essential topics like machine learning models, data handling, ethical AI use, and real-world problem-solving with AI, this course incorporates hands-on projects to foster an intuitive understanding of AI's capabilities and limitations. Students will emerge from the class with foundational AI knowledge, ready to apply AI solutions across various domains and explore more specialized AI disciplines. CPSC 100 or equivalent introductory programming experience. QR
TTh 11:35am-12:50pm
CPSC 1750a, C Programming Language and Linux Ozan Erat
We discuss the basics of the software development toolchain using the C programming language in the Linux operating system environment. Topics include an overview of C programming language including pointers, malloc, free, function pointers, recursion, and C macros. We further discuss tools useful for developing complex programs including git, compilers, Linux environment, gdb, and valgrind. Finally, we apply the language and tools to multiple fields of computer science. Familiarity with basic programming. CPSC100 or CPSC112 recommended. QR
TTh 11:35am-12:50pm
* CPSC 1840b, Intellectual Property in the Digital Age Cecillia Xie
The seminar focuses on the evolving and oftentimes vexing intellectual property regime of the new digital age. Topics include copyright, fair use, remix culture, access to knowledge, technological innovations, the increasing relevance of trademarks in the new information society, the tension between creativity/creating and the intellectual property rules which either foster or inhibit it, and the new information culture of the digital age. Prerequisite: CPSC 183 or permission of instructor. HU, SO
HTBA
CPSC 2000a or b, Introduction to Information Systems Stephen Slade
The real-world artifacts and implementations that comprise the vital computational organisms that populate our world. Hardware and software and the related issues of security, privacy, regulation, and software engineering. Examples stress practical applications of technology, as well as limitations and societal issues. After CPSC 100 or 112 or equivalent. QR
HTBA
CPSC 2010a or b, Introduction to Computer Science Staff
Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problem-solving methods. After CPSC 100, CPSC 112 or equivalent. QR
HTBA
CPSC 2020a or b, Mathematical Tools for Computer Science Staff
Introduction to formal methods for reasoning and to mathematical techniques basic to computer science. Topics include propositional logic, discrete mathematics, and linear algebra. Emphasis on applications to computer science: recurrences, sorting, graph traversal, Gaussian elimination. QR 0 Course cr
HTBA
CPSC 2021b, Mathematical Tools for Computer Science II Dylan McKay
This course is a second course in Mathematics for Computer Science students, intended to follow an initial course in Discrete Mathematics (such as CPSC 2020). The course is primarily focused on introducing Linear Algebra, while also expanding on Probability. CPSC 2020, or an equivalent course in Discrete Mathematics. QR 0 Course cr
HTBA
* CPSC 2155b / AMST 2255b, Artificial Intelligence, Ethics, and Society Julian Posada
This seminar examines the development and implementation of artificial intelligence technologies across a broad array of social contexts, incorporating historical, cultural, economic, legal, and political perspectives. The course provides an in-depth study of contemporary AI, from its historical development and varied definitions to current issues, emphasizing the relationship between power dynamics and ethical considerations. After establishing a foundation in theories and the study of ethics and power, the course delves into diverse aspects of AI, including the implications of human labor and material infrastructures in the development of the technology, concerns related to bias and discrimination, and its impacts on the environment. The concluding module applies these discussions to real-world scenarios, exploring how to address ethical and societal issues through legal and human rights frameworks, governance and regulation, and grassroots initiatives. This course is ideal for both computer science and engineering students seeking a socio-humanistic perspective on artificial intelligence, and humanities and social sciences students interested in the societal implications of AI. HU, SO
M 4pm-5:55pm
CPSC 2200b, Introduction to Data Analysis and Machine Learning for Humanities and Social Sciences Sohee Park
Humanities and social sciences majors find it hard to learn contemporary machine learning and data Ssience techniques because existing courses require linear algebra, multivariate calculus, and extensive coding experiences. This course teaches a practical introduction to data analysis and machine learning for humanities and social sciences students without college-level math or extensive programming experiences. Prerequisites: Programming experience with Python; CPSC 110, CPSC 200, or similar. Basic knowledge of social science research methods or humanities analysis is helpful. Students who satisfy the math and computer science requirements for CPSC 381 should take that course instead. Students who have taken CPSC 381 are not eligible to enroll in this course. QR 0 Course cr
HTBA
CPSC 2230a or b, Data Structures and Programming Techniques Staff
Topics include programming in C; data structures (arrays, stacks, queues, lists, trees, heaps, graphs); sorting and searching; storage allocation and management; data abstraction; programming style; testing and debugging; writing efficient programs. After CPSC 2000 or 2010 (formerly CPSC 200 or 201). QR 0 Course cr
HTBA
* CPSC 2265a / AMST 2265a, Topics in Critical Computing Julian Posada and Teddy Kim
This course introduces the social, cultural, and political contexts shaping the contemporary development and use of computing and information technology. Through structured discussions, lectures, and collaborative activities, participants will explore computing's historical evolution, ethical and societal implications, and tangible impacts, including its reliance on transnational infrastructures and environmental effects. Emphasis will be placed on analyzing computer-related social issues through theoretical and critical approaches, empirical research, and governance frameworks, as well as both technical and social strategies for addressing key challenges. The course is designed for students from diverse academic backgrounds across all divisions, aiming to develop a nuanced understanding of computation's intersection with broader social systems and to equip them with tools to engage with critical issues in the rapidly shifting digital landscape. HU, SC
M 1:30pm-3:25pm
* CPSC 2800a, Directed Reading Teddy Kim
Individual study for qualified students who wish to investigate an area of computer science not covered in regular courses. A student must be sponsored by a faculty member who sets the requirements and meets regularly with the student. Requires a written plan of study approved by the faculty adviser and the director of undergraduate studies. May be taken more than once for credit.
HTBA
* CPSC 2900a, Directed Research Teddy Kim
Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies. May be taken more than once for credit.
HTBA
CPSC 3230a or b, Introduction to Systems Programming and Computer Organization Staff
Machine architecture and computer organization, systems programming in a high-level language, issues in operating systems, software engineering, prototyping in scripting languages. After CPSC 223. QR
HTBA
CPSC 3270a or b, Object-Oriented Programming Timothy Barron
Object-oriented programming as a means to designing and writing efficient, reliable, modular, and reusable code. Covers core concepts and features of object-oriented languages (classes, inheritance, composition, encapsulation, polymorphism, and exceptions) as well as the use of object-oriented design patterns (iterator, decorator, strategy, adapter, observer, etc.). This course was previously number CPSC 427. After CPSC 223. QR
HTBA
CPSC 3340a, Creative Embedded Systems Scott Petersen
Ubiquitous computing is creating new canvases and opportunities for creative ideas. This class explores the use of microprocessors, distributed sensor networks, IoT, and intermedia systems for the purposes of creative expression. The course is delivered in a mixed lecture and lab format that introduces the fundamental concepts and theory behind embedded systems as well as issues particular to their creative employment. The key objective of the course is for students to conceive of and implement creative uses of computation. To this end, skills to be obtained during the course are as follows: (1) appreciate the current efforts and motivation to push the limitations of computation for creative expression, both in new application and new foundational research; (2) weigh factors such as cost, power, processing, memory, I/O capabilities, and networking capabilities when choosing a set of embedded devices and sensors; (3) contextualize unfamiliar hardware and languages through examples, documentation, and familiar design pattern; and (4) manage communication between multiple languages, devices, and protocols. Additionally, at the end of the course students will have a portfolio of their work in the form of writing, code, video, audio, and physical artifacts. Prerequisite: CPSC 223 or equivalent or by permission of instructor. QR RP
TTh 1:30pm-3:25pm
CPSC 3640a, Decentralized Payments, Contracts, and Finance for Humans and AI Fan Zhang
Blockchains provide a platform for humans to coordinate economic activity without relying on centralized intermediaries. Emerging standards such as EIP-8004 aim to extend these capabilities to autonomous agents, enabling AI systems to transact and coordinate through shared protocols. This introductory course explores such decentralized applications, including tokens, exchanges, lending protocols, stablecoins, oracles, decentralized governance, and emerging standards for AI coordination and interoperability. Students learn system architecture, security intuition, and how to build and debug decentralized applications. Required: CPSC 201 and 202 (or equivalent), and a basic understanding of computer systems and networks. QR
MW 11:35am-12:50pm
CPSC 3650a or b / ECON 3365a or b, Algorithms Staff
Paradigms for algorithmic problem solving: greedy algorithms, divide and conquer, dynamic programming, and network flow. NP completeness and approximation algorithms for NP-complete problems. Algorithms for problems from economics, scheduling, network design and navigation, geometry, biology, and optimization. Provides algorithmic background essential to further study of computer science. Only one of CPSC 365 or CPSC 366 may be taken for credit. Prerequisites: CPSC 202 or MATH 244, CPSC 223. QR
HTBA
CPSC 3700a, Artificial Intelligence Tesca Fitzgerald
How can we enable computers to make rational, intelligent decisions? This course explores fundamental techniques for Artificial Intelligence (AI), covering topics such as search, planning, learning, and reasoning under uncertainty. Through hands-on programming projects, students learn conceptual, algorithmic, and practical considerations for implementing foundational AI algorithms. By the end of this class, students have an understanding of the history and breadth of AI problems and topics, and are prepared to undertake more advanced courses in robotics, computer vision, natural language processing, and machine learning. Prerequisites: CPSC 202 and CPSC 223. Students should also be familiar with basic object-oriented programming concepts in Python.
TTh 1:05pm-2:20pm
CPSC 3810b, Introduction to Machine Learning Alex Wong
This course focuses on fundamental topics in machine learning. We begin with an overview of different components of machine learning and types of learning paradigms. We introduce a linear function, discuss how one can train a linear function on a given dataset, and utilize it to tackle classification and regression problems. We then consider kernel methods to enable us to solve nonlinear problems. Additionally, we introduce the concept of generalization error and overfitting. We discuss the role of regularization and extend linear regression to ridge regression. We also cover optimization, beginning from gradient descent and extending it to stochastic gradient descent and its momentum variant; the concept of alternating optimization; the curse of dimensionality; and topics on dimensionality reduction. We conclude the course with neural networks: how to build them using the topics discussed, how to optimize them, and how to apply them to solve a range of machine learning tasks. Students should have passed courses in data structures and object-oriented programming (e.g. CPSC 223a or equivalent courses), foundational mathematical tools such as discrete math and linear algebra (e.g. CPSC 202 or equivalent courses), calculus (e.g. MATH 112, MATH 115, MATH 120, or equivalent courses), linear algebra (e.g. MATH 225, or equivalent courses), and artificial intelligence (e.g. CPSC 370/570). A background in statistics will be useful, but not required. Experience in programming with Python and familiarity with Google Colab, and numerical and image processing packages (i.e. NumPy, SciPy) will be helpful.
HTBA
CPSC 4190a, Full Stack Web Programming Alan Weide
This course introduces students to a variety of advanced software engineering and programming techniques in the context of full-stack web programming. The focus of the course includes both client- and server-side programming (and database programming), client/server communication, user interface programming, and parallel programming. This course is designed for students who have taken CPSC 223 (but do not need CPSC 323 or higher-level computer science systems courses) and wish to learn the complete programming framework of Web programming. For a systematic treatment of core software engineering techniques, using Web programming as a running example framework, consider taking CPSC 439, which targets students with more extensive programming experiences (after CPSC 323). Prerequisite: CPSC 223
MW 9am-10:15am
CPSC 4310a / MUSI 4228a, Computer Music: Algorithmic and Heuristic Composition Scott Petersen
Study of the theoretical and practical fundamentals of computer-generated music, with a focus on high-level representations of music, algorithmic and heuristic composition, and programming languages for computer music generation. Theoretical concepts are supplemented with pragmatic issues expressed in a high-level programming language. Ability to read music is assumed. After CPSC 202 and 223. QR
MW 11:35am-12:50pm
CPSC 4370a, Database Systems Avi Silberschatz
Introduction to database systems. Data modeling. The relational model and the SQL query language. Relational database design, integrity constraints, functional dependencies, and normal forms. Object-oriented databases. Database data structures: files, B-trees, hash indexes. After CPSC 223. QR
TTh 9am-10:15am
CPSC 4371a, Database Design and Implementation Robert Soule
This course covers advanced topics in Database Systems, expanding on the material covered in CPSC 4381. Topics include complex data types; application development; big data; data analytics; parallel and distributed storage; parallel and distributed query processing; advanced indexing techniques; advanced relational database design; and object-based databases. QR
TTh 9am-10:15am
CPSC 4390a, Software Engineering Timos Antonopoulos
Introduction to fundamental concepts in software engineering and to the development and maintenance of large, robust software systems. The process of collecting requirements and writing specifications; project planning and system design; methods for increasing software reliability, including delta debugging and automatic test-case generation; type systems, static analysis, and model checking. Students build software in teams. After CPSC 323. QR
TTh 11:35am-12:50pm
CPSC 4410a, Verifiable, Private, Decentralized Computing in the Age of AI Ben Fisch
You type your question into ChatGPT and get back a response – how do you trust its accuracy? Perhaps you have reviewed the latest published benchmark results for GPT-4, or trust that others have. But how do you know the response you are getting from OpenAI’s servers is the true output of GPT-4? Perhaps due to a bug or system overload your question was handled by a weaker AI model. Or worse, perhaps the servers were hacked by someone maliciously giving you incorrect results. And, how do you trust that the sensitive questions you are sending to ChatGPT will not be leaked or used against you? This is a course in cryptographic proof systems. In the digital world today, we trust services to perform many kinds of computations on our data, from managing financial ledgers and databases to complex analytics, such as large-language model (LLM) inference. We trust these services not only to operate correctly, but also to keep our information private. Cryptographic systems allow us to remove this trust. A “succinct” cryptographic proof enables a service to attach a small certificate on the correctness of its computation which can be verified easily on a low-power device, even if the original computation was extremely complex. The proof of some ML computation that was run for hours on a GPU farm can fit in an email and take just milliseconds to verify on a mobile device! Beyond correctness, a “zero-knowledge” proof system enables us to prove knowledge of secret information, including hidden inputs to a computation that achieves a certain output. For instance, OpenAI could prove that the response is the true output of GPT-4 (a proprietary model) without revealing sensitive details about the model itself. In industry, the market for cryptographic proofs is currently around $75 million and projected to reach $10 billion by 2030, according to some estimates. Cryptographic proofs have become the leading technology for scaling blockchains and achieving privacy in cryptocurrencies. Verifiable and zero-knowledge computing also create an important foundation for decentralizing AI services. Training and serving large models currently require vast resources, leading to centralization. Decentralized ML networks offer a compelling alternative—letting many independent operators contribute incremental work to the overall task using their own resources big or small, from a single GPU to a server cluster, and earn a share of the payments clients make to use the service. In such a setting it is critical to verify that operators contribute incremental work correctly. Or, they may use private data to jointly train an ML model. Succinct zero-knowledge proofs would enable these operators to prove correctness of their work without revealing sensitive data. We will cover some of the other challenges and directions in decentralized model training and inference, such as reducing the amount of data that needs to be communicated between physically distributed islands of hardware and the potential role of reinforcement learning. Prerequisites: CPSC 201 and 202 (or equivalent, e.g. MATH 244). Recommended: CPSC 467 (Cryptography), MATH 225 (Linear Algebra).
MW 1:05pm-2:20pm
CPSC 4470a, Introduction to Quantum Computing Yongshan Ding
This course introduces the fundamental concepts in the theory and practice of quantum computation. Topics include information processing, quantum programming, quantum compilation, quantum algorithms, and error correction. The objective of the course is to engage students in applying fresh thinking to what computers can do – we establish an understanding of how quantum computers store and process data, and discover how they differ from conventional digital computers. We anticipate this course will be of interest to students working in computer science, electrical engineering, physics, or mathematics. Prerequisites: CPSC 201 and CPSC 202. Basic familiarity with discrete probability and linear algebra is recommended. Prior experience in quantum computing is useful but not required. SC
MW 11:35am-12:50pm
CPSC 4540a, Software Analysis and Verification Ruzica Piskac
Introduction to concepts, tools, and techniques used in the formal verification of software. State-of-the art tools used for program verification; detailed insights into algorithms and paradigms on which those tools are based, including model checking, abstract interpretation, decision procedures, and SMT solvers. After CPSC 202 and 323 or equivalents. QR RP
TTh 2:35pm-3:50pm
CPSC 4550a / ECON 4425a, Algorithmic Game Theory Yang Cai
A mathematically rigorous investigation of the interplay of economic theory and computer science, with an emphasis on the relationship of incentive-compatibility and algorithmic efficiency. Our main focus is on algorithmic tools in mechanism design, algorithms and complexity theory for learning and computing Nash and market equilibria, and the price of anarchy. Case studies in Web search auctions, wireless spectrum auctions, matching markets, and network routing, and social networks. Prerequisite: CPSC 3650 (formerly CPSC 365) or permission of the instructor. Familiarity with basic microeconomic theory is helpful but not required. QR
MW 2:35pm-3:50pm
* CPSC 4570a, Sensitive Information in a Connected World Michael Fischer
Issues of ownership, control, privacy, and accuracy of the huge amount of sensitive information about people and organizations that is collected, stored, and used by today's ubiquitous information systems. Readings consist of research papers that explore both the power and the limitations of existing privacy-enhancing technologies such as encryption and "trusted platforms." Junior or senior level standing with some background in computer science is required.
MW 2:35pm-3:50pm
* CPSC 4590a, Building Interactive Machines Marynel Vazquez
This advanced course brings together methods from machine learning, computer vision, robotics, and human-computer interaction to enable interactive machines to perceive and act in a variety of environments. Part of the course examines approaches for perception with different sensing devices and algorithms; the other part focuses on methods for decision making and applied machine learning for control. Understanding of probability, differential calculus, linear algebra, and planning (in Artificial Intelligence) is expected for this course. Programming assignments require proficiency in Python and high-level familiarity with C++. Prerequisites: CPSC 201, CPSC 202, and CPSC 470 (or 570), or permission of the instructor. QR
MW 11:35am-12:50pm
* CPSC 4640a, Algorithms and their Societal Implications Nisheeth Vishnoi
Today’s society comprises humans living in an interconnected world that is intertwined with a variety of sensing, communicating, and computing devices. Human-generated data is being recorded at unprecedented rates and scales, and powerful AI and ML algorithms, which are capable of learning from such data, are increasingly controlling various aspects of modern society: from social interactions. These data-driven decision-making algorithms have a tremendous potential to change our lives for the better, but, via the ability to mimic and nudge human behavior, they also have the potential to be discriminatory, reinforce societal prejudices, violate privacy, polarize opinions, and influence democratic processes. Thus, designing effective tools to govern modern society which reinforce its cherished values such as equity, justice, democracy, health, privacy, etc. has become paramount and requires a foundational understanding of how humans, data, and algorithms interact. This course is for students who would like to understand and address some of the key challenges and emerging topics at the aforementioned interplay between computation and society. On the one hand, we study human decision-making processes and view them through the lens of computation and on the other hand we study and address the limitations of artificial decision-making algorithms when deployed in various societal contexts. The focus is on developing solutions through a combination of foundational work such as coming up with the right definitions, modeling, algorithms, and empirical evaluation. The current focus is on bias and privacy, with additional topics including robustness, polarization, and democratic representation. Solid mathematical and programming background is necessary to enroll in this course. CPSC 365 and S&DS 251 are recommended.
T 9:25am-11:20am
CPSC 4670a, Introduction to Cryptography Charalampos Papamanthou
This class introduces modern symmetric and public-key cryptography as well as their broad applications, both from a theoretical and practical perspective. There is an initial emphasis on fundamental cryptographic primitives (e.g., block ciphers, pseudorandom functions, pseudorandom generators, one-way functions), their concrete efficiency and implementation as well as their security definitions and proofs. Ways of combining such primitives that lead to more complex objects used to secure today’s internet (e.g., via TLS), such as key exchange, randomized encryption, message authentication codes and digital signatures are also studied. The last part of the class is devoted to modern and more advanced applications of cryptography (some of which are deployed at scale today), such as authenticated data structures, zero-knowledge proofs, oblivious RAM, private information retrieval, secret sharing, distributed consensus and cryptocurrencies (e.g, Bitcoin). Some programming may be required. After CPSC 202 or MATH 244, and CPSC 223. QR
TTh 11:35am-12:50pm
CPSC 4690a, Randomized Algorithms James Aspnes
A study of randomized algorithms from several areas: graph algorithms, algorithms in algebra, approximate counting, probabilistically checkable proofs, and matrix algorithms. Topics include an introduction to tools from probability theory, including some inequalities such as Chernoff bounds. After CPSC 365 or 366; a solid background in probability is desirable. QR
MW 2:35pm-3:50pm
CPSC 4720a, Intelligent Robotics Brian Scassellati
Introduction to the construction of intelligent, autonomous systems. Sensory-motor coordination and task-based perception. Implementation techniques for behavior selection and arbitration, including behavior-based design, evolutionary design, dynamical systems, and hybrid deliberative-reactive systems. Situated learning and adaptive behavior. After CPSC 201 and 202 or equivalents. May not be taken after CPSC 473. QR
MWF 10:30am-11:20am
CPSC 4740a, Computational Intelligence for Games James Glenn
Introduction to techniques used for creating computer players for games, particularly board games. Topics include combinatorial and classical game theory, stochastic search methods, applications of neural networks, and procedural content generation. Prerequisites: CPSC 202 and CPSC 223. QR
TTh 9am-10:15am
CPSC 4791a, Building Game Engines Michael Shah
This course teaches the fundamentals of building a reusable software architecture by building games. This is a programming intensive course where the end product of this course is a data-driven game engine that students work in small teams to implement in a systems programming language (e.g. C, C++, D, etc.). Students apply data structures, algorithms, and systems programming skills in the domain of games. Discussion and implementation of the components of a game engine may include: resource management (allocators, resource managers, serialization), abstraction (design patterns, game objects, scripting, graphics layers), graphics management algorithms (scene graphs, level of detail), physics (linear algebra, collision detection and resolution algorithms), artificial intelligence (e.g. pathfinding,decision making), and performance (concurrency, parallelism, math). Students work on a final course project for their portfolio. Prerequisites: CPSC 2230 and CPSC 3230
MW 4pm-5:15pm
CPSC 4800a, Introduction to Computer Vision Alex Wong
This course focuses on fundamental topics in computer vision. We begin with the image formation process and discuss the role of camera models and intrinsic calibration in perspective projection. Basic image processing techniques (i.e. filtering) is introduced. After which, we discuss techniques to describe an image, from edges to feature descriptors and methods to establish correspondences between different images of the same scene. The course additionally covers topics in recognition (i.e. image classification, segmentation, detection, etc.) and reconstruction (i.e. stereo, structure-from-motion, optical flow). Machine learning and deep learning based methods in a subset of the topics covered are also introduced. Students get hands-on experience in implementing the techniques covered in the class and applying them to real world datasets and applications. Students taking this course must have successfully passed courses in data structures and object-oriented programming (e.g. CPSC 223a or equivalent courses), and foundational mathematical tools such as discrete math and linear algebra (e.g. CPSC 202 or equivalent courses). It is recommended that students have taken or successfully passed calculus (e.g. MATH 112, MATH 115, MATH 120, or equivalent courses), and linear algebra (e.g. MATH 225, or equivalent courses). A background in statistics, machine learning and deep learning is useful, but not required. Experience in programming with Python is preferable, as we use it for assignments and projects. Familiarity with Google Colab, and numerical and image processing packages (i.e. NumPy, SciPy, and Sci-kit Image) is helpful throughout the course.
TTh 1:05pm-2:20pm
CPSC 4844a / AMTH 3220a / MATH 3220a, Geometric and Topological Methods in Machine Learning Smita Krishnaswamy
This course provides an introduction to geometric and topological methods in data science. Our starting point is the manifold hypothesis: that high dimensional data live on or near a much lower dimensional smooth manifold. We introduce tools to study the geometric and topological properties of this manifold in order to reveal relevant features and organization of the data. Topics include: metric space structures, curvature, geodesics, diffusion maps, eigenmaps, geometric model spaces, gradient descent, data embeddings and projections, and topological data analysis (TDA) in the form of persistence homology and their associated “barcodes.” We see applications of these methods in a variety of data types. Prerequisites: MATH 2250 or 2260; MATH 2550 or 2560; MATH 3020; and CPSC 1001 or equivalent programming experience. QR, SC
TTh 11:35am-12:50pm
CPSC 4880a, AI Foundation Models Arman Cohan
Foundation models are a recent class of AI models that are large-scale in terms of number of parameters and are trained on broad data (generally using self-supervision at scale). These models have demonstrated exceptional capabilities in natural language processing, computer vision, and other tasks. Examples of Foundation Models are GPT-4, ChatGPT, GPT-3, Dall-E, Stable Diffusion, etc. In this course, we discuss building blocks of foundation models, including transformers, self-supervised learning, transfer learning, learning from human feedback, power of scale, large language models, in-context learning, chain-of-thought prompting, parameter-efficient fine-tuning, vision transformers, diffusion models, generative modeling, safety, ethical and societal considerations, their impact, etc. While the course primarily focuses on advances on large language models, we also cover foundation models in computer vision, as well as multi-modal foundation models. Prerequisite: Either CPSC 477 or CPSC 480, or permission of the instructor.
MW 2:35pm-3:50pm
* CPSC 4900a, Senior Project Sohee Park
Individual research intended to fulfill the senior requirement. Requires a faculty supervisor and the permission of the director of undergraduate studies. The student must submit a written report about the results of the project.
F 1:30pm-3:20pm