Reviewers' Notebook: The Computer Science Curriculum: Weaknesses/Challenges/Opportunities
From CSWiki
We perceive some small but persistent weaknesses in the structure of our curriculum:
- A College rule specifies that no major can require more than thirty-two credits (in our case, eight four-credit courses). Fitting a modern major in computer science into this structure has required some compromises and has resulted in a rather rigid and constrained curriculum, making it difficult to begin the major after the first year or to combine a computer-science major with study abroad.
- In particular, we have had to limit ourselves to requiring either CSC 211, "Computer organization and architecture," or CSC 213, "Operating systems and parallel algorithms," rather than insisting that our students take both.
- Providing a sufficient number of sections of introductory courses and major requirements leaves very little staffing for electives.
- Several of our upper-division courses presuppose previous study in discrete mathematics. However, the College's first course in discrete mathematics is MAT 218, "Combinatorics," which itself has a year of calculus and a semester of linear algebra as prerequisities. This long chain of courses contributes to the inflexibility of our curriculum.
- A few important topics, notably social issues in computing and formal verification, do not fit easily or naturally into any of our current courses.
- Our curricular goals for the second course in computer science, CSC 152, are probably too numerous. It is supposed to cover object-oriented problem solving and the standard CS2 data structures and their implementation, and to give students a good introduction to Java and to some of the common GNU/Linux utilities. This turns out to be more than we can fit into fourteen weeks.
- Because CSC 152 (or CSC 153) is a gateway for our 200- and 300-level courses, including some that are offered infrequently, some of the students in those courses have much more background and experience in computer science than others. This variability is especially problematical when the students work together in teams, on group projects.
In our recent survey of alumni (see Appendix F), some of the participants offered additional criticisms of our curriculum:
- Since we don't teach courses, C++ or other languages popular in industry, our graduates are sometimes at a disadvantage in the hiring process.
- Several of the survey participants commented that it would have been useful for them to have a course dealing with database theory and design.
- Many of our alumni say that they would have benefited from more direct experience in software engineering and modern CASE tools.

