2024-2025 Catalog

COMP 395 Special Topics in Computer Science

Topics vary semester to semester.

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.

Computational Science Fundamentals

This course covers tools and techniques to collect, prepare, analyze and visualize data in the process of research or investigative inquiry. Students will learn how to collect and organize data, and subsequently learn statistical techniques to prepare/clean it for analysis, such as imputation and dealing with outliers. In the process of data exploration, students will describe data, identify relationships between variables, and understand the structure of datasets. Visual representations of data will be used to discover patterns, and convey findings. The psychology underpinning understanding and reading visualizations will also be covered using a grammar of graphics approach.

Prerequisites: COMP 131, COMP 181, or COMP 229

High Performance Computing

This course covers high-performance computing, which refers to techniques, hardware, and software used to further speed up processing beyond a typical CPU desktop configuration. Students will learn to write code optimized for multi-core processors, employing parallelization strategies for hardware using OpenMP and MPI. Students will learn how to access and use Oxy's HPC cluster, as well as explore cloud platform solutions, tools, and programming languages used in both academic and industry environments.

Prerequisites: COMP 229

Category Theory

Category theory is often regarded as the "mathematics of mathematics" and provides a natural context to discuss types of objects, their internal structure, and their relationships to other objects of the same or different contexts. Categorical descriptions naturally imbue systems with intrinsically algebraic structures, leading to a flexible descriptive framework for systems across many disciplines. Although the theory has its origins in pure mathematics (originally as the outgrowth of algebraic topology), applied scientists, engineers, and computer scientists have looked more and more towards category theory for modern approaches to solving and framing problems in technology and organization. This course will cover the basics of category theory, it's applications to Boolean logic, to databases and to the Haskell programming language.

Prerequisites: COMP 149 or MATH 210, and COMP 229

Modeling and Simulation

The modeling and simulation of natural and societal phenomenon is widespread, and is increasingly used as a tool to understand the world where experiments are not possible or prohibitively costly. From the simplest system of equations to the most complex molecular simulations, from game theory to population dynamics, models are used across the social and physical sciences, and even as inspiration for artwork and video games. This course will address some of the questions that simulations raise - What makes a "good" model? When should a simulation be trusted? - and also explore how the underlying mathematical and computational tools, such as Bayesian probability, agent-based modeling, network models, and others, are used across different domains in multiple disciplines.

Prerequisites: COMP 131

Deep Learning

Since 2012 when AlexNet won the ImageNet competition with a shocking 10.8% higher accuracy than its closet competitor, deep neural networks (DNNs) and deep learning have been core to a number of substantial advances: the AlphaZero general game-playing agent, the broad adoption of speech and image recognition, and of course generative tools such as stable diffusion and large language models (LLMs). In this course, students will learn several of the fundamentals and current trends in deep learning. Starting with concepts in and building blocks of DNNs, including activation functions and regularizers, as well as convolutional and pooling layers, this course will look at architectures such as recurrent networks and autoencoders, and where the field of deep learning may go from here.

Prerequisites: COMP 229

Critical Code Studies

What might come about when interrogating programming source code? Although code is written to be compiled into applications and read by machines, coding itself is an art in that it is an expression of human skill and imagination. Nonetheless, code embeds biases and unexamined assumptions about how the world works and how systems should operate. Much like a fiction novel is interrogated for the meaning of certain characters, objects, and scenes - the symbols embedded in the text - we will look at source code to see if we can find meaning in the various structures, algorithms, and solutions that make computers run. This course takes a formal approach, known as Critical Code Studies, to understand the subjective choices that go into creating code and how those choices can be made visible. In the first part of the course, students will engage code through case studies to identify computer science functions, the conditions under which code is written, its ability to be rewritten and repurposed, and implications to broader social ecosystems. Later, armed with these critical tools, students will collaborate to create a public-facing arts exhibit designed to illuminate the social and artistic nature of code, expressing themselves through such media as collage, printmaking, and digital arts.

Prerequisites: COMP 131

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.

Prerequisites: COMP 239

Game Industry

The video games industry generates a higher revenue than film and television combined, and this is not a new trend: sources suggest that this occurred as early as the 1980s. The last decade or two has also seen the rise of "indie" games: games developed by small teams of programmers that have received widespread attention and critical acclaim, distributed via channels such as Steam and itch.io. This course invites students to learn about the video game industry by participation: students will idea, develop, and test a complete game, that will be published on itch.io at the end of the semester.

Prerequisites: COMP 131

Credits

4 units