Computer Science: 20092010
Description
Computer Science is the representation and manipulation of information  the study of the theory, analysis, design, and implementation of the data structures that represent information, and the algorithms that transform them. Computer Science is interdisciplinary, with roots in mathematics, physics and engineering, and with applications in virtually every academic discipline and professional enterprise.
Computer Science at Haverford College (www.cs.haverford.edu) emphasizes these fundamental concepts in conjunction with depth of thought and clarity of expression. This approach is consistent with the principles of scientific education in the liberal arts. The aim is to provide students with a base of skills and capabilities which transcend shortterm fashions and fluctuations in computer hardware and software. Some of these skills are mathematical, while others come from the rapidly growing and maturing field of computer science itself. Computer Science offers a Major, a Concentration for Mathematics Majors, a Concentration for Physics Majors, and a Minor. Computer Science also participates and contributes substantially to the Concentration in Scientific Computing. Details of these programs are given at www.cs.haverford.edu/curriculum.
Faculty
Professor Steven Lindell
Associate Professor David G. Wonnacott
Assistant Professor and Lab Coordinator John P. Dougherty
Affiliated Faculty:
Professor of Mathematics Lynne Butler
J. McLain King Professor of Mathematics Curtis Greene
William H. and Johanna A. Harris Distinguished Professor of Computational Science Robert Manning
Professor of Biology Philip M. Meneely
Professor of Physics Walter Smith
Assistant Professor of Physics Peter Love
At Bryn Mawr College:
Professor Deepak Kumar
Associate Professor Douglas Blank
Assistant Professor Dianna Xu
Major Requirements
 Computer Science 105 and 206
 Computer Science/Math 231 (Discrete Mathematics)
 Computer Science 240, 245, 340, and 345
 Computer Science 350 or 355 or 356
 One additional 300level course in computer science, and two additional courses numbered 200 or higher (or related courses in math or physics)
 Computer Science 480 project and paper
The Computer Science Concentration for Mathematics Majors
 Computer Science 105 and 206
 Either Computer Science 240 or 245
 Either Computer Science 340 or 345
 One additional computer science course numbered 300 or higher
 One additional computer science course numbered 200 or higher, or a related course in mathematics or physics (such as Math 203, 210, 218, 231, 235, 236, 237, 250, or Physics 316, 322).
The Computer Science Concentration for Physics Majors
 Computer Science 105 and 206
 Physics 316 (Electronic Instrumentation and Computers)
 Either Physics 322 (Solid State Physics) or Computer Science/Physics 304 (Computational Physics)
 Two additional courses numbered 200 or higher chosen from the Haverford or Bryn Mawr computer science programs
The Concentration in Scientific Computing
for Math, Physics, Chemistry, Biology, Economics and Astronomy majors:
See separate section in this catalog.
Minor Requirements
 Computer Science 105 and 206
 Computer Science/Math 231 (Discrete Mathematics)
 Either Computer Science 240 and (355 or 356), or Computer Science 245 and 350
 Either Computer Science 340 or 345
Courses

100 The World of Computing NA/QU
J.Dougherty
Survey of fundamental ideas in computing (user interfaces, algorithms, translation, history, Internet and Web, limits of computation, artificial intelligence, social implications, accessibility), with a weekly laboratory/discussion section and a term project to extend course concepts and demonstrate quantitative reasoning. Prerequisite: none. Does not count toward the major. Typically offered in alternate years.101 Fluency with Information Technology NA/QU
S.Lindell
A study of the skills, concepts and capabilities involve in the design, implementation and effective use of information technology. Using a variety of quantitative techniques, we will explore a range of uses of information technology in various fields. Prerequisite: none. Does not count toward the major. Typically offered in alternate years.105 Introduction to Computer Science NA/QU
D.Wonnacott
Introduction to the intellectual and software tools used to create and study algorithms: formal and informal problem specification; problem solving and algorithm design techniques; reliability, proofs, and testing techniques; program clarity, complexity and efficiency; functional and imperative paradigms; associated programming skills. Weekly programming laboratory section. Prerequisite: none. Typically offered every Fall.130 Foundations of Rigorous Thinking NA/QU
S.Lindell
Quantitative seminar to develop reasoning skills through mathematics: logic and sets. Uses symbology for abstract objects and formal methods of computing. A transition course for nonscience students who might wish to do further work in computer or cognitive science. Prerequisite: none. Offered occasionally.147 A History of Mechanized Thought NA (Crosslisted in Writing Program)
S.Lindell
An exploration of the history of computer and information systems, from early number systems to binary arithmetic, and from the abacus to the modern computer. Includes a laboratory which explores aspects of digital and analog computing. Prerequisite: none (Satisfies the first year writing requirement.) Offered occasionally.187 Scientific Computing: Discrete Systems NA (Crosslisted in Biology)
P.Meneely, D.Wonnacott
A survey of computational techniques with applications in a variety of natural and social sciences, with an emphasis on problems involving discrete systems such as strings and networks. Computer programming is in lecture, so no prior programming experience is required. First priority is to students who have declared a concentration in scientific computing (if this goes forward); if space is available, freshmen and sophomores share the second highest priority, with juniors and seniors at the lowest priority. Prerequisite: One semester of any (social or natural) science is recommended. Offered occasionally.206 Introduction to Data Structures NA/QU
J.Dougherty
Overview of the intellectual and software tools used to create and study data structures: specification of data types; abstraction and representation; reasoning tools to study correctness and efficiency; classic data structures for collections (set, vector, list, stack, queue, tree, graph); introduction to objectorientated programming. Weekly programming laboratory section. Prerequisite: CMSC 105 (or 110 at Bryn Mawr) or consent. Typically offered every Spring.210 Linear Optimization and Game Theory NA/QU (Crosslisted in Mathematics and Economics)
L.Butler
Prerequisite: MATH 215 or MATH 115 and concurrent registration in MATH 215. Typically offered in alternate years.215 Human Computer Interaction NA
S.Lindell
Interaction between people and machines, with a focus on how computer interfaces can be made more convenient. Issues considered will include the study of cognitive principles, foundations of perception, and guidelines for accessibility, together with safety and social implications. Prerequisite: One course in Computer Science or permission of the instructor. Offered occasionally.235 Information and Coding Theory NA (Crosslisted in Mathematics)
S.Lindell
This course covers the mathematical theory of the transmission (sending or storing) of information. Included will be encoding and decoding techniques, both for the purposes of data compression and for the detection and correction of errors. Prerequisite: Math 215 (may be taken concurrently). Offered occasionally.240 Principles of Computer Organization NA
J.Dougherty, D.Wonnacott
Treatment of the hierarchical design of modern digital computers: boolean logic/algebra; sequential state systems; register machines; instruction sets; memory organization; assembly language programming. Lectures cover the theoretical aspects of system architecture; labs provide implementation experience via a hardware simulator. Prerequisite: CMSC 206 or consent. MATH 231 recommended. Typically offered yearly in alternation with Bryn Mawr.245 Principles of Programming Languages NA
D.Wonnacott
Study of the design and implementation of modern programming languages: lexical and syntactic analysis; scoping mechanisms; runtime environments; implementation of structured, functional, objectoriented, and concurrent programming languages. Lectures cover theoretical foundations of language design and implementation; labs provide opportunities to both use and implement language features. Prerequisite: CMSC 206 or consent. CMSC/MATH 231 strongly recommended. Typically offered yearly in alternation with Bryn Mawr.287 High Performance Computing NA
J.Dougherty
Prerequisite: CMSC 206 or consent. Offered occasionally.304 Computational Physics NA/QU (Crosslisted in Physics)
P.Love
Prerequisite: Jr. standing. Physics 213 and either CMSC 105 or extensive experience with a programming language or consent. Typically offered in alternate years.340 Analysis of Algorithms NA (Crosslisted in Mathematics)
S.Lindell
Qualitative and quantitative analysis of algorithms and their corresponding data structures from a precise mathematical point of view. Performance bounds, asymptotic and probabilistic analysis, worst case and average case behavior. Correctness and complexity. Particular classes of algorithms such as sorting and searching will be studied in detail. Prerequisite: CMSC 206. Typically offered in alternate years.345 Theory of Computation NA (Crosslisted in Mathematics)
S.Lindell
Introduction to the mathematical foundations of computer science: finite state automata, formal languages and grammars, Turing machines, computability, unsolvability, and computational complexity. Prerequisite: CMSC/MATH 231. Typically offered in alternate years.350 Compiler Design NA
D.Wonnacott
A practical introduction to modern compiler and interpreter design with a substantial laboratory component using compilerwriting tools. Prerequisite: CMSC 245. Typically offered yearly in alternation with Bryn Mawr.356 Concurrency and CoDesign in Operating Systems NA
J.Dougherty
A practical introduction to the principles of sharedmemory concurrent programming and of hardware/software codesign, which together underlie modern operating systems; includes a substantial laboratory component, currently using Java's highlevel concurrency and the HERA architecture. Prerequisite: CMSC240 Typically offered in alternate years.392 Advanced Topics in Computer Science NA
J.Dougherty
Prerequisite: CMSC 206 or consent. Offered occasionally.393 Physics of Computation NA
S.Lindell
Advanced seminar covering the fundamental physical limits and potentials of computation. Prerequisite: Math 235 or Physics 303 or instructor consent. Offered occasionally.399 Senior Thesis NA
D.Wonnacott
taken for a half credit in both the fall and spring semesters, whose purpose is to prepare the thesis. Prerequisite: senior standing460 Teaching Assistant NA
J.Dougherty
Does not count toward the major.480 Independent Study NA
J.Dougherty, S.Lindell, D.Wonnacott
The pursuit of advanced material under the direct supervision of a faculty member. Prerequisite: permission of instructorELECTIVES
394 Advanced Topics in Theoretical Computer Science & Discrete Mathematics NA (Crosslisted in Mathematics)
D.Lippel
Prerequisite: MATH 333 or consent. Typically offered in alternate years.RELATED COURSES IN MATHEMATICS
203 Applied Statistics
210 Linear Optimization and Game Theory
215 Linear Algebra
218 Probability and Statistics
222 Introduction to Scientific Computing
250 Combinatorial AnalysisRELATED COURSES IN PHYSICS
316 Electronic Instrumentation and Computers
322 Solid State PhysicsCOMPUTER SCIENCE COURSES OFFERED AT BRYN MAWR COLLEGE
110 Introduction to Computing
120 Visualizing Information
212 Computer Graphics
231 Discrete Mathematics
246 Programming Paradigms
325 Computational Linguistics
330 Algorithms: Design & Practice
355 Operating Systems
361 Emergence
371 Cognitive Science
372 Artificial Intelligence
376 Androids: Design & Practice
380 Recent Advances in Computer Science