-John Kerry, 30 Sep 2004
So, is it? In the CIS undergrad programs, that is...
Lunch was at Pizza Hut yesterday. Six of us (Dave, Rod, Allen, Dan, Torben, and I) discussed the idea of undergraduate course tracks.
What follows is Dave Schmidt's synopsis, with minor editing and paraphrasing, and a few of my comments.
First, everyone seemed to concur that a "facelift" of our undergrad program, perhaps both CS and IS, is needed. Next, the consensus was that there should be both short-term and long-term action:
Computer Science has an image problem: it is no longer as prestigious to be a computing person, and worse still, there doesn't appear to be job security. This is an endemic problem in CS and IT.
Immediate Action Items
To improve the perception of CS:
The department web site could be developed into a web portal:
- listing a diverse range of career choices that are computing-based
- explaining how our department's degree programs - majors, minors, and course tracks - will lead a student to these careers
- showing videos of former students explaining what they do today
The course tracks discussed should be informally imposed immediately to point current students towards attractive and marketable specialties. (We didn't discuss how to realize all the areas in the "long list", but there was a feeling that creating lots of new courses would place too heavy of a burden on the faculty, so the list will need some careful editing. Later this month, our Alumni Advisory Committee is visiting for Homecoming, and I'm sure this will be one of the topics of discussion)
So, there you have it, istari_ala: a new Prime Directive.
Short-Term Action Items
The CS-Degree requirements should require a specialty track, where the default is "software-engineering". Or, the chosen specialty track can be one of the topics on the master list. The specialty track will consist of 6-9 credits and must be "validated" by means of a 3-6-credit "capstone" course.
- the default capstone is 540-541 (which is meant to go with the software-engineering track but might be justified for other tracks)
- an alternative capstone would be two 700-level courses in the area of the specialty track, where a project is included in at least one of the courses
- another alternative is an individual project, supervised by a faculty member
One down side is that a CS major might no longer be able to take all of the existing required courses in software engineering, database management, operating systems, foundations, etc. The up side is that we can adapt the existing curricula to the needs of the individual student, providing greater variety and novelty.
Medium-Term Action Items (Coming Year)
The rest of the ideas were proposed during a mass brainstorm for ways to cure what ails much of CS education in general in American universities of the year 2004. I think the following will take much more than a year, but there is no time like the present to start.
Our degree programs are very rigid and they point our majors in the direction of factory software production (i.e., a "Dilbert job"), which is no longer glamorous, and perhaps runs counter to the current trend in academia and industry toward software project management. As Masaaki has documented, some of the current thinking regarding software development goes like this:
- (i) hire a highly-paid, MIS-type project manager to do (ii)-(iv) below:
- (ii) rent a smart systems (technical) designer,
- (iii) subcontract the designed system to a lot of cheap programmers and testers, and
- (iv) call in the company's software-SWAT-team to fix the final product.
"Who of (i)-(iv) are we training with our curriculum?" asked David.
Returning from the digression:
Bioinformatics, Medical Informatics, Chemoinformatics, Computational Physics, Computer-Aided Graphic Design, Computer Music, and more: Many incoming students want to "use computers to let me do X", where X might be physics, graphic design, biology, music, etc. This includes at least topics in what is now known as Computational Science and Engineering (CSE). (X might be equally be databases, web/systems administration, cryptography/security, or other computing subspecialties.)
Such people wish to be computing generalists (which is more than being mere "users"). Most current CS departments do not do well at accommodating these people, and we speculated that many computing generalists have given up on the traditional CS curricula, possibly transferred into other disciplines. Attrition of the CS student body has been high this year.
We must adapt our degree program(s) to accommodate these people who want-to-use-computers-to-do-X. To accommodate them, we must make available a degree program flexible enough that it almost allows a double major.
This requires we formulate a true "core" (about 12 credits) of courses that teach "what you need to know" about computer architecture, programming, support tools (operating systems, compilers/interpreters, debuggers), and foundations.
Supposing such a core can be developed, then our degree program for our own majors would consist of something such as:
- computing core
- several advanced computing courses (parameterized on CS or IS)
- specialty track (including capstone)
The degree program of a computing generalist (an "almost dual major") will consist of
- computing core
- core of the applications area
- (a variant of) the specialty track (including capstone)
- the case can be made to the College and the University that this meets the goals of true interdisciplinary education
- we legitimatize our discipline by asserting that our core courses define our foundations
- due to the nontrivial dual-area integration, we go beyond the "Dilbert-type" functionality of nonspecific IT training
- we are preparing for the future, when there will no longer be a job market specifically for "computer scientists"
- there won't be many text books that do this the way we want it (although the sustained success of the Abelson and Sussman book, Structure and Interpretation of Computer Programs, Second Edition1, MIT Press 1996, is due to its teaching of much of the computing core in the guise of an intro-to-programming text)
- the faculty who teach the core must be willing to work very hard2
Finally, we should never lower our academic standards to retain students. The new progams will not make our students' lives any easier but maybe will make them more interesting. Maybe our own lives will be more interesting, too.
At 16:00 (4pm) on Tuesday 19 October 2004, Cindy Forgie and Dave Schmidt will give a run-down of the current status of CIS200 and 300. (Allen Stoughton will schedule and announce this Real Soon Now.) Dave will use part of his time segment to present a first cut at a computing core adapted from CIS200, 300, 501, and 301.
1 Duude! As you can imagine, I felt way vindicated. :-D
BTW, yes, the full text of the book is online! Go... read... enjoy.
2 Duuuude! Some of us really like teaching this sort of stuff.