Introduction

What are we teaching in our 7 required 300-level courses (plus STAT390/391)? It is easy to think we know based on catalog descriptions, what we did when we last taught these courses, or what we learned in similar courses we took long ago. It is likely we don't actually know, certainly not well enough to attempt improving the curriculum. It seems logical that a useful step in improving something is a clear understanding of where we stand. Dan G. took this "inventory" in January 2009 and learned plenty. In hindsight, this is not surprising: Dan has been here 5.5 years and has taught only 303 and 341 during that time. If you haven't taught more than, say, 2 of these courses in the last, say, decade (and very few people have), you will probably learn something too.

If committee members internalized most of the information below, it would probably make our discussions more efficient and productive.

New addition: Based on Tom's suggestion at our January 20 meeting, Dan added example homeworks, projects, exams. The examples are somehwere between "random" and "representative". Basically Dan looked for instructive examples, but was also working quickly.

Caveats

This inventory was compiled by reading course web pages over just the last year or two. It is understandably biased toward instructors that post easy-to-understand lecture schedules. The numbers for each topic is number-of-lectures-on-topic. It generally doesn't account for things taught in section. Ranges account for diversity among instructors, particularly note things like 0-3, which would mean one instructor spends a week on something another doesn't cover. That's not necessarily a problem; the goal is just to capture "where we are" one solid level deeper than "we have a course on programming languages where they learn functional programming and a bunch of other stuff". Obviously everything is approximate. For example, Winter quarter is always shorter. If you think something is wrong or confusing, please do offer suggestions. Remember Dan G. has never taught 5 of these courses.

A potential outcome of the committee would be a new curriculum described at about this level of detail. Of course, this would be a starting point that would naturally evolve over the first few iterations, since an alleged one-week topic might actually take two weeks or vice-versa. We would also continue to have natural differences for different instructors. Material "removed" would almost surely be covered in a relevant 400-level course.

Inventory

303: Concepts and Tools for Software Development 3 credits

Notes: Offerings by Balazinska/Perkins/Grossman are quite similar with Balazinska doing more C++. Zahorjan is less close, but still within 20-25%.

Sample work:

321: Discrete Structures 4 credits

Notes: Appears quite stable, but several recent offerings post only homeworks, not a lecture schedule.

Sample work:

322: Intro. to Formal Models in Comp. Sci. (3 credits) Pre-req: 321

Notes: Seems very consistent.

Sample work:

326: Data Structures (4 credits) Pre-req: 321

Sample work:

341: Programming Languages (4 credits)

Notes: Sort of an average/sum of Borning/Reges/Grossman with slight bias toward Grossman because less exact schedule available for Borning

Sample work:

370: Introduction to Digital Design (4 credits)

Notes: The least consistent aspect seems to be the part on underlying technologies, but this isn't a major component of the course?

Sample work:

378: Machine Organization and Assembly Language (4 credits), Pre-reqs: 303, 370

Notes: The list above doesn't indicate that the course also includes a substantial lab building a MIPS processor with FPGAs.

Sample work:

Statistics: 390 or 391 or (394&395)

Students take either 390 or 391. While 391 was designed to server our students needs better, it is offered only once a year so most of our students take 390.

Catalog description: STAT390: Probability and Statistics in Engineering and Science (4) Concepts of probability and statistics. Conditional probability, independence, random variables, distribution functions. Descriptive statistics, transformations, sampling errors, confidence intervals, least squares and maximum likelihood. Exploratory data analysis and interactive computing.

Current course web page for 390

Some facts extracted from the web page and syllabus:

Catalog dscription: STAT391: Probability and Statistics for Computer Science (4) Fundamentals of probability and statistics from the perspective of the computer scientist. Random variables, distributions and densities, conditional probability, independence. Maximum likelihood, density estimation, Markov chains, classification. Applications in computer science. Pre-reqs: 2.5 in MATH 126; 2.5 in MATH 308; either CSE 326, CSE 373, CSE 417, or CSE 421

Spring 2008 web page for 391

Some facts extracted from the web page and syllabus: Dan G. could still use some more information on how STAT390/391 came to be and what our relation to them is.