Skip to Navigation
Swarthmore College    
College Bulletin - Course Catalog 
  
 
  Dec 14, 2017
 
College Bulletin - Course Catalog

Computer Science


Return to Departments and Programs Return to: Departments and Programs

Courses  


Faculty

RICHARD WICENTOWSKI, Professor and Chair
JOSHUA BRODY, Assistant Professor3
ANDREW DANNER, Associate Professor
LILA FONTES,  Assistant Professor
LISA MEEDEN, Professor
TIA NEWHALL, Professor
AMEET SONI, Assistant Professor
KEVIN WEBB, Assistant Professor
MARTIN GAGNÉ, Visiting Assistant Professor
SARA MATHIESON, Visiting Assistant Professor
ZACHARY PALMER, Visiting Assistant Professor
BRYCE WIEDENBECK, Visiting Assistant Professor
LAURI COURTENAY, Academic Support Coordinator
JEFFREY KNERR, System Administrator and Visiting Instructor
DAVID MAUSKOP, Lecturer
BRIDGET M. ROTHERA, Administrative Assistant


Absent on leave, 2017-2018.


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 take the placement exam and also contact the department placement coordinator about placement. Students or advisers who want more advice on placement in computer science courses should feel free to contact any computer science faculty.

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 five courses approved as cognitive science courses: CPSC 063  (Artificial Intelligence), CPSC 065  (Natural Language Processing), CPSC 066  (Machine Learning), CPSC 068  (Bioinformatics)-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 credits 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  and CPSC 035 .
    3. One course from each of the following three groups:
      1. Group 1: CPSC 041 CPSC 046  or CPSC 049 .
      2. Group 2: CPSC 043 CPSC 044 CPSC 045 , CPSC 075  , CPSC 087  or CPSC 089  .
      3. Group 3:CPSC 040 , CPSC 063 , CPSC 065 CPSC 066 , CPSC 068 , CPSC 071 ,CPSC 073  or CPSC 081 .
    4. Three CPSC courses numbered above CPSC 035  (different than the choices in part c).
    5. CPSC 099  , Senior Comprehensive, participation in the senior poster session held during the fall semester of the senior year.
  2. Two MATH/STAT courses at the level of Linear Algebra or above (Discrete Math and Linear Algebra are recommended).  CPSC 046/MATH 046 may not be used to satisfy the Math requirement.

To be eligible for a computer science major, a student must have at least a B- average in the introductory courses (CPSC 021 , CPSC 031  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 CPSC 046  or CPSC 049 .
      2. Group 2: CPSC 043 , CPSC 044 , CPSC 045 , CPSC 075 , CPSC 087  or CPSC 089  .
      3. Group 3: CPSC 040 , CPSC 063 , CPSC 065 , CPSC 066  ,CPSC 068 , CPSC 068 , CPSC 071 CPSC 073  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).  CPSC 046/MATH 046 may not be used to satisfy the Math requirement.

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

Honors Major


An honors major in computer science must complete the regular course major requirements. The honors major includes three honors preparations: an honors thesis and two separate honors preparations of two related courses each (see below).
The following will be submitted to external examiners for evaluation:
Two 2-credit preparations to be selected from combinations of upper-level courses listed under Approved Preparations. Each preparation will be examined by a 3-hour written examination and an oral examination. The exams will focus on a single course in each preparation (the focus course), with the second course (the breadth course) providing additional background in the general area of the focus course.
The two 2-credit preparations must include at least 3 distinct courses. In certain circumstances, the Computer Science Department may be willing to consider other groupings of courses, seminars, or the inclusion of a specific Special Topics course (CS91). These are approved on a case-by-case basis by the chair. Students are required to petition for approval by September 15 of their senior year.
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 honors thesis to be read by an external examiner and examined in an oral examination.  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 Group 1 course.
  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 exams will focus on a single course in each preparation (the focus course), with the second course (the breadth course) providing additional background in the general area of the focus course.  In certain circumstances, the Computer Science Department may be willing to consider other groupings of courses, seminars, or the inclusion of a specific Special Topics course (CS91). These are approved on a case-by-case basis by the chair. Students are required to petition for approval by September 15 of their senior year. 
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


From any of the following sets of course groupings, create two 2-credit honors preparations: one focus course and one breadth course selected from the same set. For example, CPSC 41 and 46 are a valid course preparation pairing, but CPSC 41 and 68 are not. Honors majors must have at least three distinct courses in their set of two 2-credit preparations (e.g. CPSC 63 and 65 can be used as one preparation and 65 and 68 as the other, but 63 and 65 as one prep and 65 and 63 as the other is not allowed). Honors majors may choose both of their 2-credit preparations from the same set of courses, or may choose one 2-credit preparation from one set and the other from a different set.

The following are the approved sets of course groupings. These may not all be available to all students because of the faculty's schedules.

set 0: CPSC 41 Algorithms

CPSC 46 Theory of Computation

CPSC 49 Probabilistic Method

set 1: CPSC 63 Artificial Intelligence

CPSC 65 Natural Language Processing

CPSC 66 Machine Learning

CPSC 68 Bioinformatics

CPSC 81 Adaptive Robotics

set 2: CPSC 43 Computer Networks

CPSC 44 Database Systems

CPSC 45 Operating Systems

CPSC 87 Parallel and Distributed Computing

CPSC 89 Cloud Computing

set 3: CPSC 37 Structure and Interpretation of Computer Programs

CPSC 73 Programming Languages

CPSC 75 Compilers

set 4: CPSC 40 Computer Graphics

CPSC 87 Parallel and Distributed Computing

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.

Computer Science Placement


The computer science placement exam is required for all students who think that they may place out of the introductory computer science course (CPSC 21).  Students who want to start with CPSC 21 do not need to take the placement exam.  Students who think they may place out of both CPSC 21 and CPSC 35 should take the placement exam and also contact the department placement coordinator about their placement. 

The placement exam is offered during fall orientation week. Incoming first year students should take it then. Students who do not take it during orientation can contact the CS main office to schedule a time to take the exam.  Students who do not take CS21 must take the placement exam before registering for CS31 or CS35.  For more information see: https://www.cs.swarthmore.edu/program/placement_exam.html

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 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.

Return to Departments and Programs Return to: Departments and Programs