College Bulletin 2023-2024 
    
    Dec 03, 2024  
College Bulletin 2023-2024 [ARCHIVED CATALOG]

Computer Science


Courses  


Faculty

LISA MEEDEN, Professor
TIA NEWHALL, Professor
RICHARD WICENTOWSKI, Professor2
JOSHUA BRODY, Associate Professor
ANDREW DANNER, Associate Professor and Chair
AMEET SONI, Associate Professor and Associate Provost4
KEVIN WEBB, Associate Professor
VASANTA CHAGANTI, Assistant Professor
LILA FONTES,  Assistant Professor
ZACHARY PALMER,  Assistant Professor3
SUKRIT VENKATAGIRI, Assistant Professor
NEIL LUTZ, Visiting Assistant Professor
BENJAMIN R. MITCHELL, Visiting Assistant Professor
CHRIS MURPHY, Visiting Assistant Professor
KEITH O’HARA, Visiting Associate Professor
MICHAEL WEHAR, Visiting Assistant Professor
JOCELYN COREY, Lecturer
CHARLES KAZER, Lecturer3
GAUTAM MOHAN, Lecturer
LAURI COURTENAY, Academic Support Coordinator
JEFFREY KNERR, System Administrator and Visiting Instructor
JANA DALY, Administrative Coordinator


Absent on leave, Fall 2023.
Absent on leave, Spring 2024.
3 Absent on leave, 2023-2024.
4 Absent on administrative leave, 2023-2024.


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. It is common for students with Advanced Placement credit or extensive programming experience 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 039. Discrete Mathematics with an Introduction to Proof  to satisfy the math requirement for the major and minor. Statistics courses at the level of STAT 021 Statistical Methods II 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. Principles of 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. Eight 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 , CPSC 088  or CPSC 089  .
      3. Group 3: CPSC 040 CPSC 056 CPSC 063 , CPSC 065 CPSC 066 , CPSC 068 , CPSC 071 CPSC 073  or CPSC 081 .
    4. Two CPSC courses numbered above CPSC 035  that are different than the choices in part (c) above. Excludes CPSC 181 and courses that earn less than 1 credit.  
  2. The senior comprehensive, ​CPSC 099 
  3. Two credits in MATH at the level of MATH/STAT 027 or above. Discrete Math and Linear Algebra are recommended. Students may satisfy one of these requirements with STAT 021 . Students who place out of one or both of these two credits should contact the Computer Science department chair. Note that CPSC 046  /MATH 046  may not be used to satisfy the Math requirement. 

Acceptance Criteria


To be eligible for a computer science major, a student must have at least a C+ average in the intermediate courses (CPSC 031  and CPSC 035 ). In addition, students must have at least a C in CPSC 031  and CPSC 035 . 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. 

Credit/No Credit Policy


Of the Computer Science credits required for the major, students may elect to take at most one (1) as credit/no credit. Required credit/no credit courses, such as those taken during your first semester, do not count towards the limit.  

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 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. Two upper-level courses drawn from two of the three groups (Group 1, Group 2, Group 3).  See the Course Major for the courses that qualify for each Group requirement. 
    4. One CPSC course numbered above CPSC 035  that is different from the choices in part (c) above. Excludes CPSC 181 courses that earn less than 1 credit.
  2. One MATH course at the level of MATH/STAT 027 or above. Discrete Math is recommended. Students may satisfy this requirement with STAT 021 . Students who place out of this credit should contact the Computer Science department chair. CPSC 046 /MATH 046  may not be used to satisfy the Math requirement.

Acceptance Criteria


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

Credit/No Credit Policy


Of the Computer Science credits required for the minor, students may elect to take at most one (1) as credit/no credit.  Required credit/no credit courses, such as those taken during your first semester, do not count towards this limit.  

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 2-credit honors preparations.

The following will be submitted to external examiners for evaluation:

  1. Two 2-credit preparations 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 (CPSC 091 ). 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.

  1. An honors thesis to be read by an external examiner and examined in an oral examination.  The thesis will report on a research experience involving the student under the supervision of a faculty member (at Swarthmore 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 one credit of work in the spring semester of the junior year or full-time summer work. Students will register for at least one credit of thesis work (CPSC 180 ) to complete the research and write the thesis in the fall of their senior year. The thesis must be paired with a one (1) credit upper level course related to the thesis topic. The course needs to be paired with the thesis for the purpose of meeting the two (2) credit honors requirement.  It is recommended that the thesis be completed by the end of the fall semester. Credits earned in CPSC 180  do not count towards completion of the course major.

Acceptance Criteria


To be eligible for an Honors major in Computer Science, a student must meet the course major acceptance requirements. In addition, students must earn a B average (factoring in CR/NC shadow grades) and a minimum of a C in all courses that could be used to complete the course major, including cross-listed electives and the courses used to satisfy the Mathematics and Statistics requirements for the course major. Students must also earn a B or higher in the courses used as part of their honors preparations.

A student previously accepted into the Honors Program but not maintaining these GPA or grade requirements in CPSC courses might be, by department decision, asked to withdraw from the Honors Program. Students not meeting the above criteria may appeal to the Department Chair for an exception.

 

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 meet the course minor (or course major) acceptance requirements. In addition, students must earn a B average (factoring in CR/NC shadow grades) and a minimum of a C in all courses that could be used to complete the course minor/major, including cross-listed electives and the courses used to satisfy the Mathematics and Statistics requirements for the course minor/major. Students must also earn a B or higher in the courses used as part of their honors preparations.

A student previously accepted into the Honors Program but not maintaining these GPA or grade requirements in CPSC courses might be, by department decision, asked to withdraw from the Honors Program. Students not meeting the above criteria may appeal to the Department Chair for an exception.

Approved Preparations for the Honors Major and Minor


Honors majors must complete two 2-credit honors preparations and honors minors must complete one 2-credit honors preparation. Each preparation will contain one Focus course and one Breadth course selected the same set. For example, CPSC 043  and CPSC 044  is a valid course preparation pairing since both courses are in Set 2, but CPSC 041  and CPSC 044  is not a valid pairing. The Focus course for each preparation must be different, and the two preparations must be comprised of at least three distinct courses. Honors majors may choose both of their 2-credit preparations from the same set, 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. All courses may not be available to all students and will depend on the schedule of course offerings.

Senior Comprehensive


CPSC 099. Senior Comprehensive  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. Information specific to each graduating class can be found on the department website.

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, students should complete a departmental form, found on the departmental website, 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. Students who are deferred from the major or minor 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 (1) credit upon successful completion of a Computer Science course taken at Swarthmore. Upon completion of a CS course at Swarthmore, students must notify the department in order to receive AP credit. Students who are placed out of CPSC 021  with AP credit need to take only seven (7) additional courses in computer science to complete the major, and five (5) additional courses in computer science to complete the minor.

Students should consult with any Computer Science faculty member about placement out of courses in the introductory sequence.

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 021 ).  Students who want to start with CPSC 021  do not need to take the placement exam.  Students who think they may place out of both CPSC 021  and CPSC 035  should take the placement exam and also contact the department placement coordinator about their placement. 

Incoming first year students should take the placement exam during fall orientation week. Students who do not take it during orientation can contact the CS departmental office to schedule a time to take the exam.  Students who do not take CPSC 021  must take the placement exam before registering for CPSC 031  or CPSC 035 .  For more information see: https://www.swarthmore.edu/computer-science/computer-science-placement-exam

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.

Computer Science Courses


A grade of C or better is required in order to fulfill any prerequisite listed below.