SIGCSE 2020 Pre-Symposium Event by the SIGCSE Committee on Computing Education in Liberal Arts Colleges
Contributed by
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.
The following are the requirements for a major in computer science (eight credits in Computer Science):
The following are the requirements for a minor in computer science (six credits in computer science)
The department supports a number of co-curricular programs:
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
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.
Lack of predictability in course offerings. We struggle to know what courses we will be offering more than a year ahead, which conflicts with the culture of a having a 2-year schedule at our institution. This makes it difficult for students to determine their course plan and also for our faculty to prepare in advance. The main cause of this lack of predictability is our reliance on 3+ visiting faculty each year. Without knowing their abilities/areas of expertise, it is difficult to slot visitors into existing courses. In addition, it may be a necessary cost to ensuring the flexible curriculum noted above.
Limited experiences in CS. Our major currently requires students to take only 8 courses in Computer Science, a reduction from nine courses. This reduction was made in response to high enrollments. We removed the senior capstone requirement, eliminated most seminar courses, and capped the number of courses any student could take to 9 courses. The result of these changes is that our students have fewer experiences in computer science. In particular, seminars and our capstone course guaranteed that students had at least one project-based course (usually more). With the loss of these courses in our curriculum, many seniors now graduate without satisfying one of the main goals of our CS major.
Lack of verticality to curriculum results in varying preparations for students and overlap in courses. Students can take upper-level courses in any order. For example, students may take Machine Learning before Artificial Intelligence, or the other way around, or only one of those courses. This also means that rigorous upper-level courses (e.g., seminars) may taken as a student’s first upper-level course. This makes teaching the course difficult as there is a wide range of abilities coming into the course and a need to teach overlapping content in both courses. In addition, departmental autonomy limits our ability to require specific math courses, or even the timing of when these courses are taken.
Trade-offs between ensuring diversity and relieving enrollment pressures. Many of the options to reduce enrollments often have the effect of discouraging students who came to the major late, did not have a computer science experience prior to matriculating, and/or have interdisciplinary interests between CS and another discipline. These students tend to be more diverse than traditional computer scientist and thus these options to reduce enrollments are not appealing options to us. However, this has left us under the strain of high enrollments with no end in sight.