College Bulletin - Course Catalog 
  
    Jun 19, 2018  
College Bulletin - Course Catalog

Computer Science


Courses  


Faculty

LISA MEEDEN, Professor
TIA NEWHALL, Professor1
RICHARD WICENTOWSKI, Professor and Chair
ANDREW DANNER, Associate Professor
AMEET SONI, Associate Professor
JOSHUA BRODY, Assistant Professor
VASANTA CHAGANTI, Assistant Professor
LILA FONTES,  Assistant Professor
KEVIN WEBB, Assistant Professor
SARA MATHIESON, Visiting Assistant Professor
ALINE NORMOYLE, 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
SARA SINCLAIR, Lecturer

Absent on leave, 2018-2019.


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 029  (Discrete Math) to satisfy the math requirement for the major and minor. Statistics courses at the level of STAT 041  (Topics in Statistics) 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. Eight (8) 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  or CPSC 046 .
      2. Group 2: CPSC 043 CPSC 044 CPSC 045 , CPSC 075  , CPSC 087  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 (2) CPSC courses numbered above CPSC 035  (different than the choices in part c).
    5. CPSC 099 , Senior Comprehensive.
  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  and CPSC 035 .
    3. Two (2) upper-level courses drawn from different groups:
      1. Group 1: CPSC 041  or CPSC 046 .
      2. Group 2: CPSC 043 , CPSC 044 , CPSC 045 , CPSC 075 , CPSC 087  or CPSC 089  .
      3. Group 3: CPSC 040 , CPSC 056 CPSC 063 , CPSC 065 , CPSC 066  ,CPSC 068 , CPSC 068 , CPSC 071 CPSC 073  or CPSC 081 .
    4. 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 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 to complete the research and write the thesis in the fall of their senior year. It is recommended that the thesis 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.

To be eligible for the honors minor, a student must have a B+ average in all Computer Science courses completed by the end of their junior year. 

Acceptance Criteria


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

  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 .
  2. Complete by the end of the senior year a set of courses that would qualify for an ordinary computer science minor.

Approved Preparations for the Honors Major and Minor


From any of the following sets of course groupings, honors majors must create two 2-credit honors preparations and honors minors must create one 2-credit honors preparation. Each preparation will contain one focus course and one breadth course selected from the same set. For example, CPSC 041  and CPSC 046  are a valid course preparation pairing, but CPSC 041  and CPSC 068  are not. Honors majors must have at least three distinct courses as part of their two preparations. For example, CPSC 063  and CPSC 065  can be used as one preparation and CPSC 065  and CPSC 068  as the other, but using CPSC 063  and CPSC 065  as one prep and CPSC 065  and CPSC 063  as the other is not allowed. 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.

  • 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 73 Programming Languages
    • CPSC 75 Compilers
  • Set 4:
    • CPSC 40 Computer Graphics
    • CPSC 87 Parallel and Distributed Computing

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.