Computer Graphics

This course will explore the algorithms used to create “realistic” three-dimensional computer images. Major topics will include object representations (polygons, curved surfaces, functional models), rendering algorithms (perspective transformations, hidden-surface removal, reflectance and illumination, shadows, texturing), and implementation techniques (scan conversion, ray tracing, radiosity). Students will create images using Pixar's Renderman.

Requisite: COSC 112 or consent of the instructor. Limited to 50 students. Spring semester. Professor Rager.

Parallel and Distributed

Modern computers are becoming increasingly parallel, with many cores or processors working concurrently to perform a single task. In order to utilize the full power of modern computers, it is essential to write programs that exploit parallelism. This course introduces students to the art and science of writing parallel programs. We consider two computing paradigms: shared memory and message passing.

Machine Learning

Machine Learning algorithms allow computers to be taught to perform tasks without being explicitly programmed. This course is an introduction to machine learning and data mining. The course will explore supervised, unsupervised, ensemble and reinforcement learning. Topics may include: decision tree learning, rule learning, neural networks, support vector machines, Bayesian learning, clustering, hidden Markov model learning, and/or deep learning. The material of this course has some overlap with that of Computer Science 241, but it is permissible to take both.

Algorithms & Vis.

In this course, we will explore how algorithmic and aesthetic principles can be employed in concert to create interactive graphical content on the web. Topics will include design layout and combinatorial optimization, the geometry of color spaces, graph drawing, computational geometry, generative design, and visualization of data and algorithms. In addition, we will consider issues of algorithmic efficiency in performing computationally intensive tasks. We will investigate topics from both theoretical and applied perspectives.

Computer Systems

This course will examine the principles and design choices involved in creating general purpose computer systems. Topics will include instruction set architectures, virtual memory, caching, allocators and garbage collectors, threads and synchronization, file systems, virtual machines, and distributed systems. Projects will involve the implementation and use of these capabilities and abstractions. Students who have taken COSC 261 may not take this course.

Requisite: COSC 112. Fall and spring semesters: Assistant Professor Pentecost.

Computer Systems

This course will examine the principles and design choices involved in creating general purpose computer systems. Topics will include instruction set architectures, virtual memory, caching, allocators and garbage collectors, threads and synchronization, file systems, virtual machines, and distributed systems. Projects will involve the implementation and use of these capabilities and abstractions. Students who have taken COSC 261 may not take this course.

Requisite: COSC 112. Fall and spring semesters: Assistant Professor Pentecost.

Thinking for CS

Analytical thinking is inherent in every aspect of computer science. We need to be able to answer questions such as: how do I know that my program works correctly? How efficient is my approach to solving a problem? How does human-readable code get translated into something that can run on physical hardware? What problems are even solvable by computers? In order to study such questions, computer scientists must be able to communicate with one another using a common language, express ideas formally and precisely, and reason logically about these ideas.

Intro CompSci II Lab

COSC 112 Lab Section

A continuation of COSC 111. This course will emphasize more complicated problems and their algorithmic solutions. The object-oriented programming paradigm will be discussed in detail, including data abstraction, inheritance, and polymorphism. Other topics will include stacks, queues, linked lists, programming for graphical user interfaces, and basic topics in probability. A laboratory section will meet once a week to give students practice with programming constructs.

Intro CompSci II Lab

COSC 112 Lab Section

A continuation of COSC 111. This course will emphasize more complicated problems and their algorithmic solutions. The object-oriented programming paradigm will be discussed in detail, including data abstraction, inheritance, and polymorphism. Other topics will include stacks, queues, linked lists, programming for graphical user interfaces, and basic topics in probability. A laboratory section will meet once a week to give students practice with programming constructs.

Intro CompSci II Lab

COSC 112 Lab Section

A continuation of COSC 111. This course will emphasize more complicated problems and their algorithmic solutions. The object-oriented programming paradigm will be discussed in detail, including data abstraction, inheritance, and polymorphism. Other topics will include stacks, queues, linked lists, programming for graphical user interfaces, and basic topics in probability. A laboratory section will meet once a week to give students practice with programming constructs.

Subscribe to