Proposed Changes to UG Curriculum March 2003
The College's Undergraduate Committee is considering a fairly wide-ranging series of changes to the undergraduate curriculum. The crux of these changes are:
- Removing ECE2030 (an introduction to hardware) from our curriculum, and replacing it with a new course, CS2030, which will be an introduction to hardware and low-level programming, along with an introduction to C.
- Removing CS2130 (Languages and Translation) and instead requiring a new course CS3130, a junior level course which introduces automata and important ideas about how compilers and interpreters work.
- Removing CS3500 (Theory I) and decomposing it into two other courses, Automata and Complexity Theory and Design and Analysis of Algorithms. (No numbers assigned at this time.) Our students would only be required to take the Algorithms course. (Optionally, we may allow undergrads to take the equivalent MS-level course.) The new Algorithms course will be taught in a large-lecture and recitation model.
There is no sum increase or decrease to the number of credit hours requested of our undergraduates.
There are lots of problems that these changes aim to fix, such as the dissatisfaction with CS2130 by both students and faculty, the need to separate learning C from the parsing/tokenizing issues (because our students need C for several classes, and the compilers issues are challenging so early in the curriculum), and the complexity of the current CS3500. There are also lots of ramifications of these changes, such as changing content in CS2335 (Software Practicuum, which we will make dependent only on CS1322 rather than CS2130) and CS2340 (Objects and Design – which has had material on how VM's in Java and Smalltalk worked, assuming the languages and translation content).
One question that's been raised is, if we're changing this much, maybe we should just give up and start from a blank slate. Maybe it's time to just re-write our whole undergrad curriculum. I argue that that this isn't the right time for that. We update our curriculum more often than the rest of the campus as it is. (Sotto voce comment from the chair of the Institute UG committee last Wed., discussing an Economics proposal, "What was that CS course number anyway? They change it weekly...") All the changes are hard on our students, and on the other departments who are trying to figure out how to use our classes in their curricula. I think our design principles are sound. One can't really tell whether an undergrad curriculum works without giving it a 4-5 year chance, so that we can see the graduates emerge. This Fall will be four years since the semester change – it's a reasonable time to update. These changes may make it easier to adjust upper-level courses' pre-requisites to make them more accessible to non-majors, e.g., if an upper level course needs C, it can make CS2030 a pre-req, without requiring students to take all the compilers content first.
We're not asking for a vote on these anytime soon! We need to work out the many ramifications of these changes on our classes and others (e.g., CompEng requires CS2130). We are further planning to change CS1322, which has reached an unacceptably high failure rate. The soonest we could hold a faculty vote on all of the desired changes would probably be Fall.
We are asking for comments now. Do you see any problems that we may have not noticed in these changes? For example, how do these changes impact your upper-division courses? Is it acceptable to you that our undergraduates will be getting their automata in CS1050 (a little) and CS3130 (mostly), and with only algorithms having its own course?
Below are a collection of documents further explaining these changes.
Please address comments to Mark (firstname.lastname@example.org) or other members of the UG Committee, or post them below. (Note: This is a locked Swiki. You won't be able to create new pages nor edit this page.)