|
Bard College Catalogue 2009-2010
2009-2010
Computer Science
http://cs.bard.edu FacultySven Anderson (director), Robert W. McGrail, Keith O’Hara, S. Rebecca ThomasOverviewComputer 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”
CoursesThe 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. |
|