CSE Curriculum: Information for Faculty
Last updated: July 5, 2011
About this page
This page is designed as a brief, unofficial overview and pointer to additional information for CSE faculty about the
department's undergraduate curriculum. It emphasizes the 300-level courses we rolled out in 2010-2011 and the
associated changes in degree requirements. It is hopefully useful to old farts who want to know what has changed and to
new people unfamiliar with our curriculum. It favors brevity over extensive rationale. It will be
perpetually outdated. Tell Grossman how it could be improved, but remember everybody has a different sense of
what, "everybody already knows." Skip around to find the parts you need.
This page is publicly available.
Course Information
For every course we teach, we have the following information:
-
Catalog descriptions:
These are official 50-word descriptions and pre-requisites.
It is a pain to change the descriptions, so we keep them general.
On the plus side, they are really brief, so
you can read our entire set of offerings in 5 minutes.
-
Teaching schedule:
Some courses are offered every quarter, others less than once a year. You can look at
schedules for previous years to get a good sense of which are which.
-
Course home pages:
These include the public materials for each offering and
who the instructor was. You invariably end up asking past instructors what
really happens in the course. All the links below point to these pages.
-
Old-timers will remember "standard syllabi" for 100-level and 300-level courses
in terms of precondition concepts/abilities/skills and postcondition concepts/abilities/skills.
None of these documents have been updated more recently than 2007 and only the 100-level courses
still exist. They're still on-line but I'm not going to link to them.
Instead, below are 2-3 page "course descriptions" for our new 300-level courses (which
were created before the courses were offered so they probably also need updating).
Undergraduate Stages
Rough Stages in Undergraduate Coursework
Think of the courses our undergraduates take in these categories:
-
Our 2-quarter intro sequence (programming in Java):
CSE142 and
CSE143.
Some students self-select to skip CSE142. These are large courses serving
the broader University population. Roughly 90% of CSE142 students and 75% of CSE143 students will not end up
CSE majors.
-
Our 300-level courses are taken during students' first few quarters in the major. In 2010-2011
we transitioned to a new set of courses, with new numbers and substantially new and
rearranged content. It used to be that all 300-level courses were required of all majors.
Now there are still 4 300-level courses that everyone must take, others that either CompE
or CS students must take, and still others that nobody must take. However, "not required"
does not mean "unimportant". Not-required courses can still be highly recommended and
can be pre-requisites for important 400-level courses.
-
Most of our 400-level courses are "senior-level courses" in various "areas". Students
take at least 4 of these, but usually more like 7-9. Most 400-level courses don't have other
400-level courses as pre-requisites, but some do.
-
Capstone Design Courses and Project Courses (both also at the 400-level) are courses where students synthesize what
they have learned by designing, implementing, evaluating, and presenting. A Capstone Design Course must meet many of the ABET
assessment requirements, whereas a Project Course need not, though for many years we referred to both as "capstones" and
are trying to move away from this confusing terminology. CompE students must take at least one Capstone Design Course, but most
CS students also take one, as is recommended.
-
Relevant requirements outside the department (e.g., math courses, writing requirements, etc.)
-
Relevant electives outside the department. For courses in other departments that count toward
CSE elective requirements, see here.
-
Other: Those are just the broad categories. We also have:
- Other, more experimental 100-level courses.
- Courses not at the 100-level that are for non-majors.
- Advanced undergraduates who, with instructor permission, take graduate courses.
- Independent studies, senior theses, etc. Have an advisor explain the difference between CSE498a, CSE498b, and CSE499.
- Other stuff.
-
For reasons not worth going into, we don't have 200-level courses.
Degree Requirements
We have a Computer Science major in the College of Arts & Sciences and a Computer Engineering major
in the College of Engineering. The degree requirements are different, both within CSE, and, more substantially,
outside the department (to satisfy the colleges' different requirements). Most faculty can ignore this:
you never need to know who in your class is in which college. Our CompE degree is ABET accredited,
which complicates how we structure our CompE degree requirements and how we assess our
curricular goals.
The degree requirements,
including older requirements and documents covering transition periods
A few details on the 2010-2011 transition:
- Students completing their first CSE 300-level course in Spring 2010
or later are under the new requirements. Students completing their first CSE 300-level course in Winter 2010 or Fall 2009
are under specical transition requirements. Students completing their first CSE 300-level course earlier than Fall 2009 are
under older requirements.
- In Computer Engineering, we had separate tracks in Hardware and Software until Spring 2011 when we agreed to more
flexible Computer Engineering degree requirements that subsume both tracks.
- In Computer Science, the requirements refer to the
CSE Core Course List, whereas older
requirements had a long list of courses "inlined" into the requirements.
The 300-level
In Fall 2009, we approved a major revision of our 300-level courses. As a result, these courses have now been retired:
CSE303,
CSE321,
CSE322,
CSE326,
CSE370,
CSE378.
While CSE341 remains, it is now
recommended rather than required. So it will likely be taught twice a year instead of three times.
Other notable changes were:
-
Not requiring STAT390/391 (while requiring a new in-house course that covers more
probability/statistics than any prior CSE course did). We recommend STAT391 (taught once a year).
-
CompE students used to have to take EE215 and the hardware track also had to take EE233. Those
are both still options, but as a replacement we encourage EE205 Signal Conditioning. We feel
EE205 is a better match for what CompE students need, but EE215/233 is also suitable and can
work better for double-majors or for scheduling reasons (since EE205 is offered only once a year).
This summary picture shows the new 300-level for-majors courses.

For each of the new courses, we developed a 2-3 page course description that explains
the vision, goals, and approximate topics of the course. Naturally, converting a short description
into a 4-credit course is non-trivial, so course home pages
should give a fuller and more accurate sense of the courses. Also relevant are
the slides from the May 27, 2010 faculty meeting
where the instructors for 311, 331, 332, 351, and 390A gave short overviews.
See also CSE390A: System and Software Tools.
High-Level Content Changes
The 300-level revision changed what material is included and reorganized the material. Here is
a high-level list of notable changes. Also remember that not all the courses are required of
everyone (see above), but if a course is important for a 400-level course it should be a pre-requisite
(see below).
- CSE303 goes away. The Linux skills, makefiles, and such moves to 390A, a 1-credit non-required credit/no-credit
course taught by a graduate student. The idea is most students will
take this course, but students who learned these tools on their own can skip it.
-
CSE311 draws on material from CSE321 (logic, induction, discrete math), CSE322 (finite state machines,
undecidability), and CSE370 (boolean logic, finite state machines). Compared to 321, the counting and
probability moves to CSE312 whereas CSE311 does more to cover topics essential to hardware that were previously in CSE370.
-
CSE312 is very different from CSE322, most of the material from CSE322 moves to CSE311 or disappears from the 300-level
(instructors for CSE401, CSE421, and CSE431 should take particular note). CSE312 covers computing applications of
probability and statistics, as well as P vs. NP and NP-completeness.
-
CSE331 provides substantial software-project and software-design/implementation experience in Java.
This is a more substantial exposure to high-level software development than anything pre-revision.
-
CSE332 removes about 2-3 weeks on less common data structures and algorithms to make room
for parallelism (using more processors to increase throughput) and concurrency (controlling access to shared
resources). This is done at a high level, for example in Java with locks and lightweight threads.
NP-completeness moves to CSE312.
-
CSE344 is a new course that will lead to a revised CSE444. It lets students interested in using databases and
other data-management tools have a useful course and then let CSE444 focus on designing/implementing
database-management systems.
-
CSE351 is not a hardware course, focusing instead on exposing students to the key levels of the system
stack below Java (C, assembly, O/S, hardware) and how they connect to each other. There is no lab.
-
CSE352 is a lab-intensive hardware course, drawing on hardware material previously covered in
CSE370 and CSE378, as well as putting more emphasis on embedded systems and systems integration.
As a trade-off, there is less material on processor design and virtual memory at the 300-level.
-
We introduce CSE333 to provide more significant systems-programming experience (in C and C++). Whereas CSE351 will
be less "about C" than CSE303 was, CSE333 will have CSE351 as a pre-req and will focus on systems-level
software. We are still working out how to describe the goals of this course: it has aspects of teaching C/C++ programming
but also aspects of teaching systems-software issues like performance, IO, and asynchrony.
Course Prerequisites
The revision requires changing the prerequisites for almost every
undergraduate course. This Excel
spreadsheet summarizes the changes. It is not the official
document and Grossman can't remember if it's exactly up-to-date, but
it's close. The transition column is what the pre-reqs will becomes
for the next couple of years until we have no more students who
completed the pre-revision 3xx courses. Please report any concerns.
Learning More
Confused about how our curriculum works? Ask a colleague or one of our wonderful
undergraduate advisors. It is a system with a lot of moving parts where nobody has
complete information -- but together we make it work to graduate 160 great students a year.