Senior Honors

Open to seniors with consent of the Department.

Spring semester. The Department.

How to handle overenrollment: null

Students who enroll in this course will likely encounter and be expected to engage in the following intellectual skills, modes of learning, and assessment: (none specified)

Special Topics

Independent reading course.

Fall and spring semesters. The Department.

How to handle overenrollment: null

Students who enroll in this course will likely encounter and be expected to engage in the following intellectual skills, modes of learning, and assessment: (none specified)

Seminar: Memory Systems

This course surveys emerging and alternative memory system technologies and design paradigms.  Key concepts include in-memory and near-memory computation, embedded non-volatile memory technologies, and memory organization and policies for hardware accelerators.  Students will engage with research papers and complete a final project of their choosing.

Requisite: COSC-171, COSC-211 or consent of the instructor. Spring semester: Assistant Professor Pentecost.

How to handle overenrollment: Preference is given to majors.

Special Topics

Independent reading course.

Fall and spring semesters. The Department.

How to handle overenrollment: null

Students who enroll in this course will likely encounter and be expected to engage in the following intellectual skills, modes of learning, and assessment: (none specified)

Theory Machine Learning

This course covers the mathematical underpinnings of machine learning. It provides a rigorous treatment of questions such as: What does it mean to learn? How can a machine learn? What concepts are learnable? How can we quantify the resources needed to learn? Students should be familiar with common learning paradigms (classification and regression) and algorithms (e.g., linear regression, decision trees, k-nearest neighbors) and comfortable with mathematical proofs. After a brief review of how various machine learning algorithms work, this course will focus on why they work.

Operating Systems

Without an operating system, programmers would need to write code specific to each computer’s hardware, all while trying not to interfere with the functioning of other programs trying to use that same hardware.  An operating system kernel abstracts the hardware to make programming easier, controls how the hardware is shared between programs, and provides essential capabilities like processes, threads, virtual memory, file systems, network sockets, and virtual machines.  This course explores how the kernel provides those capabilities efficiently.  The course will involve

Program Lang Paradigms

The main purpose of a programming language is to provide a natural way to express algorithms and computational structures. The meaning of “natural” here is controversial and has produced several distinct language paradigms. Furthermore, the languages themselves have shaped our understanding of the nature of computation and of human thought processes. We will explore some of these paradigms and discuss the major ideas underlying language design. Several languages will be introduced to illustrate ideas developed in the course.

Data Structures

A fundamental problem in computer science is that of organizing data so that it can be used effectively. This course introduces basic data structures and their applications. Major themes are the importance of abstraction in program design and the separation of specification and implementation. Program correctness and algorithm complexity are also considered. Data structures for lists, stacks, queues, dictionaries, sets, and graphs are discussed. This course will provide advanced programming experience.

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. Spring semester: Professors Kaplan and 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. Spring semester: Professors Kaplan and Pentecost.

Subscribe to