Saturday, February 13, 2010

CS as Service in Univs

Some of you may have thought about this more than I have, so this is a blog for help. The premise is that Computer Science (CS) is useful for nearly all other disciplines (Engg, Sc, Arts, Law, Business, whatever). Formally, students in other disciplines not only use computers and software, but often have to create software for their tasks, use sophisticated algorithmic primitives etc. So, they need to understand CS.
  • What and how much CS should others know?
  • What role should CS depts play in the University, for example, do other depts teach CS courses or does CS pull a Math and teach basic CS course across disciplines?
  • What are the ways to quantify the impact of CS depts across the Univ in this context and how to improve the impact (eg, joint research with other disciplines helps or hurts)?



Anonymous Anonymous said...

(1) Jeannette Wing's ideas on "Computational Thinking" seem relevant here.

(2) Based on my knowledge of university politics CS should "pull a Math and teach basic CS course across disciplines"

(3) I would think joint research would help. Show the relevance and importance of CS and so forth.

Generally, in this time of budget cutbacks, showing "relevance" is pretty basic to sheer survival.

10:41 AM  
Anonymous Anonymous said...

I have always thought there should be something like "high level programming and data management". You spend a few weeks learning, say, Python syntax and doing problems like the first few on Project Euler. Then you do a little bit of database stuff, then maybe a simple http problem where you get an url and maybe a simple get or post interaction.

For example: weeks 1-4 learn the syntax of some high-level language. Include some problems where reasonable data types and some concept of algorithm efficiency is necessary for satisfactory answers -- demonstrate slow naive answers and compare them to optimized ones in lecture and problem sets, but don't necessarily demand super deep understanding. Weeks 4-8: learn enough about databases to feed them some bodies of data via the chosen language and do queries, create indexes and text search indexes. Week 8-11: introduce networking, combine the above material with some simple web framework where results are returned over the web in an as-pre-configured-as-possible environment that nevertheless exposes the underlying http. Week 11-15: Do a project in groups or individually that synthesizes the material.

You may sense I am describing a course I wish I had taken, rather than the Scheme-based CS 3 at Cal, and this is indeed the case. The zero-to-something speed of Python and MySQL is so dramatically accelerated that you will get people hooked who might have quickly been overwhelmed by the more theoretical stuff (it is easy to conclude that if a pig-Latin converter is hard, really useful web sites must be impossible, and this is demoralizing for 18-20 year olds.) See also

I also think math is the wrong model -- it takes two years of intense work to get even started in math, and even after 4 or 5 the odds of making an original contribution to the field are on par with the "odds" of beating Federer in straight sets. But anybody with the fundamentals can do something cool programming, make a handy website, do a neat visualization, whatever. The similarity with math -- the hard problems, the years of apprenticeship even to understand the questions -- this is what you have to paper over aggressively! Emphasize the fact that whereas you can't be an original mathematician without unique insights plus understanding 500 years of history, you can do original valuable things on computers without even knowing what a volt or ampere is -- this magic of abstraction should be emphasized, it is not something to be ashamed of or wished away so that you can be more like math professors.

7:11 PM  

Post a Comment

<< Home