Computer Science as a field is going through significant changes. The primary organizations that define the computer science curriculum are the Association of Computing Machinery (ACM) and the Institute for Electrical and Electronic Engineers (IEEE) through the work of the Joint Task Force on Computing Curricula. Their recent work on the Computing Curricula 2001 project (CC2001) culminated in the release of a new and comprehensive computer science curriculum. The last major revision of the computer science curriculum occurred with the Computing Curricula 1991 (CC1991). A quick scan of the two documents quickly reveals that substantial changes have occurred during the ten years between publications. The CC2001 lists fourteen disciplinary areas within computer science. CC1991 had nine areas with only four being the same in CC2001. The other five areas have expanded significantly and another five have been identified for the first time in CC2001.
The current computer science curriculum at Beloit College pre-dates CC2001. Thus, it is apparent to the members of the Mathematics and Computer Science Department (hereafter designated as CS) that it was essential to reconsider our curriculum in computer science. Given the substantial changes in the recommended curriculum, changes in staff, and changes in the orientation of our students, we felt that the best course of action was to start from the ground up. As a result, no courses (except topics, research and TA) in the current CS curriculum are retained in the proposed curriculum. Obviously many topics and areas carry over from current courses but their placement into the new courses reflects the massive changes that have occurred in both curriculum and pedagogy.
Historically, each major area of computer science was taught by encapsulating the material into individual courses that lasted a complete semester. For example, the current curriculum in CS at Beloit College has courses in operating systems, networks, and algorithms to name a few that fit this pattern. With fourteen areas to teach in CC2001, CS departments are faced with a new situation in which there are more areas than courses taken in a typical undergraduate program. Larger programs have responded by increasing faculty to cover additional areas. These schools have often retained the notion of associating courses with areas (because faculty specialize in a given field). Students either take extra courses in CS (at the expense of other areas of study) or they must choose which areas to "hit" within the normal number of courses for the major.
The CS Department at Beloit College is in a very different situation. We are committed to a liberal arts education. Thus, we feel it is inappropriate to expect students to take excessive units within the CS major to be exposed to all significant areas in the field. By judiciously redesigning the major, we have reduced the required units from 12.75 to 11.75 units while expanding the range of areas from what was previously covered. To accomplish this goal, we have taken two major steps. First, we are offering a significant number of 1/2 unit courses. This allows us to continue to group areas that make educational sense without dedicating excessive time to any one area. To mitigate scheduling issues for students, we are scheduling these 1/2 unit courses within one module of a semester rather than having them span an entire semester. We are also using the same time slot in both modules for courses at similar points in the students' educational experience. This allows a student to take a full unit in CS without tying up two time slots in their schedule. In addition, we carefully scheduled courses on the basis of prerequisites to make sure that this type of scheduling by students would be possible. This is in contrast to the current course scheduling which often posed problems for students. For example, a student had to take Introduction to Computer Science in the fall of their first semester to complete the second course in the spring (or have to delay for one year). These types of situations have been resolved in the new scheduling. An important consideration in using 1/2 unit introductory courses was allowing students with a background in CS the opportunity to tailor their first course to their knowledge level. Thus, students have a choice of the first area(s) to study in CS (great ideas, hardware and/or software) as well as choosing how advanced the course will be. We believe that non-science majors will often be best served by being able to learn about computer science ideas in a broad-based intellectual setting, such as taught in the Great Ideas in Computer Science course. However, science students often need to focus on more of a direct programming experience in these courses, both because that is what is needed in the science disciplines, and because of the limited number of elective Division 1 courses which they can take. This separation of introductory courses into “Computer Science” and “Computer Programming” will, we believe, give different groups of students more flexibility in how they incorporate introductory CS courses into their academic program. Second, we have decoupled areas of CS from courses in a number of cases. For example, we now offer a threads course that is a key prerequisite for a number of advanced courses. This recognizes that this area is not the sole purview of operating systems (where it is currently taught) but should be placed in a key course that makes the interconnections to many areas of CS clear. Third, the department is focusing its courses on areas where the faculty have expertise and students have interest. As is true in most disciplines, ideas and content can be presented in many ways. The CS curriculum still encompasses all the core topics in the CC2001 recommendations but does it within the scope of our expertise. Where we go beyond the core topics, we chose areas where we had expertise and student interest. For example, we have extra courses and extra material in software engineering and modeling and visualization but do not have extra material in the area of computer engineering. Along these lines, Rama Viswanathan is taking the primary lead in developing two new courses in applied computer science and computational science (Data Visualization and Principles of Computation and Modeling) centered around the rubric of computer modeling and visualization, an important new area that is interdisciplinary and could potentially be developed into a new minor/major. The department plans to offer these courses (as it has done informally in the past couple of years) independently of whether a new minor/major is implemented because applied CS is significant to our students. Thus, these courses are included in this proposal. It is, of course, our hope that a new minor/major will be formalized and these courses will help form the core of this area.
Another area of significant change from our current curriculum is in the capstone experience. The current curriculum has a 1/2 unit and 1/4 unit senior experience where they research an area of CS, write a paper, and present their results in colloquium. While this experience is valuable, it does not prepare most students for their careers nor does it pull together their educational experience in a comprehensive way. As a result, we are changing the requirement to have a very different experience in both the junior and senior year. The junior year experience will be 1/4 unit and cover social and professional issues. The goal is to make students aware of how their Beloit College CS education fits into the larger picture of the world. The senior year experience will be accomplished by taking a 1/2 unit course in each semester. In these courses, students will work on public domain software. This will allow them to interface to the larger CS community (based on their junior capstone experience [CSCI 281]). They will be required to work with a team, present plans, implement their ideas, and then present their final results. All presentations will involve both written and oral components.
A modest but important change in the CS curriculum is the creation of an introductory hardware course. In the current curriculum, students ultimately took one of two hardware courses. The new course is significant because it guarantees that all students study certain core concepts (currently students only see one part or the other depending on which of the two courses they take) and they see it early in their learning process. This allows us to base the curriculum in intermediate and advanced courses on the common framework that all students have acquired in hardware.
An important change in philosophy is in the relaxation of course choices in advanced courses. In the current curriculum students are required to take one hardware, one systems, and one algorithms/theory course. This served the goal of exposing students to the older, specific areas of CS. With the increase in areas, this approach seems outdated. Instead, students are required to take a core set of courses and are then free to take any of the advanced courses in the department in consultation with their advisor. This allows students to focus on areas within CS while still being exposed to the different areas within the field.
The new CS minor parallels the changes in the CS major. We have reduced the units from 6 to 5.75. We also have a set of core courses and then allow the student to choose appropriate courses in consultation with their advisor.
It is important to realize that we began this process by considering the goals of our department. We then used these goals to drive our choices in the new curriculum. Though these goals are easily lost in the mass of paperwork describing the new courses, they are at the core of what we hope to accomplish with the substantial changes. For example, the goals state the importance of teamwork and the ability of our students to present ideas in CS. Both of these skills are central to the field of CS. This goal helps one understand our new introductory programming courses (which uses paired programming) as well as the senior capstone experience. We also strove to reinvigorate our department for both the faculty and the students. This is reflected not only in the new courses but also in the pedagogical techniques being used. The new curriculum should serve both traditional CS students as well as welcome non-traditional and under-represented groups. The complete reworking of Introduction to Computer Science (CSCI 111) this past year was to show the value of the new approach. Its success can be seen in the fact that the course filled both semesters, we have increased participation by women, and no students dropped the course in the fall (the spring semester is ongoing). The complete set of goals for our department are listed in another document.
In thinking through our new curriculum and scheduling, we had significant discussions about how we can support the overall mission of the College. To this end, our new schedule incorporates the following:
To maximize the effectiveness of the new curriculum, we sought input from diverse constituencies:
It is important that we are able to offer our new curriculum within our current staffing levels. The scheduling document shows when we intend to offer courses and who will be teaching them. The total load over two years averages 30.25 hours of contact per week. Given our 2.5 FTE in CS and a 3/3 load, we should have 3 courses x 4 hours per week per course x 2.5 FTE = 30.0 hours contact per week per semester. Thus, we are able to teach all the courses with our current staffing levels.
To support the revised CS curriculum, a new mathematics course, Mathematics 160, "Discrete Structures", will now be offered. We are also changing Mathematics 200 to be taught in alternation with this course so no extra load is created. The name and prerequisites are also changed to reflect the new curriculum. Since these changes are integral to the new CS curriculum and is part of the Mathematics and Computer Science Department, it is included as part of this proposal.