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. Professor Pentecost.

How to handle overenrollment: Preference is given to majors.

Sem: Multilingual NLP

This course is a research-based seminar on multilingual natural language processing (NLP), focused on synthesizing NLP research which elucidates how the complexity of the world’s languages impacts NLP technologies. We will focus primarily on low-resource and endangered language models, semantic representations, and the evaluation of multilingual text generation. Upon completing this class, students should be able to engage with new language technologies as they emerge. To do this, students will survey, analyze, and present state-of-the-art research articles within multilingual NLP.

Sem: Evolutionary Comp

Evolutionary computation techniques harness the mechanisms of biological evolution, including mutation, recombination, and selection, to build software systems that solve difficult problems or shed light on the nature of evolutionary processes. In this course students will explore several evolutionary computation techniques and apply them to problems of their choosing. The technique of genetic programming, in which populations of executable programs evolve through natural selection, will be emphasized.

Algorithms

This course addresses the design and analysis of computer algorithms. Topics include: set algorithms such as sorting and searching, graph algorithms, string algorithms, and matrix algorithms. Algorithm design paradigms, including the divide-and-conquer, dynamic programming, and greedy paradigms, will be emphasized. The course will end with a discussion of the theory of NP-completeness and its implications.

Requisite: COSC 112 and COSC 211. Admission with consent of the instructor. Fall semester: Professor Rager. Spring semester: Professor Kryven.

Systems II: O/S

This course will cover the crucial responsibilities and mechanisms of operating system kernels, focusing on the themes of abstraction, virtualization, concurrency, caching, and persistence.  Topics will include processes, memory management and virtual memory, multi-processing and threads, file systems, and virtual machines.

Requisite: COSC-112 and COSC-171 or COSC-175. Spring semester: Professor Kaplan.

How to handle overenrollment: null

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.

Artificial Intelligence

An introduction to the ideas and techniques that allow computers to perform intelligently. The course will discuss methods of adversarial game playing and of solving general problems using heuristic search. It will also discuss the design of agents that learn either from experience or from a provided dataset. The course will cover both theoretical aspects of AI and practical considerations such as noisy sensor readings. Three class meetings per week. Offered in alternate years.

Requisite: COSC 211. Limited to 50 students. Spring semester: Professor Wu.

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.

Writing in STEM

(Offered as ENGL 298 and COSC 203) This interdisciplinary Intensive Writing course investigates the role of writing in public discourse about STEM research, focusing on the way that the general public understands–or misunderstands–science and data. It teaches students to communicate technical information to a variety of audiences beyond academia. As such, this course will involve a community-engaged learning project related to science and communication. Assigned texts will include a range of sources (books, articles, podcasts, videos) from writing studies and a STEM discipline.

Subscribe to