Liberal Arts Computing Curricula

SIGCSE 2020 Pre-Symposium Event by the SIGCSE Committee on Computing Education in Liberal Arts Colleges

Swarthmore College

Contributed by

Institutional and departmental context

Curricular overview

Our departmental goals for the Computer Science major state that students should:

Additionally, we aim to broaden participation and ensure our curriculum appeals to a wide variety of backgrounds and preparations.

Full details of our program are available on our website.

Major program(s)

The following are the requirements for a major in computer science (eight credits in Computer Science):

Non-major program(s)

The following are the requirements for a minor in computer science (six credits in computer science)

Co-curricular program(s)

The department supports a number of co-curricular programs:

Key contributions

  1. The curriculum is designed to provide both breadth and depth in computer science. This design allows for flexibility in our upper-level course offerings so that faculty can design new courses and adapt to specialties of new and visiting faculty. Our introductory sequence consists of 3 courses: CS21: Introduction to Computer Science (our CS1 course); CS35: Data Structures and Algorithms (our CS2 course); and CS31: Introduction to Computer Systems. Each of our upper-level courses is situated in one of three groups: Theory, Systems, or Applications. We ensure breath in our major by requiring all majors take at least one course from each group. Additionally, majors have upper-level elective requirements that provide a means for students to explore specific areas of interest in more depth. The figure below shows the design and prerequisite structure of our curriculum. (Course names followed by an asterisk are courses where we have introduced parallel and distributed concepts. See item 3 below for further discussion of this.)

figure of our curriculum with groups and requirements

  1. Student Mentor Program in our three introductory courses. Our CS Ninja program was designed, in part, to improve retention and recruitment of underrepresented students, and to provide a more helpful, welcoming and supportive environment for our introductory students. Student ninjas are selected from students who recently completed the course. We choose ninjas who did well in the course, but who are also patient, responsible, enthusiastic, and helpful to students with all backgrounds and abilities. We additionally, select a diverse set of student ninjas because of their importance as mentors. We have seen a dramatic improvement in representation in our courses and our major. Currently, we meet the college-wide demographics for URM and women in our intro course, and are close in our second two courses. Additionally, approximately 40% of our majors are women (the class of 2020 is 42%). Details about our Ninja program are in our SIGCSE 2014 paper

  2. Introduce parallel computing in our introductory course sequence, and expanded coverage in upper-level courses. One of our second courses, CS31, introduces shared memory parallel computing with pthreads, including synchronization. CS31 also adds important background in systems, machine organization, and C programming that is a prerequisite to our upper-level Systems Group courses. All of our Systems Group courses include some coverage of parallel and distributed computing (PDC) topics, ensuring that every major has exposure to PDC at the introductory and advanced level through their group requirement. The addition of a CS31 prerequisite has freed up time in our upper-level courses where we used to introduce some of its content, and allowed us to expand coverage of PDC topics in these courses (the starred courses in our curriculum figure include PDC topics). Details about the PDC parts of our curriculum are in our 2017 Journal of Parallel and Distributed Computing paper.

Limitations/challenges