[net.cse] Exams vs. Programming Assignments

clelau@wateng.UUCP (Eric C.L. Lau) (09/23/85)

This was in the discussion of students cheating in programming assignments.
In article <659@bu-cs.UUCP> root@bu-cs.UUCP (Barry Shein) writes:
>I use a simple check, a student can not pass most of my classes without
>satisfactory grades on exams. Exams are closed book and I make it quite
>clear (and design the questions such) that the primary purpose of my
>exams is to put the person who is getting too much help on the homeworks

I guess I'll throw in my two bits.  I'll assume this is a CS course you're
talking about and that the kind of exam you're referring to is one where the
students have to write programs or program segments to do specific tasks.  If
my assumptions are wrong then don't take this article wrong.  But
my complaint about exams that ask you to write a function that do this or that
is that they don't really test whether you can program.  They test how fast
you can think up an algorithm.  In real life you don't normally have a twenty
minute time limit to write a function.  The pressure itself is not normal.
I know in real life there are dates when projects are due but these due dates
usually allow alot more than twenty minutes for a working function.  And they
also allow testing and correcting a function with a bug in it.  That is how
programming is normally done.  Having twenty minutes to write a syntactically
and logically correct function will pick out the best students true but it
leaves the average programmers in with the hopeless ones.
I've survived all this and made it to grad school because I happen to think
fairly fast but I have friends who I consider better programmers than I who
didn't make the grades because they couldn't do well on the exams.  Their
projects and assignments were better than mine because they put the extra effort
into them but they couldn't work under the twenty-minute-per-function time
limit.  Sure they passed the courses but I got higher marks because I could
think faster, that's all.
Before someone brings it up, I know that it's possible to make up a "good"
exam with adequate time limits and not too complex objectives for the functions
to be written.  It's just that I haven't written too many and I'm pretty sure
they're not easy to make up.
Well I'm open to profs out there with comments since I'm just a lowly grad
student :-)
		Eric Lau
		...!ihnp4!watmath!wateng!clelau

P.S. The twenty minute figure is not based on any facts just from my past
experience.

bjorn@dataio.Dataio.UUCP (Bjorn Benson) (09/24/85)

In article <2818@wateng.UUCP> clelau@wateng.UUCP (Eric C.L. Lau) writes:
> ...
>my complaint about exams that ask you to write a function that do this or that
>is that they don't really test whether you can program.  They test how fast
>you can think up an algorithm.
> ...
>       		     Having twenty minutes to write a syntactically
>and logically correct function will pick out the best students true but it
>leaves the average programmers in with the hopeless ones.

Computer Science is not Programming.
Just like Chemistry is not mixing chemicals.
Just like Physics in not watching pendulums.

Computer Science is Algorithms and Theory.
Engineering is Programming (and a bit more).

Grad School is for the best students, the ones who can think, not
(necessarily) the ones who can program.

					Bjorn Benson

usenet@ucbvax.ARPA (USENET News Administration) (09/26/85)

>[... exams] don't really test whether you can program. 
>They test how fast you can think [... lots deleted]

Basically I think this type of problem occurs with exams
of all types, not just computer science. I view this
situation as a flaw in our educational system. Ideally
I would like to stop giving anything but oral exams,
to be given when the student feels he has mastered the material.
Then either he would pass the exam if I felt he had
mastered the material, or be given another chance to
retake the exam in say 6 months or so, until he
succeeded. The present system promotes quick thinking
and clever people at the expense of more methodical
types who work more slowly and carefully. It also
gives many students a negative self image that is
not reflective of their true ability, hinders the
learning process, etc. Some students become cutthroat
competitors who care more about grades than knowledge.

In practice when teaching large courses (like > 200 students)
what I do is give exams with no time limit. This has worked
fairly well since I have the patience to wait 4 hours for
the one student who takes more than 2 hours, but certainly
isn't ideal ... 

Good luck in solving this problem!

   -Tom
    tedrick@berkeley

crm@duke.UUCP (Charlie Martin) (09/28/85)

In article <823@dataio.Dataio.UUCP> bjorn@dataio.UUCP (Bjorn Benson) writes:
>Computer Science is Algorithms and Theory.
>Engineering is Programming (and a bit more).
>

Hah! If a 
computer scientist'' can graduate without being able
to write a well-designed, well-coded programs (and many do), what
is the point?  The language of and reason for computer science is
programming -- and computer scientists who can't write good programs
are as useless as English teachers who can't write an proper and
grammatical term paper.

>Grad School is for the best students, the ones who can think, not
>(necessarily) the ones who can program.
>
>					Bjorn Benson


-- 

			Charlie Martin
			(...mcnc!duke!crm)

usenet@ucbvax.ARPA (USENET News Administration) (09/30/85)

>>Computer Science is Algorithms and Theory. [ ... lots deleted ... ]

>Hah! [ ... lots deleted ... ] The language of and reason for computer
>science is programming -- and computer scientists who can't write
>good programs are as useless as English teachers who can't write an
>proper and grammatical term paper.

>>Grad School is for the best students, the ones who can think, not
>>(necessarily) the ones who can program.

My impression is that, at the graduate level, ability to program
is regarded as an essentially trivial skill (like knowing your
multiplication tables). There are lots of undergrads who can
write good programs, but not so many who understand theory.
In grad school, good programmers are "a dime a dozen".
Good thinkers and theoreticians are not so common.

Computer *SCIENCE* is not the same as computer *PROGRAMMING*.

This is somewhat analagous to the situation in Mathematics:
being a good Mathematician has little or nothing to do with
ability to do calculations (believe it or not ...)

bjorn@dataio.Dataio.UUCP (Bjorn Benson) (10/01/85)

In reference to <6358@duke.UUCP> crm@duke.UUCP (Charlie Martin):

If you think that "...language of and reason for computer science is
programming..." then you are missing some fundamental points:
(1)	Computer science is the study of computers and how they work
	and how to design them and how to use them effeciently and
	and how to build algorithms and how to solve problems, etc.
(2)	Programming is the act of taking a design and translating it
	into BASIC, PASCAL, Modula2, LISP, etc.  This you can learn
	at Bills Bussiness College.
(3)	A good software engineer spends most of his/her time (> 80%)
	designing, documenting, redesigning, debugging, THINKING,
	and only a small amount coding.

Furthermore, I agree with Mr. Martin that if "...a computer scientist 
can graduate without being able to write ... programs..." then there is 
something wrong with the university.  But if all the young man/woman can do 
is to write programs then he/she should have gone to Bills Bussiness 
College and saved $20,000.

That brings up my biggest complaint against undergraduate computer science 
educations is that they teach you "programming"... they teach you how to edit 
a file under VMS... they teach you how to write in assembly language...
they teach you what a barrel shifter is... they teach (etc.), but they 
don't require any theory classes.  

They don't require a class on design and analysis of algorithms.  They 
don't teach the thoery of LALR parsers, they don't teach...

So you graduate, and you know specifics: 
	1. Unix
	2. recursive descent
	3. quick-sort
	4. linked lists.
But if the real world doesn't want linked lists then you 
are out of luck -- no one taught you how to THINK, much less
about computer science.  You are a Programmer.

				Opinions from the keyboard of
					Bjorn Benson

crm@duke.UUCP (Charlie Martin) (10/01/85)

In article <10497@ucbvax.ARPA> tedrick@ucbernie.UUCP (Tom Tedrick) writes:
>>>Computer Science is Algorithms and Theory. [ ... lots deleted ... ]
>
>>Hah! [ ... lots deleted ... ] The language of and reason for computer
>>science is programming -- and computer scientists who can't write
>>good programs are as useless as English teachers who can't write an
>>proper and grammatical term paper.
>
>My impression is that, at the graduate level, ability to program
>is regarded as an essentially trivial skill (like knowing your
>multiplication tables). 

    I agree that that is the way ability to program is *reguarded*
    at the graduate level.  I disagree that that is the *correct*
    way for it to be reguarded.

>There are lots of undergrads who can
>write good programs, but not so many who understand theory.
>In grad school, good programmers are "a dime a dozen".

    Good programmers are not a dime a dozen anywhere!  (At least, if
    there is a school where they are a dime a dozen, write and tell
    me -- my wife'll take a dozen herself for her company.)  People who
    can write barely adequate programs are a dime a dozen -- and
    computer science departments turn out more every year.

>Good thinkers and theoreticians are not so common.

   No question there: but I suggest that good thinking (at least about
   programs) and good programming are not mutually exclusive.

   But until we are talking about developing people *only* for academic
   or research Ph.D.'s, we are talking about developing people who are
   going to be programming for a living.  They don't know how.  We are
   cheating them.

>
>Computer *SCIENCE* is not the same as computer *PROGRAMMING*.
>
>This is somewhat analagous to the situation in Mathematics:
>being a good Mathematician has little or nothing to do with
>ability to do calculations (believe it or not ...)

   and a good thing, too.  I didn't begin to do well in mathematics
   until I got past the courses which required calculation.

   I'll stick with my analogy, thanks:  computer programming is as
   central and essential a part of computer science as reading and
   writing English is a part of English-as-academic-study.  (Along
   with other things, no question.)
-- 

			Charlie Martin
			(...mcnc!duke!crm)

jerry@uwmcsd1.UUCP (Jerry Lieberthal) (10/01/85)

> >>Computer Science is Algorithms and Theory. [ ... lots deleted ... ]
> 
> >Hah! [ ... lots deleted ... ] The language of and reason for computer
> >science is programming -- and computer scientists who can't write
> >good programs are as useless as English teachers who can't write an
> >proper and grammatical term paper.
> 
> >>Grad School is for the best students, the ones who can think, not
> >>(necessarily) the ones who can program.
> 
> 
> Computer *SCIENCE* is not the same as computer *PROGRAMMING*.
> 
Then there is always D. Knuth's assertion that computer programming is an
art, not a science ...

-- 


------------------------------------------------

	- jerry     University  of Wisconsin-Milwaukee
		    Computing Services Division
		    {ihnp4, uwvax, uwmacc}!uwmcsd1!jerry
		    uwmcsd1!jerry@wisc-rsch.ARPA

JCA@psuvm.BITNET (10/02/85)

     
>In article <823@dataio.Dataio.UUCP> bjorn@dataio.UUCP (Bjorn Benson) writes:
>>Computer Science is Algorithms and Theory.
>>Engineering is Programming (and a bit more).
>>
>
>Hah! If a
>computer scientist'' can graduate without being able
>to write a well-designed, well-coded programs (and many do), what
>is the point?  The language of and reason for computer science is
>programming -- and computer scientists who can't write good programs
>are as useless as English teachers who can't write an proper and
>grammatical term paper.
>
>>Grad School is for the best students, the ones who can think, not
>>(necessarily) the ones who can program.
>>
>>                                       Bjorn Benson
>
>
>--
>
>                        Charlie Martin
>                        (...mcnc!duke!crm)
     
I quite agree!  Why do computer science graduates expect employeers to believe
they can program with a degree in Computer Science?
     
Sounds like Computer Engineering really is the way to go.
     
Jeffery Almoney
122E Computer Building
University Park, PA  16802
(814)863-0422
Bitnet: jca at psuvm
UUCP: ...!allegra!psuvax1!jca@psuvm.BITNET
     

dms@ihlpg.UUCP (Spang) (10/02/85)

> educations is that they teach you "programming"... they teach you how to edit 
> a file under VMS... they teach you how to write in assembly language...
> they teach you what a barrel shifter is... they teach (etc.), but they 
> don't require any theory classes.  
> 
> They don't require a class on design and analysis of algorithms.  They 
> don't teach the thoery of LALR parsers, they don't teach...
> 
> So you graduate, and you know specifics: 
> 	1. Unix
> 	2. recursive descent
> 	3. quick-sort
> 	4. linked lists.
> But if the real world doesn't want linked lists then you 
> are out of luck -- no one taught you how to THINK, much less
> about computer science.  You are a Programmer.
> 
> 				Opinions from the keyboard of
> 					Bjorn Benson

Do you know me by any chance?
I just graduated from a small private school that has just declared itself a 
university complete with graduate computer science degrees.
When I had finished learning every possible language and carried most all
my programming classes with 99% of the points allowed, I decided to take
the brand new Computer Algorithms (an analysis) course.  My advisor strongly discouraged me
saying it saying it was a poor course (he was the teacher!) and would be
fairly useless in my career!
I'm now here at BTL and never have syntax errors but much more emphasis is
placed on efficiency in the real world than I would have guessed while
I was in school.

I sometimes think that a monkey with a keyboard could eventually produce
what was expected of me in school.

Debra Spang

I hate it when my leg falls asleep during the day,
then it's usually up all night
		-Steven Wright

*****General Disclaimer******

usenet@ucbvax.ARPA (USENET News Administration) (10/03/85)

>   I'll stick with my analogy, thanks: [ ... much deleted ... ] 
>			Charlie Martin

Basically I think I can agree with most of what Charlie said
(although there are a few minor misunderstandings, possibly).

I think though that there is a real problem with undergrads who
catch on to programming as if they were born to it, then decide 
that they know everything there is to know about Computer Science.
They fight ferociously against any attempt to teach the
underlying theory (at least we have hordes of that kind of
student at Berkeley ... I don't know if this happens elsewhere).
Computer Science has a marvelously rich theory and I wish more
of the undergrads could appreciate it. (Also the formal legal
purpose of this University (Berkeley) is to train scientists
and researchers, and promote scientific research, not to
provide job training for programmers.)

I do not want to be regarded as claiming the present system
is desirable. I do think it right to "tell it like it is" in
hopes of dispelling any naive hopes that undergrads might have,
for their own good. Life is difficult, grad school is worse ...

levy@ttrdc.UUCP (Daniel R. Levy) (10/04/85)

In article <10497@ucbvax.ARPA>, usenet@ucbvax.ARPA (USENET News Administration) writes:
>
>My impression is that, at the graduate level, ability to program
>is regarded as an essentially trivial skill (like knowing your
>multiplication tables). There are lots of undergrads who can
>write good programs, but not so many who understand theory.
>In grad school, good programmers are "a dime a dozen".
>Good thinkers and theoreticians are not so common.
>
>Computer *SCIENCE* is not the same as computer *PROGRAMMING*.
>
>This is somewhat analagous to the situation in Mathematics:
>being a good Mathematician has little or nothing to do with
>ability to do calculations (believe it or not ...)

A quibble: being a good mathematician, however, will probably have a good
deal to do with ability to do algebra!  Programming could be looked upon
as the "algebra" which one must deal with before being proficient in the
"calculus."  Exactly what language is learned may not mean much; the idea
is that the computer scientist has experienced the act of programming and
understands what is going on as a result of the programming.  Perhaps the
programming need not even be in a formal language at all; ideally a "con-
ceptual" programming ought to suffice (algorithms which manipulate the
data entities within the computer)--but practically, this is learned via
programming in a conventional language, C, Lisp, Fortran, Pascal, Occam,
Basic, Ada, ... what have you.  Some of these practical languages have
more ability to express certain algorithms than others, of course.  Being
good in one which has a more powerful operation set (C versus Fortran, for
instance) bodes well for the ability to grasp the workings of complex and
clever algorithms, just as being proficient in many aspects of algebra
helps one with the calculus.  End quibble.
-- 
 -------------------------------    Disclaimer:  The views contained herein are
|       dan levy | yvel nad      |  my own and are not at all those of my em-
|         an engihacker @        |  ployer or the administrator of any computer
| at&t computer systems division |  upon which I may hack.
|        skokie, illinois        |
 --------------------------------   Path: ..!ihnp4!ttrdc!levy

crm@duke.UUCP (Charlie Martin) (10/04/85)

In article <827@dataio.Dataio.UUCP> bjorn@dataio.UUCP (Bjorn Benson writes:
>In reference to <6358@duke.UUCP> crm@duke.UUCP (Charlie Martin):
>
>If you think that "...language of and reason for computer science is
>programming..." then you are missing some fundamental points:
>(1)	Computer science is the study of computers and how they work
>	and how to design them and how to use them effeciently and
>	and how to build algorithms and how to solve problems, etc.
... and English Literature is the study of what writers have written,
and what has been important to people through the history of written
english.  But to be able to communicate professionally as an English
specialist, one had better be more than simply barely competent in
English Composition.

>(2)	Programming is the act of taking a design and translating it
>	into BASIC, PASCAL, Modula2, LISP, etc.  This you can learn
>	at Bills Bussiness College.

Exactly my point: you can learn it at Bill's Business College, but you
can't learn it in a university.

>(3)	A good software engineer spends most of his/her time (> 80%)
>	designing, documenting, redesigning, debugging, THINKING,
>	and only a small amount coding.

Are you under the impression that most universities teach how to design
a program either?  I'm certainly not.

>Furthermore, I agree with Mr. Martin that if "...a computer scientist 
>can graduate without being able to write ... programs..." then there is 
>something wrong with the university.  But if all the young man/woman can do 
>is to write programs then he/she should have gone to Bills Bussiness 
>College and saved $20,000.

If *all* they can do is write programs, they may have been better off at
Bill's -- but if they graduate and CAN'T program (and most of them
can't) then they were CERTAINLY better off at Bill's.  For the
non-academic computer professional -- one who will practice software
design and creation, not teach: that is, one with a BA, BS, Or Master's
-- an essential skill is the skill of creating a competent and
professional program.

Note what I am saying: *an* essential skill.  Not *the* essential skill,
but *an* essential skill, just as the ability to compose a competent and
coherent paper is an essential skill for someone specializing in
English, and the ability to draw a readable house plan is an essential
skill for an architect.  But we aren't teaching it.  At least, we don't
here, and the people I used to hire in my earlier incarnation as a
software engineering manager hadn't learned it.

>That brings up my biggest complaint against undergraduate computer science 
>educations is that they teach you "programming"... they teach you how to edit 
>a file under VMS... they teach you how to write in assembly language...
>they teach you what a barrel shifter is... they teach (etc.), but they 
>don't require any theory classes.  

If one majors in German, one learns German before starting Goethe.
You've got to know the basics before you can do the advanced stuff, and
we aren't starting with people who have an intrinsic knowledge of
computers.  Certainly, my Intro to Computing labs have very few people
who are prepared to mess with theory of computation.

>They don't require a class on design and analysis of algorithms.  They 
>don't teach the thoery of LALR parsers, they don't teach...

...they don't teach about file systems, they don't tell people why
globals are not always best, they don't tell people about maintenance,
or about coupling and cohesion, or secret-hiding in modules.

(... there are bunch of Ph.D.'s in CS who would be hard-pressed to tell
you much about the theory of LALR parsing.)

> .... -- no one taught you how to THINK, much less
>about computer science.  You are a Programmer.

But we not only don't teach them how to think, we don't teach them how
to program EITHER!

So far, your argument against teaching programming in college leaves me
unconvinced: so far as I can see, you want to make sure they are
prepared to run before we teach them to walk.  So we graduate a bunch of
kids who want to go out and run (about one out of two new grads I
interviewed wanted to write compilers) but who can only crawl -- and we
leave it to industry to spend one to three years teaching them the basic
skills of their profession *after* they have spent $20,000 supporting our
research, and keeping us in our nice academic research jobs.  At least
Bill's Business College sells what they purport to sell.
-- 

			Charlie Martin
			(...mcnc!duke!crm)

crm@duke.UUCP (Charlie Martin) (10/04/85)

In article <10524@ucbvax.ARPA> tedrick@ucbernie.UUCP (Tom Tedrick) writes:
>>   I'll stick with my analogy, thanks: [ ... much deleted ... ] 
>>			Charlie Martin
>....
>I think though that there is a real problem with undergrads who
>catch on to programming as if they were born to it, then decide 
>that they know everything there is to know about Computer Science.
You are absolutely right, of course.  I know this because I was one
of these students, left school, went off and made lots of nice
money (salary lots, not Steve Jobs lots), and am now back in school
years later trying to learn all that theory stuff.

>Computer Science has a marvelously rich theory and I wish more
>of the undergrads could appreciate it. (Also the formal legal
>purpose of this University (Berkeley) is to train scientists
>and researchers, and promote scientific research, not to
>provide job training for programmers.)
I wish more undergrads could appreciate it as well -- and sometimes
despair of trying to suggest it to *my* undergrads.  As to the formal
legal purpose ... well, I used to see a lot of people from Berkeley,
and the ones we hired with master's degrees did lots of programming.
They also wrote lots and lots of English prose, which will only
set me off on another rant-and-rave if I think about it.  (We don't
usually teach CS majors about literate english either.)  Until we
have a bigger market for people who spend a lot of time showing
whether an algorithm is O(n**2.1) or (On**2.15), wouldn't we be
better off by calling a spade a spade?

(As an aside: I think the top-20 schools all tend to emphasize real
programming and/or hacking.  This seems an interesting regularity.)

(Another aside: Please don't take the comment above as a criticism of
Cal -- we saw lots of CAl people because they seemed to have learned
marked more of the sort of thing I'm talking about.)

That's my only complaint here anyway: we worry about teaching them the
theory, and how we should be exposing them to more of the theory, but
still don't really teach them how to express those ideas in a useful
form.  I still think that is (essentially) a cheat.
-- 

			Charlie Martin
			(...mcnc!duke!crm)

jerry@uwmcsd1.UUCP (Jerry Lieberthal) (10/05/85)

> In reference to <6358@duke.UUCP> crm@duke.UUCP (Charlie Martin):
> 
> So you graduate, and you know specifics: 
> 	1. Unix
> 	2. recursive descent
> 	3. quick-sort
> 	4. linked lists.
> 
> 				Opinions from the keyboard of
> 					Bjorn Benson

Although I have no real argument against the above, from what I have seen,
most of the course offerings that would solve some of the deficiencies are
NOT at the undergraduate level.  Courses on algorithms, parsers, etc., are
usually reserved for the graduate level (note that I am not making a comment
on whether that is correct or not).

-- 


------------------------------------------------

	- jerry     University  of Wisconsin-Milwaukee
		    Computing Services Division
		    {ihnp4, uwvax, uwmacc}!uwmcsd1!jerry
		    uwmcsd1!jerry@wisc-rsch.ARPA

jsgray@watrose.UUCP (Jan Gray) (10/07/85)

In article <556@uwmcsd1.UUCP> jerry@uwmcsd1.UUCP (Jerry Lieberthal) writes:
>> In reference to <6358@duke.UUCP> crm@duke.UUCP (Charlie Martin):
>> 
>> So you graduate, and you know specifics: 
>> 	1. Unix
>> 	2. recursive descent
>> 	3. quick-sort
>> 	4. linked lists.
>> 
>> 				Opinions from the keyboard of
>> 					Bjorn Benson
>
>Although I have no real argument against the above, from what I have seen,
>most of the course offerings that would solve some of the deficiencies are
>NOT at the undergraduate level.  Courses on algorithms, parsers, etc., are
>usually reserved for the graduate level (note that I am not making a comment
>on whether that is correct or not).
>
>	- jerry     University  of Wisconsin-Milwaukee
>		    Computing Services Division
>		    {ihnp4, uwvax, uwmacc}!uwmcsd1!jerry
>		    uwmcsd1!jerry@wisc-rsch.ARPA

At the University of Waterloo, all CS undergrads take:

CS360	Introduction to the Theory of Computing
	Models of computers include finite automata and Turing machines.
	Basics of formal languages with applications to syntax of programming
	languages.  Unsolvable problems and their relevance to the semantics
	of programming.  Concepts of computational complexity including
	algorithm optimality.

CS undergrads may take:

CS462	Formal Languages and Parsing
	Languages and their representations.  Grammars - Chomsky hierarchy.
	Regular sets and sequential machines.  Context free grammars -
	normal forms, basic properties.  Pushdown automata and transducers.
	Operations on languages.  Undecidable problems in language theory.
	Applications to the design of programming languages and compiler
	construction.

CS464	Computability and Recursive Function Theory
	Models of the computational process as reflected by computers,
	linguistic systems, functional specifications, transformational
	systems, formal logic, etc.  Equivalence of these models.
	Computational complexity for specific models and abstractions
	fitting all models.  Formal reducibilities between computational
	problems, and the complexity of theser reducibilities.

CS466	Algorithm Design and Analysis
	Design of good algorithms and analysis of the resources they consume.
	Lower bounds on the resource requirements of algorithms to compute
	certain functions.  Problems from the following areas are discussed
	in this light: sorting and order statistics, data structures,
	arithmetic computations, the NP-complete problems.

CS468	Program Verification
	Methods of program verification.  Implications for structured
	programming.  Inductive reasoning about recursive programs and
	recursively defined data structures.

Not every graduating CS student takes all of these 46x courses.  I have
a suspicion that most don't take any of them.  But they *are* offered
to those who *do* wish to learn more about CS theory.

On the other hand, almost all UW CS students take the following: (although
it is not a required "core" course)

CS180	Introduction to File Processing
	Introduction to the use of computers.  Concept of an algorithm.
	Language and the notation for describing algorithms.  Analysis
	and solution of problems dealing with files.  Introduction to
	a procedure-oriented language (usually COBOL).  The preparation
	and debugging of programs in such a language.  Topics include:
	file processing and maintenance, sorting, report generation,
	and file design.

This course allows UW CS students to compete with Bill's Business
School for summer jobs (Co-op jobs, as we say around here).  Freshmen
can take this course, or *no* CS course, in either their 1A or 1B term;
there is also a fairly good introduction to CS course, CS140, that *is*
taken by all CS freshmen.

It is my contention that if this course didn't exist, and the courses
in second and later years were moved forward one term, students would
be more advanced by the time they reached fourth year and would take
more of the CS46x (CS theory) type courses.

Sigh.

[Disclaimer: I am a CS undergraduate at UW]

Jan Gray   (jsgray@watrose)   University of Waterloo   (519)-885-1211 x3870