[Edu-sig] College CS courses

Daniel Yoo dyoo@hkn.eecs.berkeley.edu
Sat, 14 Apr 2001 06:11:24 -0700 (PDT)


On Fri, 13 Apr 2001, Alan Gauld wrote:

> Not sure this is entirely appropriate for the list but is anyone
> involved in teaching CS at college/university level?

I'm one of the teaching assistants for the introductory CS class, CS3, at
UC Berkeley.


> We have just been reviewing our graduate recruitment 
> process for the current year and have been shocked, 
> nay appalled, at the poor standard of the interviewees. 
> I wondered if anyone, especially from the UK,  could
> provide pointers to online syllabuses(sp?) for CS 
> courses. 

UC Berkeley uses Scheme for the introductory CS classes.  The introductory
class (CS3) introduces functional-programming and recursion.

    http://www-inst.eecs.berkeley.edu/~cs3

has the syllabus, as well as class lecture notes.  The class is using
Harvey and Wright's "Simply Scheme", which is a preparatory text for
Structure and Interpretation of Computer Programs.  The idea about CS3 is
that, for nonmajors and students who aren't ready to run headfirst into
SICP, we give a gentle introduction to programming concepts.  Still, it's
definitely not an "easy" class: there's some ideas like higher-order
functions are pretty tricky at first.


After that, we have three "core" classes that all CS undergrads need to
take: CS61A, CS61B, and CS61C.  They try to show different levels of
programming.

   61A is coverage of SICP topics, using Scheme.  They talk about
   recursion, logic programming, and programming with state.  Hard stuff,
   and a lot of fun.   http://www-inst.eecs.berkeley.edu/~cs61a.

   61B is the algorithms course, using Java as the implementation
   language.  The course focuses on low level details and the efficiency
   of algorithms.  http://www-inst.eecs.berkeley.edu/~cs61b


   61C is the low-level hardware course.  We learn about computer
   architecture, using MIPS assembly to learn how computers perform things
   like subroutines.  At the same time, we learn about the effects of
   cache and memory.  http://www-inst.eecs.berkeley.edu/~cs61c

After that, the upper division classes run a gamut of topics, including
databases, compilers, operating systems, artificial intelligence,
computation and complexity, randomized algorithms, graphics, and software
engineering.  If there's any topic in particular that you'd like a
syllabus of, I'll see if I can find it for you.



> Is this truly the current state of CS in academia or 
> are we just attracting the wrong grads?

Not sure.  I have a few friends at Stanford (don't shoot me!  *grin*), and
from hearing their experience, it sounds like they're doing very similar
stuff.  Don't know about how other US colleges do it.



> (*) Interview Questions included:
> 1) Contrast and compare two programming languages (if 
> the grad hesitated we suggested Java and C or VB)
> [Only about 10% of interviwees were able to do this.]

Ouch.  Berkeley's policy is not to concentrate on any given language: it
feels that the classes assume that students will independently learn the
language or die trying.  *grin* However, it does have "self-paced" courses
that deal mainly with language issues:

    http://www-inst.eecs.berkeley.edu/~selfpace


> 2) What are the differences between NT and Unix.  When would you
> select one over the other? [Universally the response was "NT has a
> GUI". One even suggested Unix was old fashioned and prone to
> crashing...]

Ouch.


You might actually want to talk with Professor Mike Clancy
(clancy@cs.berkeley.edu) --- I believe he's involved with graduate
admissions, and should have a lot to say about your concerns.