About BardAdmissionUndergraduate AcademicsGraduate ProgramsCampus LifeAthleticsAlumniParentsAffiliated Institutes and ProgramsNews & Events

Bard College Home
 




(head)Bard College Catalogue

The Bard College Catalogue contains detailed descriptions of the College's undergraduate programs and courses, curriculum, admission and financial aid procedures, student activities and services, history, campus facilities, affiliated institutions including graduate programs, and faculty and administration.


Bard College Catalogue 2009-2010
2009-2010

Bard College Catalogue 2009-2010
2009-2010

Computer Science

http://cs.bard.edu

Faculty

Sven Anderson (director), Robert W. McGrail, Keith O’Hara, S. Rebecca Thomas

Overview

Computer science is integral to current technological and cultural changes and to all fields of study. The Computer Science Program at Bard offers courses of interest to computer science, science, and nonscience majors. The program focuses on the fundamental ideas of computer science and introduces students to multiple programming languages that emphasize different programming paradigms. It offers broad coverage of theoretical, applied, and systems-oriented topics. Students have numerous opportunities to participate in hands-on courses and research projects in new laboratories devoted to cognition, robotics, and symbolic computation.

The curriculum is designed to offer many opportunities for students whose interest in computer science arises from its intersection with another discipline. Computer science has many linkages with cognitive science, electronic arts, mathematics, and physics. Students from these fields often begin with an introductory course and later return to take a more advanced computer science course that enhances skills and knowledge they will use in their Senior Project.

Requirements:

Before Moderation a student in the Computer Science Program should complete or be enrolled in Computer Science 141, 201, and 243, as well as Mathematics 141 (or the equivalents). Students are expected to follow standard divisional procedures for Moderation and to fulfill the collegewide distribution and First-Year Seminar requirements. By graduation, a student in the program must take Computer Science 301, 305, 312, and either 326 or 335, at least two other computer science courses numbered 300 or above, and complete a Senior Project.

Recent Senior Projects:

  • “An Incursion into Finite Model Theory”
  • “Bacterial Identification: Algorithms for the Selection of Primers for PCR Reactions”
  • “Determining Image Authorship: Applied Statistical Techniques of Stylometrics”
  • “Information Visualization and HCI: Novel Visualization Techniques to Increase Cognition Rates for Information-Intensive Tasks”

Courses

The following core courses are offered every year or every other year:  Computer Science 141, Introduction to Object-Oriented Programming; Computer Science 201, Data Structures; Computer Science 301, Algorithms; Computer Science 305, Design of Programming Languages; Computer Science 312, Theory of Computation; Computer Science 326, Operating Systems; Computer Science 335, Computer Networks; and Computer Science 351, Artificial Intelligence. Elective courses are offered at least once every three years or by tutorial; recent examples include Computer Science 321, Databases; Computer Science 323, Computer Graphics; and Computer Science 451, Topics in Advanced Artificial Intelligence.

Introduction to Computer Science: Graphics and Animation
Computer Science 112
Students learn to use a programming language and graphics interface to write algorithms that represent and render two-dimensional and three-dimensional geometrical objects, beginning with points and lines and extending to three-dimensional solids. Topics include applied geometry, coordinate transformations, projection, perspective, object modeling, and basic animation. Prerequisites: Mathematics 110 and eligibility for Q courses.

Introduction to Computing: Robotics
Computer Science 113
Teams design and build shoe box–size robots, with guidance from the instructor. These rather minimalist robots are mobile and have multiple sensors. Teams use a simple programming language to program their robots to carry out simple tasks, then move to a more robust programming language and more complex tasks by the end of the semester. Prerequisite: eligibility for Q courses.

Introduction to Computing: Simulating Reality
Computer Science 115
How do rumors and fashions spread in society? Does a small change in environmental temperature disrupt an ecosystem? Questions like these are explored, using computers to create virtual worlds. This introduction to modeling and simulation is for students who are interested in creating computer models of objects, processes, and complex systems using computer software. No prior knowledge of computer programming is required. Prerequisites: a strong background in precalculus mathematics or the equivalent, and eligibility for Q courses.

Introduction to Computing: Semantic Web
Computer Science 116
An introduction to semantically intelligent content management for the World Wide Web. Participants construct social networking software, similar in scope to weblogs or facebook, using an advanced content-management system. A strong emphasis is placed on the development of flexible applications that efficiently store and process data and metadata. In addition to basic computer programming, various XML technologies are introduced and employed. Prerequisite: eligibility for Q courses.

Introduction to Cognitive Science
Computer Science 131
cross-listed: cognitive science, philosophy, psychology

How do brains make minds? Can computers think? Is my dog conscious? Cognitive science assumes that the brain is some sort of computational engine and, beginning with that premise, attempts to answer such questions. The course is taught by faculty in biology, computer science, linguistics, philosophy, and psychology; their combined approach explores how humans and other intelligent systems feel, perceive, reason, and act. Laboratories provide analysis of neural and behavioral data as well as computational modeling. Prerequisite: Mathematics 110 or the equivalent.

Introduction to Object-Oriented Programming
Computer Science 141
This course introduces students with prior programming experience to the methodologies of object-oriented design. Students learn how to move from informal problem statement through increasingly precise problem specification to the design and implementation of a solution. Prerequisite: any Introduction to Computing course or permission of the instructor.

Data Structures
Computer Science 201
cross-listed: cognitive science

An introduction to the basic ideas underlying data storage and retrieval. Several standard data structures are covered, including stacks, queues, lists, hash tables, and balanced binary trees. The course balances implementation of structures and formal analysis of their properties. Prerequisite: Computer Science 141.

Computer Architecture
Computer Science 225
An introduction to the structure and operation of modern computer architecture. Topics include instruction sets, pipelining, instruction-level parallelism, caches, memory hierarchies, storage systems, and multiprocessors. Assembly language programming is used to demonstrate concepts. Corequisite: Computer Science 201; Physics 210 is recommended.

Intelligent Robots I, II
Computer Science 231-232
cross-listed: cognitive science
Intended for highly motivated students who want hands-on experience with mobile robot hardware and software. Students learn to program in Python and control robots using the ARIA robot interface as they work toward building an intelligent system that includes visual object identification, obstacle avoidance, and sonar-based navigation capabilities. The eventual goal is to have robots participate in a scavenger hunt. Interested students must meet with the instructors prior to registration.

Discrete Mathematics
Computer Science 242
This course examines the field of discrete mathematics, especially those areas of importance in computer science, such as algorithms, combinatorics, probability, and graph theory. Equal time is given to theory, computation, and applications. Prerequisite: Mathematics 110 or permission of the instructor.

Introduction to Functional Programming
Computer Science 243
This course introduces students to the functional programming paradigm. Topics include recursion, recursively defined data types, and first-class functions. The course also introduces some basic programming techniques from artificial intelligence, including blind and heuristic search algorithms. Prerequisite: Computer Science 141.

Algorithms
Computer Science 301
This course covers the design and analysis of correct and efficient computer algorithms. Topics include sorting, greedy algorithms, divide-and-conquer algorithms, dynamic programming algorithms, and graph algorithms. Advanced topics in algorithms may be selected from specialized areas of the mathematical and empirical sciences. Prerequisites: Computer Science 201 and Mathematics 235 or 261.

Computational Geometry
Computer Science 303 / Mathematics 303
See Mathematics 303 for a course description.

Design of Programming Languages
Computer Science 305
This course covers a selection of important issues in the design of programming languages, including type systems, procedure activation, parameter passing, data encapsulation, dynamic memory allocation, and concurrency. In addition, the functional, logical, and object-oriented programming paradigms are presented. Prerequisite: Computer Science 201.

Seminar in Cognitive Science
Computer Science 308
cross-listed: philosophy
Students present research in progress or a significant paper from the current literature. The purpose of the seminar is to help students become familiar with a cross-section of current cognitive science research, including topics from cognitive psychology, neuroscience, computational modeling, philosophy of mind, linguistics, music cognition, and artificial intelligence. Prerequisite: permission of the instructor.

Theory of Computation
Computer Science 312
An introduction to several computational models developed to formalize the notion of an algorithm, the course also offers detailed discussion of primary topics in the theory of computation, including the theory of recursive functions, Turing machines, and several undecidable problems, such as the halting problem. Prerequisite: Mathematics 261 or both Computer Science 301 and Mathematics 235.

Databases: Theory and Practice
Computer Science 321
An introduction to the design, implementation, and uses of databases. Topics include database design, models, integrity, concurrency, security, and query languages. Prerequisite: Computer Science 201.

Computer Graphics
Computer Science 322
Students explore the algorithms used to create and manipulate two- and three-dimensional graphic objects. Topics covered include coordinate transformations, projection, hidden surfaces, shading, ray tracing, and texture mapping. Experience in programming and mathematics is necessary. Prerequisites: Mathematics 242 or 331, Computer Science 201, and permission of the instructor.

Operating Systems
Computer Science 326
The class covers traditional topics of operating systems, including interprocess communication, semaphores, monitors, scheduling algorithms, deadlocks, virtual memory, and file system design. In addition, discussion may include issues in distributed systems such as the client-server model, remote procedure call, distributed synchronization, transactions, threads, and file servers. Prerequisite: Computer Science 201.

Computer Networks
Computer Science 335
Takes a bottom-up approach to computer networking, covering in detail the physical, data-link, MAC, network, transport, and application layers. TCP/IP and OSI reference models are introduced, with examples taken from the Internet, ATM networks, and wireless networks. Prerequisite: Computer Science 201.

Artificial Intelligence
Computer Science 351
Provides a broad introduction to topics in artificial intelligence, including knowledge representation and reasoning, planning and problem solving, and machine learning. Advanced topics may include natural language processing, multiagent systems, and image processing. Prerequisite: Computer Science 201.

Modeling and Simulation
Computer Science 353
An introduction to mathematical modeling and the computer simulation of discrete and continuous systems. Students create mathematical models of systems, design simulation experiments, construct simulations, test their validity, and statistically analyze output. Prerequisites: Mathematics 142, Computer Science 201 or the equivalent, and at least one 200-level course in the sciences or social sciences.

Research Seminar in Computer Sciences and Mathematics
Computer Science 408 / Mathematics 408
Juniors and seniors concentrating in computer science or mathematics are strongly urged to take this two-credit course. Each senior presents personal research in progress or significant material from the literature. Each junior presents an interesting paper of personal choice from the literature. Prerequisite: moderated status or permission of the instructor.

Parallel Computing
Computer Science 431
An introduction to parallel algorithms and parallel architectures. The central focus is the application of parallelism in order to speed the solution of computational problems. Such problems include sorting, matrix operations, graph traversal, and image analysis. Time is also spent on specialized parallel architectures such as grids, hypercubes, and butterfly and De Bruijn–type networks. Prerequisite: Computer Science 301.

Topics in Advanced Artificial Intelligence
Computer Science 451
Topics covered may include robotics, natural language processing, machine learning, neural networks, genetic algorithms, genetic programming, planning, and computer vision. Selection of topics will be guided in part by student interest and background. Prerequisite: Computer Science 351.
 

 

*The download on this page requires Adobe Reader for viewing and printing.

 

Sunday,
November 22, 2009
3:41:18 am EST

Contact
To receive a printed copy of the Bard College catalogue contact the Office of Admission at 845-758-7472 or fill out the Admission Request for Information Form.