Vassar CollegeWebsiteAcademic Catalog
Computer ScienceDepartment Website
BA Degree in Computer Sciencesource 1source 2source 3
CS Courses
- Data Structures and AlgorithmsCMPU 102 (1)introCMPU 102: Data Structures and Algorithms
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.
- Foundations of Computer ScienceCMPU 145 (1)introCMPU 145: Foundations of Computer Science
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.
- Computer Science III: Software Design and ImplementationCMPU 203 (1)softengCMPU 203: Computer Science III: Software Design and Implementation
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.
- Computer OrganizationCMPU 224 (1)sysCMPU 224: Computer Organization
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.
- Theory of ComputationCMPU 240 (1)theoryCMPU 240: Theory of Computation
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.
- Analysis of AlgorithmsCMPU 241 (1)algsCMPU 241: Analysis of Algorithms
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.
- or
- pick 3
Artificial IntelligenceCMPU 365 (1)aiCMPU 365: Artificial IntelligenceAn 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.
Computational LinguisticsCMPU 366 (1)aiCMPU 366: Computational LinguisticsAddresses 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.
Computer NetworksCMPU 375 (1)sysCMPU 375: Computer NetworksComputer 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.
Parallel ProgrammingCMPU 377 (1)sysCMPU 377: Parallel ProgrammingAn 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.
GraphicsCMPU 378 (1)graphicsCMPU 378: GraphicsA 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.
Advanced Special TopicsCMPU 395 (1)aiCMPU 395: Advanced Special TopicsIn 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.
Other Courses
- 8 × Non-CS Elective
- 6 × Free Elective
History of the Major
2024 | Replace "CMPU 331 (Compilers) and CMPU 334 (Operating Systems)" → "CMPU 331 or CMPU 334". Require one more CS Elective. Replace CS Intensive (Experiential Learning) project → CS Elective. |
2023 | |
2022 | |
2021 | |
2020 | Replace 2 half-unit CS Intensive projects → 1 full-unit CS Intensive project. |
2019 | Drop required math course. Replace 3 CS electives (with breadth requirement) → 1 CS Elective. Add 2 half-unit CS Intensive (Experiential Learning) projects. |
2018 | |
2017 |