?

Log in

No account? Create an account

Previous Entry | Next Entry

Restructuring the CS curriculum

I believe that when you know something's going wrong, you make it right.
    -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)





Advantages

  • 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"


Disadvantages

  • 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.

--
Banazir
(06:30... *yawn*)

Comments

( 25 comments — Leave a comment )
hempknight
Oct. 12th, 2004 04:22 am (UTC)

# (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.


Being of them project managers I can tell you that you only have the highly-paid part wrong. The rest is funny 'cos it's true.

Did I mention I hate my job?

--
Danger is my middle name
banazir
Oct. 12th, 2004 04:24 am (UTC)
Being of them project managers I can tell you that you only have the highly-paid part wrong. The rest is funny 'cos it's true.
Bhaa, slavery can be fun.
Ask anyone! Anyone at all...! *taps foot*

Did I mention I hate my job?
You did, repeatedly.
What are you going to do about it, pilgrim?

--
Banazir
hempknight
Oct. 12th, 2004 04:33 am (UTC)
Bhaa, slavery can be fun.
Ask anyone! Anyone at all...! *taps foot*


So, master hobbit. Is slavery fun?

What are you going to do about it, pilgrim?

I'm going to Vegas to become a dancer. I'm gonna be a star!

--
Danger is my middle name
banazir
Oct. 12th, 2004 09:33 pm (UTC)
So, master hobbit. Is slavery fun?
You tell me, slave!
Am I not merciful?!

I'm going to Vegas to become a dancer. I'm gonna be a star!
You go do that.
Hey, will you dance at yodge's wedding?

--
Banazir
hempknight
Oct. 13th, 2004 01:47 am (UTC)
Hey, will you dance at yodge's wedding?

yodge is getting married? Woe is me! All my hopes are crushed now. If I only acted earlier! Oh, woe is me! She is lost to me forever now.

--
Danger is my middle name
banazir
Oct. 16th, 2004 04:05 am (UTC)
Let that be a lesson to you...
... on the importance of speaking up.

--
Banazir
(Deleted comment)
banazir
Oct. 16th, 2004 04:19 am (UTC)
Minors
We do have an undergraduate minor. I'm not sure how much the MIS people take advantage of it.

I went through a concurrent BS/MS program and really enjoyed all the applications to bioinformatics, etc. (esp. in 1993, when it was relatively early).

Thanks for the suggestion - I'll bring it up and let you know how it goes.

--
Banazir
penguinicity
Oct. 12th, 2004 09:57 am (UTC)
Philip Greenspun has an interesting article and discussion on this topic in his blog.
banazir
Oct. 16th, 2004 04:17 am (UTC)
Thanks!
A great blog, and a very interesting article. I think I've heard of Philip Greenspun before this, probably from his work at the MIT Media Lab.

It doesn't surprise me that our discussion recapitulates what Philip is saying there. There are probably dozens or hundreds of similar conversations happening at any given time these days (with different course materials and textbooks0.

--
Banazir
zengeneral
Oct. 12th, 2004 09:49 pm (UTC)
:)
As I sit here listening to William Shatner, I wonder…

It is natural to want change of direction especially when approaching a cliff. Just make sure there isn’t another cliff in the new direction.

Computer science is a bad career choice in the market place of today. This is primarily because software can be shipped partially working, and so half ass work is equitably marketable as uber-quality work. The impact of marketable crap is amazing, and we see this with technical work being outsourced.

This is where the image of being a computer scientist is blurred. Ask typical business majors what they think a computer scientist does, and they will say “program computers”. Thus, all computer scientists are programmers. Which, as you and I know is true with… an exception. This exception is that the converse is false. Not all programmers are computer scientists.

Programming is very-very easy. Take a spec in, produce an implementation. This can be outsourced, and it is. However, computer scientists are much than simple code monkeys, and that message has to be conveyed to employers. The image can be corrected in a “business/marketing” solution. “Change the label and reship it.”

Rather than “Computer Scientists” say “Computational Solution Engineer” (or some other goofy ass bull shit title to impress interviewers). For instance, when I worked at Black & Veatch, my boss told me that software engineer/computer scientist was the same as programmer. Obviously, the stereotype existed back in 98; it exists stronger now more than ever.
alvinboo
Oct. 15th, 2004 06:46 pm (UTC)
Re: As I sit here listening to William Shatner, I wonder…
I, CoD3Monk3y, grunt back :


You said-Computer science is a bad career choice in the market place of today.


I Say-Don't care cause I love what I am doing so much(Java,C++,Oracle PL/SQL)
that I intend to market MY own products from MY office here at home.


you said-Thus, all computer scientists are programmers. Which, as you and I know is true with… an exception. This exception is that the converse is false. Not all programmers are computer scientists.


I Say-Titles do NOT Matter! It's what you do with your skills that does.


you said-"Programming is very-very easy...simple code monkeys...has to be conveyed to employers"


I Say-Just what IS IT that you ARE conveying? That programmers are STUPID and Systems Analyst/IT Managers aren't?


you said-Rather than “Computer Scientists” say “Computational Solution Engineer” (or some other goofy ass bull shit title to impress interviewers).


I Say- if "some other goofy ass bull shit" is in your success toolkit then
you should consider a software upgrade...

besides William Shatner was no good without Spock...
zengeneral
Oct. 16th, 2004 01:30 am (UTC)
Re: As I sit here listening to William Shatner, I wonder…
"Don't care cause I love what I am doing so much(Java,C++,Oracle PL/SQL)
that I intend to market MY own products from MY office here at home."


if you don't care, then my words shouldn't matter. The problems is that my words did shake you at some level. Yes, there are CS students that are unemployed. If a CS student does get a job, then there is high probability that someone got fired or 'early retirement'.

"Titles do NOT Matter! It's what you do with your skills that does."
Titles do matter, the difference between a programmer and computer scientist is the dimension of work. Programming is transcribing a solution to a problem. Computer scientists produce solutions. Some programmers do the activity that computer scientists do, but it is not in bijection. Computer scientists do proofs whereas programmers do not. In my most humble of opinion, Proofs are the barrier between men and mice.

"Just what IS IT that you ARE conveying? That programmers are STUPID and Systems Analyst/IT Managers aren't? "
There are many programmers, but there are few that are really good at it. Solving problems is an art.

As to the managers, it depends on their background. If it is CS and they have good standing (as in # of years, successful projects). Then yes, they are most likely to be smarter then their staff. If it is business, then it depends. The idea that business people have is that doing stuff is a machine, it can be measured. Problem solving can't be measure well, therefore it isn't applicable to the managerial problems faced and taught in business schools. That is one of the fundamental reasons of conflict presented in Dilbert.

”if "some other goofy ass bull shit" is in your success toolkit then you should consider a software upgrade...”
Never underestimate the supreme power of bullshit.
alvinboo
Oct. 16th, 2004 12:16 pm (UTC)
Re: As I sit here listening to William Shatner, I wonder…

You know what, I woke up this morning and now I totally agree with you. Being a student who loves programming, having a very optimistic outlook for myself simply because I love what I am doing, I just get a little rattled when I hear negativity concerning problems in this field.I have been inundated with crying and whining at the college level by future incompetents
and I just want to get away.


Also the distinction between programmers and managers is fuzzy at times as perpetuated by the talk in the office break room.But for me I realize the real differences as opposed to the theoretical.As a future programmer I intend to be a catalyst for an improved outlook and a spirit of cooperation between programmers and management, even if that attitude is not returned by management.Problem solving is an art especially in people skills.However, I don't intend to get a job with a company, but if I do this will be my strategy.Also, after reconsidering the supreme power of bullshit--I realize that there is a place and time for such strategies.
But anyhoo, Kudos to you, and thanks for contributing to my insight(which is constantly being upgraded!).

grain_king
Oct. 16th, 2004 12:46 am (UTC)
CSU San Bernardino has recently instituted a similar sounding program. I am not too sure about it though.

I came to your LJ via the C++ community. I am barely an undergraduate in Southern California, and I am currently braving the rapids of our perilous community college system in order to find passage to a four year institution. Or something. I happened to glance at your CV and saw that your interests are very similar to my own, so I thought I'd comment in your LJ.

(I hope that it doesn't freak you out to have complete strangers posting in your journal.)
banazir
Oct. 16th, 2004 04:05 am (UTC)
Hello!
CSU San Bernardino has recently instituted a similar sounding program. I am not too sure about it though.
Well, we just moved from the College of Arts and Sciences to the Engineering College 11 years ago, so at least administratively there are some differences. Thanks for the link, though.

I came to your LJ via the C++ community. I am barely an undergraduate in Southern California
Very good - are you looking at USC?

and I am currently braving the rapids of our perilous community college system in order to find passage to a four year institution. Or something. I happened to glance at your CV and saw that your interests are very similar to my own, so I thought I'd comment in your LJ.
Thanks.

(I hope that it doesn't freak you out to have complete strangers posting in your journal.)
Not at all, no worries - feel free to friend me if you like.

--
Banazir
alvinboo
Oct. 16th, 2004 01:02 pm (UTC)
Re: Hello!
Hi, I am a student at Texas State Technical College in Waco, Tx and was wondering what the general opinion of grads for 2-yr institutions is in the industry as a whole.Here students get many more hours of actual programming
than any where else I have investigated.I have hundreds of hours in C++, Oracle PL/SQL, and Java.But I sometimes wonder if there is a difference in the way graduates from technical schools are viewed than say someone from a traditional school.Here's the CS core at
  • http//www.tstc.edu

  • I am in the Client server Oracle...
    A.A.S. - Computer Science Technology
    Tech Prep A.A.S. - Computer Science Technology [costs]
    A.A.S. - Business Systems Development
    A.A.S. - Client/Server - Microsoft
    A.A.S. - Client/Server - Oracle
    A.A.S. - Graphics & Simulation [costs]
    Certificate - Oracle Application Developer [costs]
    A.A.S. - Unix/C++ [costs]
    grain_king
    Oct. 16th, 2004 03:20 pm (UTC)
    Re: Hello!
    ...looking at USC?
    That would be nice. I'm not sure if I can satisfy the competitive admission requirements, not to mention the financial responsibilities of attending a private institution. Then again, I haven't actually contacted anyone at USC, so I don't know for certain (I've only mentioned it to a counselor at my school in passing). Caltech would be awesome as well, but I will most likely end up attending some local institution like UCR or CSUSB.

    Thanks.
    You're welcome. =)

    Not at all, no worries - feel free to friend me if you like.
    Bwahaha! Famous last words... ;)
    alvinboo
    Oct. 16th, 2004 04:10 pm (UTC)
    Re: Hello!
    Did'nt mean to bust your thread. OOps
    My question was directed to the professor...
    Was your respone intended to me, I had trouble folling the logic.
    I am In Texas, trying to gain some insight into how 2 year technical colleges are viewed by prospective employers as compared to everything else.
    The admission requirements at T.S.T.C. are easy but once you get in you are coding actual programs from day one as well as learning the theory behind it. It is grueling.Some students don't make it once they get to the advanced courses.
    kakarigeiko
    Oct. 20th, 2004 01:56 pm (UTC)
    What does it mean to have a BSc in CS?
    Hi Bill,

    I found your journal via the algorithms community. Seems like a great journal, would you mind if I added you to my friends list?

    I'm currently a PhD student in CS in a US university and I got my undergrad in CS from another (big-name) US university.

    I totally took the wrong major as an undergrad and am paying for it now with interest compounded. I should have taken mathematics as a major. Heck, something like Physics or EE would have served me better in a PhD program for CS than the stinking undergrad CS curriculum.

    My big gripe with the CS major in undergrad was the complete lack of technical depth. I'd say my biggest handicap right now is my lack of mathematical intuition and experience. In my university, under the CS major, they try to teach you to be a first class code hacker, NOT a computer scientist. It's a total denial of reality because code hackers are not created in classes, they are self-taught through a long process of experience and direct contact with real-world projects. This kind of programming-heavy approach is similar to teaching civil engineering by having students pour concrete and turn screws for a year. In my major all I learnt was basic implementation skills. It was vocational training of the worst kind. I ran in circles implementing this and that and just skimmed the barest surface of the Science part of computer science. I always thought that the good stuff would eventually come but all of a sudden I had graduated, and I had loads of programming experience but no idea how to approach real CS research.

    When I entered my PhD program I fell off a very steep cliff. I know the cliff is supposed to be there, but seriously, as a CS major I had a much harder time with the CS PhD than any mathematics major would ever have. It is somewhat ironic that one would be more handicapped coming from the same department. That's why I feel there is something seriously wrong with the approach to CS undergraduate study in our universities.

    I think in the process of major selection in the undergraduate stage, there should be safety nets for young students who don't know what they're getting into. You should not be able to completely sabotage yourself by picking vocational training, which is much, MUCH more effectively learnt on-the-job in internships and such. I think each major field of study should open the door to a discipline: Sciences, Engineering, Medicine, Economics, Music, Psychology, Drama, etc. They should teach you more "why"s than "hows". The way CS was taught in my undergrad, it was almost all "hows". In the networks class, we implemented sockets. In the OS class, we hacked the kernel. In our umpteen programming classes, we programmed. There were only 2 classes in CS theory (algorithms and computation).

    As mentioned in the other comments, code hacking is falling out of favour. The big glam has passed and students are realising that programming is a blue collar job. Now I have the utmost respect for so-called blue-collar jobs - I don't know how my mechanic fixes my car or my plumber fixes my plumbing - it's like magic to me and they deserve to be highly paid for their skills. BUT, I don't think that's what a university should be teaching. These are on-the-job skills. Any intelligent person can pick them up after they've dedicated themselves to a period of initial classroom training and another period of field apprenticeship. Coding is no longer black magic known only to a cabal of skilled technicians. Students KNOW this and that's why they're getting disillusioned and leaving the major. Young people have big dreams. They want to be designers, creators, thinkers and leaders. They come to school to learn how things are discovered and developed, and how they can discover and develop things themselves. Right now, the CS major doesn't teach you squat about how to do that. You're supposed to gather those tools on the side, as an extra-curricular activity if you're interested in anything more than code hacking. An inversion of focus is needed. Teach our kids the SCIENCE. They will pick up the SKILLS when they need them.
    kakarigeiko
    Oct. 20th, 2004 02:05 pm (UTC)
    Re: What does it mean to have a BSc in CS?
    I ran out of space in my comment... and out of momentum in my rant...

    With relevance to your proposed revamp of CS, you're certainly headed right in the direction I was describing as necessary. I'm very impressed by the boldness of what you and your department have developed and I wish I was a quite few years younger and enrolled in your university so that I could get a do-over of my CS undergrad. Great work!!
    banazir
    Oct. 20th, 2004 02:23 pm (UTC)
    Re: What does it mean to have a BSc in CS?
    I found your journal via the algorithms community. Seems like a great journal, would you mind if I added you to my friends list?
    Not at all! Nice to meet you.

    I agree very strongly with your points, especially insofar as mathematical and scientific foundations are still more essential to an undergraduate degree in CS than technical aspects of programming, software engineering, and applied CS.

    I often profess to be shocked that we have incoming graduate students who have never used either FTP or SCP before, but it's a lot worse to have never seen the definition of undecidability (which I had when I graduated from Hopkins and started at Illinois) nor proven a loop invariant or the NP-completeness of a decision problem (which I had not).

    I'm going to have to think long and hard about your other points, but your assertion that:
    You should not be able to completely sabotage yourself by picking vocational training, which is much, MUCH more effectively learnt on-the-job in internships and such.

    I'd like to hear more about said steep cliff, if you are willing to share, and I'm about to survey my CS education-related entries (5 or 6 of them to date) in a single aggregated post.

    Welcome again, and thanks for your cogent and useful thoughts!

    --
    Banazir
    kakarigeiko
    Oct. 20th, 2004 04:44 pm (UTC)
    Re: What does it mean to have a BSc in CS?
    About vocational training safety-net comment... I take it back, that's complete rubbish. It was typed in error, with more passion than judgement.

    I don't mean that the system should hand-hold every student through their undergrad career by simply censoring any options that might not be ideal for one or two students. That is clearly ridiculous. I just projected my own lack of good judgement onto millions of future undergraduates and was suddenly seized with the urge save them all from a "terrible" fate. Not a rational response.

    Without going to the extreme, there are ways to improve the system, though. Many of which you have already covered. Give people more options. Make the purpose of the degree more explicit.

    As for the steep cliff I mentioned, it's a feeling, not a measurable quantity. A lot of it is specific to me, and not generalisable to any CS grad.

    When it was time to choose a research area, I had some idea of what the systems people were doing, but absolutely no clue what theoretical CS was about. I had no foundations whatsoever. I had been introduced to some basics but they were all pretty much forgotten. An exerpt from an interview with a theory professor: Prof: "Let me just check. Do you know what it means if a problem is in NP?" Me (totally panicked): "Uuh. It can't be solved in polynomial time?" Yeah. Bad. I couldn't read a single theory paper. Total gibberish, each one of them. I could even understand the significance of the professors' research. Well I eventually picked a systems area because I felt so intimidated by everything else.

    In classes, I had no problem with anything that was presented from ground-up but went blank whenever some background was required. In research, I'd go struggling whenever a basic mathematical tool was used, because I simply didn't know it. Differential equations. Basic linear algebra like principle value decomposition. Algebraic structures (like fields,rings and groups). Statistics. Probability and combinatorics. Graph theory. Etc. Furthermore, I was unused to thinking mathematically. Mentally, I was out of shape. This could be because I had taken a year off between undergrad and grad school to work and for other personal reasons. But I just felt that if my undergrad had focused on giving me more consistent exposure to the mathematical frame of mind, I wouldn't be so disadvantaged.

    kakarigeiko
    Oct. 20th, 2004 04:53 pm (UTC)
    Re: What does it mean to have a BSc in CS?
    I could even understand the significance of the professors' research

    edit: I could not even understand the significance...
    gregbo
    Oct. 20th, 2004 06:03 pm (UTC)
    Re: What does it mean to have a BSc in CS?
    Hi

    You might find this article about systems folks vs. theorists by Douglas Comer (Purdue CS prof) interesting.
    ( 25 comments — Leave a comment )

    Latest Month

    December 2008
    S M T W T F S
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   

    KSU Genetic and Evolutionary Computation (GEC) Lab

    Teunciness

    Breakfast

    Science, Technology, Engineering, Math (STEM) Communities

    Fresh Pages

    Tags

    Powered by LiveJournal.com
    Designed by Naoto Kishi