College Bulletin 2014-2015 
    
    Sep 28, 2024  
College Bulletin 2014-2015 [ARCHIVED CATALOG]

Computer Science



Faculty

LISA MEEDEN, Professor and Chair
TIA NEWHALL, Professor
ANDREW DANNER, Associate Professor
RICHARD WICENTOWSKI, Associate Professor and Associate Provost
JOSHUA BRODY, Assistant Professor
AMEET SONI, Assistant Professor
KEVIN WEBB, Assistant Professor
ADAM LAMMERT, Visiting Assistant Professor
JASON WATERMAN, Visiting Assistant Professor
JEFFREY KNERR, System Administrator and Visiting Instructor
BRIDGET M. ROTHERA, Administrative Assistant


Computer science is the study of algorithms and their implementation. This includes the study of computer systems; methods to specify algorithms (for people and computer systems); and the formulation of theories and models to aid in the understanding and analysis of the properties of algorithms, computing systems, and their interrelationship.

The computer science curriculum is designed to provide students with a flexible set of computing choices that can be tailored to satisfy various interests and depths of study. All courses emphasize the fundamental concepts of computer science, treating today’s languages and systems as current examples of the underlying concepts. The computer science laboratory provides up-to-date software and hardware facilities.

The Academic Program


The Computer Science Department offers course majors and minors and honors majors and minors. Students interested in any of these options are encouraged to meet with the chair of the Computer Science Department as early as possible in their college career. Students who are interested in a computer science major or minor are encouraged to take CPSC 021, CPSC 031 and CPSC 035 sometime in their first four semesters at Swarthmore. The minor in computer science is designed for students who desire a coherent introduction to the core topics in the field. Students completing the minor will possess intellectual skills that are useful in many disciplines.

First course recommendations


CPSC 021: Introduction to Computer Science presents fundamental ideas in computer science while building skill in software development. No previous experience with computers is necessary. This course is appropriate for all students who want to write programs. It is the usual first course for computer science majors and minors. Students with Advanced Placement credit or extensive programming experience may be able to place out of this course.

CPSC 031: Introduction to Computer Systems assumes that the student has completed CPSC 021 or its equivalent. It is the best entry point for students intending to be Computer Science majors or minors who already have extensive computing experience.

CPSC 035: Data Structures and Algorithms assumes that the student has completed CPSC 021 or its equivalent. It is an appropriate entry point for students with extensive computing experience. Students who think they may qualify for CPSC 031 or CPSC 035 and have not taken CPSC 021 should see the instructor or department chair. Students or advisers who want more advice on placement in computer science courses should feel free to contact any computer science faculty member by phone or in person.

Interdisciplinary recommendations


The department recommends that students with an interest in computer science should consider using MATH 027 (Linear Algebra) and/or MATH 029 (Discrete Math) to satisfy the math requirement for the major and minor. Statistics courses at the level of STAT 031 (Data Analysis and Visualization) or above can also be used to satisfy the math requirement.

The Computer Science department offers three courses approved as cognitive science courses: CPSC 063 (Artificial Intelligence), CPSC 065 (Natural Language Processing) and CPSC 081 (Adaptive Robotics). Students with an interest in Cognitive Science are encouraged to consider COGS 001 (Introduction to Cognitive Science).

In addition to courses offered by computer science faculty, the department recommends that students with an interest in computer engineering consider courses offered by the Engineering department, including three courses that are cross-listed by the Computer Science department: CPSC 052 (Computer Architecture), CPSC 072 (Computer Vision) and CPSC 082 (Mobile Robotics).

Course Major


The following are the requirements for a major in computer science:

  1. Nine courses in computer science:
    1. CPSC 021. (If exempted from CPSC 021 without AP credit, substitute one course from any Group listed below.)
    2. CPSC 031, CPSC 035 and CPSC 097.
    3. One course from each of the following three groups:
      1. Group 1: CPSC 041 or CPSC 046.
      2. Group 2: CPSC 043, CPSC 044, CPSC 045, or CPSC 087.
      3. Group 3:CPSC 040, CPSC 063, CPSC 065, CPSC 068, CPSC 071 or CPSC 081
    4. Two CPSC courses numbered above CPSC 035 (must be different than the choices in part c).
  2. Two MATH/STAT courses at the level of Linear Algebra or above (Discrete Math and Linear Algebra are recommended).

To be eligible for a computer science major, a student must have at least a B- average in the introductory courses (CPSC 021, CPSC 31 and CPSC 035). In addition, students must have at least a C in CPSC 031 and CPSC 035 to be eligible to take upper-level computer science courses. Students who have not met this criterion may re-take CPSC 031 or CPSC 035 to obtain the necessary foundation for success in upper-level courses. Students who are deferred have one year from the date of their application to satisfy these requirements.

Course Minor


The minor in computer science provides students with a well-rounded background in computer science sufficient to develop significant, creative applications and to keep up with the rapid changes in the field.

The following are the requirements for a minor in computer science:

  1. Six courses in computer science.
    1. CPSC 021. (If exempted from CPSC 021 without AP credit, substitute one course from any Group listed below.)
    2. CPSC 031.
    3. CPSC 035.
    4. Two upper-level courses drawn from different groups:
      1. Group 1: CPSC 041 or CPSC 046.
      2. Group 2: CPSC 043, CPSC 044, CPSC 045, or CPSC 087.
      3. Group 3: CPSC 040, CPSC 063, CPSC 065, CPSC 068, CPSC 071 or CPSC 081
    5. One CPSC course numbered above CPSC 035 (must be different than the choices in part c).
  2. One MATH/STAT course at the level of Linear Algebra or above (Discrete Math recommended).

The requirements for acceptance into the minor are the same as for acceptance into the major.

Honors Major


An honors major in computer science will consist of completion of the course major, two 2-credit preparations, one 2-credit research report or thesis.

The following will be submitted to external examiners for evaluation:

Two 2-credit preparations to be selected from the combinations of courses listed under Approved Preparations. Each of these 2-credit preparations will be examined by a 3-hour written examination and an oral examination.

The two 2-credit preparations must include four distinct courses. In certain circumstances, the Computer Science Department may be willing to consider other groupings of courses, seminars, or courses with attachments. If the required courses and preparations would not satisfy a course major, additional computer science courses must be taken to meet course major requirements. In all cases, the Computer Science Department must approve the student’s plan of study.

One research report or thesis to be read by an external examiner and examined in an oral examination.

At a minimum, this will involve a review of scholarly papers from the primary literature of  computer science and the writing of a scholarly, scientific paper. The paper will report on a research experience involving the student and faculty (here or elsewhere). It is expected that most of the research or scholarly groundwork will be completed before the fall semester of the senior year, either by 1 credit of work in the spring semester of the junior year or full-time summer work. Students will register for at least 1 credit of thesis work to complete the work and write the paper in the fall of the senior year. It is recommended that the paper be completed by the end of the fall semester.

Acceptance Criteria


To be eligible for an honors major in computer science, students must complete the following:

  1. Have a B+ average in all computer science courses completed by the end of junior year. These must include CPSC 021, CPSC 031 and CPSC 035, and at least one of, CPSC 041 or CPSC 046.
  2. Have demonstrated proficiency in mathematical argument and reasoning by the end of the junior year. Ordinarily, this proficiency will be assumed if the student has done one of the following:
    1. Completed Discrete Mathematics and Linear Algebra with a grade of B+ or better
    2. Completed Linear Algebra Honors with a grade of B or better
    3. Completed Introduction to Real Analysis or Introduction to Modern Algebra with a grade of B- or better
  3. Completed by the end of the senior year a set of courses that would qualify for an ordinary computer science major as well as CPSC 180 (Thesis).

Honors Minor


An honors minor in computer science will consist of completion of the course minor and one 2-credit preparation.

The following will be submitted to external examiners for evaluation:

One 2-credit preparation to be selected from the combinations of courses listed under Approved Preparations. This 2-credit preparation will be examined by a 3-hour written examination and an oral examination.

The 2-credit preparation must include two distinct courses. In certain circumstances, the Computer Science Department may be willing to consider other groupings of courses, seminars, or courses with attachments. If the required courses and preparations would not satisfy a course minor, additional computer science courses must be taken to meet course minor requirements. In all cases, the Computer Science Department must approve the student’s plan of study.

Acceptance Criteria


To be eligible for an honors minor in computer science, a student must satisfy course requirements for a regular minor in computer science and in addition:

  1. Have a B+ average in all computer science courses completed by the end of the junior year.
  2. Take one 2-credit preparation to be selected from the combinations of courses listed under Approved Preparations. An examiner will set both a 3-hour written examination and an oral examination for the preparation.

Approved Preparations for the Honors Major and Minor


The following are the approved preparations. These may not all be available to all students because of the faculty’s schedules.

Preparation Course Combinations
Algorithms and Theory CPSC 041. Algorithms
CPSC 046. Theory of Computation
Bioinformatics CPSC 063. Artificial Intelligence
CPSC 068. Bioinformatics
Data Systems CPSC 044. Database Systems
CPSC 045. Operating Systems
Distributed Computing CPSC 043. Computer Networks
CPSC 087. Parallel and Distributed Computing
High-performance Computing CPSC 040. Computer Graphics
CPSC 087. Parallel and Distributed Computing
Intelligent Systems CPSC 063. Artificial Intelligence
CPSC 081. Adaptive Robotics
Parallel and Distributed Systems CPSC 045. Operating Systems
CPSC 087. Parallel and Distributed Computing
Natural Language Models CPSC 063. Artificial Intelligence
CPSC 065. Natural Language Processing
Network Systems CPSC 043. Computer Networks
CPSC 045. Operating Systems
Parallel Systems and Algorithms CPSC 041. Algorithms
CPSC 087. Parallel and Distributed Computing
Statistical Machine Learning CPSC 065. Natural Language Processing
CPSC 068. Bioinformatics

Thesis / Culminating Exercise


Senior Conference is the comprehensive requirement for computer science course and honors majors. It provides an opportunity to delve more deeply into a particular topic in computer science, synthesizing material from previous courses.

Application Process and Acceptance Criteria for Majors/Minors


In addition to the process described by the Dean’s Office and the Registrar’s Office for how to apply for a major, we also ask that students complete a departmental form outlining how they intend to fulfill the requirements for their intended major, minor, honors major or honors minor. Successful completion of at least two computer science courses including CPSC 031 or CPSC 035 is ordinarily required to be admitted as a computer science major or minor. If after applying a student is deferred, he or she will be re-evaluated upon completion of additional computer science courses.

Advanced Placement


Students who receive a 4 or 5 on the computer science Advanced Placement exam will be awarded one credit upon successful completion of one computer science course taken at Swarthmore. Students must notify the department after completion of one computer science course in order to receive AP credit. Students should consult with any computer science faculty member about placement. Students who are placed out of CPSC 021 with AP credit need to take only 8 additional courses in computer science to complete the major, and 5 additional courses in computer science to complete the minor.

Off-Campus Study


Students planning to major or minor in computer science may opt to study abroad for one semester or a whole year. Because some advanced courses in computer science are offered in only alternate years, some selections will be unavailable to some students. The chair of the Computer Science Department should preapprove all courses of study abroad in advance of the student’s departure. The department will credit appropriate courses based on sufficient evidence of work completed presented by the student upon returning to Swarthmore.

Life After Swarthmore


Graduate School


Students interested in graduate study in computer science will be well prepared with a computer science major. Some graduate programs will also accept students who have majored in mathematics or engineering and completed a sufficient number and selection of computer science courses. The choice of the appropriate major and computing courses will depend on the student’s interests and should be made in consultation with the chair of the Computer Science Department. Other majors are also reasonable for students with special interests. For example, a major in linguistics or psychology might be appropriate for a student interested in artificial intelligence or cognitive science. In such cases, students should consult with the chair of the department as early as possible to ensure that they take the necessary mathematics and computing courses for graduate work in computer science.