CS Curricula

←All schools

Vassar CollegeWebsiteAcademic Catalog

Computer ScienceDepartment Website

Majors

Courses

source 1

CMPU 100: Programming with Data (1) intro

Introduces fundamentals of computer programming and data analysis. Students learn to write programs to collect, clean, transform, and visualize data from a variety of domains. Working on real-world problems and data sets, students also consider social issues surrounding data collection and analysis. This course is designed for students from any discipline who want to learn to use programming as a tool for data-driven discovery. No prior programming experience is required. A weekly laboratory period provides guided hands-on experience. The Department.

CMPU 101: Problem-Solving and Abstraction (1) intro

Introduces object-oriented software design, covering objects and classes, abstraction, encapsulation, inheritance, and polymorphism. Additional topics include recursion, unit testing, and error handling. Students who are thinking about the Computer Science major should take this course. A weekly laboratory period provides guided hands-on experience. The Department.

CMPU 102: Data Structures and Algorithms (1) intro

Explores ways to solve computational problems by organizing data in canonical data structures and associated algorithms, using an object-oriented programming language. Data structures that realize common abstract data types such as lists, queues, stacks, maps, and trees are studied in depth. Additionally, common algorithm design techniques and asymptotic analysis are introduced. A weekly laboratory period provides guided hands-on experience. The Department.

CMPU 144: Foundations of Data Science (1) intro

This course focuses on the development and practice of computational and inferential thinking. Students are introduced to the fundamentals of programming and inference. Students learn to write programs, create data visualizations, and work with real-world datasets, culminating in a final data analysis project.

CMPU 145: Foundations of Computer Science (1) intro

Uses the functional programming paradigm to illuminate the important connections between recursive data structures, recursive functions and (structural) induction. Other topics include: sets, logic and probability. Concepts are reinforced by regular assignments with mathematical and programming components. A weekly laboratory period provides guided hands-on experience. The Department.

CMPU 203: Computer Science III: Software Design and Implementation (1) softeng

Focuses on the systematic application of scientific principles to the development of computer software, from requirements analysis to design, implementation, and testing. Covers techniques such as iterative development, use cases, and software design patterns, as well as tools such as source version control and Unified Modeling Language (UML) diagrams. Students consolidate knowledge by working in groups on the creation of a mobile application of their own design over the course of the semester. Rui Meireles.

CMPU 224: Computer Organization (1) sys

Examines the hierarchical structure of computing systems, from digital logic and microprogramming through machine and assembly languages. Topics include the structure and workings of the central processor, instruction execution, memory and register organization, addressing schemes, input and output channels, and control sequencing. The course includes a weekly hardware/software laboratory where digital logic is explored and assembly language programming projects are implemented.

CMPU 240: Theory of Computation (1) theory

Introduces the theory of computation while exploring the fundamental powers and limitations of all computing machines. Considers appropriate models of a computer and what problems are and are not solvable in such models. Aims to develop an understanding of the intimate connection between computation and language recognition, using as examples several classes of abstract machines and the corresponding classes of formal languages. Students learn how to reason about the nature of computation itself, and develop the intuition of a computer scientist. Provides theoretical foundations for CMPU 331 and 366.

CMPU 241: Analysis of Algorithms (1) algs

Introduces the systematic study of algorithms and their analysis with regard to time and space complexity. Topics include divide-and-conquer, dynamic programming, greediness, randomization, upper and lower-bound analysis, and introduction to NP completeness. Emphasis is placed on general design and analysis techniques that underlie algorithmic paradigms. Builds a foundation for advanced work in computer science.

CMPU 250: Modeling, Simulation and Analysis (1) math

Principles of computation in the sciences, driven by current applications in biology, physics, chemistry, natural and social sciences, and computer science. Topics include: Discrete and continuous stochastic models, random number generation, elementary statistics, numerical analysis and algorithms, discrete event simulation, and point and interval parameter estimation. Students pursue projects that involve modeling phenomena in two to three different fields and simulate the model in order to understand mechanisms and/or explore new hypotheses or conditions.

CMPU 300: Senior Research and Thesis (0.5) capstone

Investigation and critical analysis of a topic in experimental or theoretical computer science. Experimental research may include building or experimentation with a non-trivial hardware or software system. A student electing this course must first gain, by submission of a written research proposal, the support of at least one member of the computer science faculty with whom to work out details of a research strategy. The formal research proposal, a written thesis, and oral presentation of results are required for the course. A second faculty member participates in both the planning of the research and final evaluation.

CMPU 301: Senior Research and Thesis (0.5) capstone

Yearlong course 300-CMPU 301.

CMPU 319: Modeling Minds, Brains, and Behavior (1) ai

This course explores computational models as a powerful tool for developing and testing scientific theories in cognitive science.

CMPU 331: Compilers (1) pls

This course covers the implementation of compilers – programs that transform source programs written in a higher-level language into executable formats.

CMPU 334: Operating Systems (1) sys

Deals with the theory and implementation of the software that governs the management of system resources.

CMPU 353: Bioinformatics (1) science

DNA is the blueprint of life. Although it’s composed of only four nucleotide “letters” (A, C. T, G), the order and arrangement of these letters in a genome gives rise to the diversity of life on earth.

CMPU 365: Artificial Intelligence (1) ai

An introduction to Artificial Intelligence as a discipline of Computer Science, covering the traditional foundations of the field and a selection of recent advances. Traditional topics include: search, two-player adversarial games, constraint satisfaction, knowledge representation and reasoning, and planning. Additional topics will vary from year to year and will be selected from the following: reasoning about time, probabilistic reasoning, neural networks, philosophical foundations, multiagent systems, robotics, and recent advances in planning. Significant programming assignments and a course project complement the material presented in class.

CMPU 366: Computational Linguistics (1) ai

Addresses the fundamental question at the intersection of human languages and computer science: how can computers acquire, comprehend and produce natural languages such as English? Introduces computational methods for modeling human language, including morphology, syntax, semantics and discourse; corpus-based and statistical methods for language analysis; and natural language applications such as information extraction and retrieval, summarization, and machine translation. Students gain experience with sophisticated systems for linguistic analysis and machine learning.

CMPU 375: Computer Networks (1) sys

Computer networks, in the form of the Internet, have revolutionized society in the last 3 decades. This course provides an introduction to the design and operation of the Internet and computer networks in general. Topics include layered communication protocols, routing, transport, naming, security and mobility. Knowledge is consolidated through projects involving the creation of network applications.

CMPU 377: Parallel Programming (1) sys

An introduction to parallel computing, with coverage of parallel architectures, programming models, and techniques. Topics include SIMD and MIMD models, shared-memory and message-passing styles of computation, synchronization, deadlock, and parallel language design. Students are exposed to common techniques for solving problems in sorting, searching, numerical methods, and graph theory, and gain practical experience through programming assignments run on a parallel processing system.

CMPU 378: Graphics (1) graphics

A survey of computational and mathematical techniques for modeling and rendering realistic images of three-dimensional scenes. Topics include: event-driven user interfaces; geometric transformations and projections; scene graphs; implicit and parametric surfaces; models of color and light; surface shading and texturing; local and global rendering algorithms; and an introduction to computer animation.

CMPU 395: Advanced Special Topics (1) ai

In the first part of this course, we focus on robot architectures and the integration of mechanism, electronics, sensors, actuators, and computer control to achieve a functional robot. The course introduces the basic concepts of robotics, focusing on the construction and programming of autonomous or teleoperated robots. The second part focuses on Human-Robot Interaction (HRI), envisioning a future where robots integrate into our daily routines. From hospitals and offices to shops and homes, even within factories, robots play an increasingly prominent role in our lives. HRI is concerned with the problem of making this interaction intuitive, natural and effective. It is a multidisciplinary field and includes elements of engineering, computer science, robotics, psychology, sociology, and design. This course explores the way in which these disciplines contribute to the field of robotics and it gives the foundation needed to develop robot systems capable of effective human interaction. Through a blend of lectures, readings, and interactive in-class discussions, students gain a comprehensive understanding of this dynamic field.

CMPU 399: Senior Independent Work (0.51) special