CS212: The Musical

Introduction and Notes

This was posted towards the end of spring 1999 to cornell.class.cs212.talk. It contains a fair number of in-jokes, and wouldn't be all that funny if you didn't take Computer Science 212, Spring 1999 (Prof. Morrisett). So, by popular demand, here is the original post, with minor error corrections.

For those who don't remember (heretic! blasphemer! I shall zot thee!), the course instructor is Professor Greg Morrisett, Eli Barzilay is the senior TA and developer, and Brandon Bray and David Libben-Nowell are on the course staff.

The forward to the original post...

After this prelim (gosh, a mean of 67... jeez), I think we could all use a little humor and levity. You know, a musical comedy is just the thing for those occasions when you're down and out, to brighten the spirit and mood.

But what musical should we see? Granted, there are many fine musicals out there... but, you know, the Saga of CS 212 Spring 99 could make a pretty good story in it's own right. We've got an eclectic cast of characters, triumphs and failures, moments of joy and sadness, etc. all the things a good Broadway musical should have.

Allow me to present, then, CS 212 - The Musical. Just a first draft, so many scenes that ought to be included aren't written yet, but it's a skeleton to work on.

(Hey, if anyone actually wants to stage this - we could have many of the characters play themselves...)

Walter Chang
(who ought to be doing ps6 instead)
(who has way too much free time)
(hey, can I get points for this, or just your critical acclaim?)
----------------

DISCLAIMER: All characters and situations depicted within this work are more or less based on real characters and situations and are not to be construed as representing reality, but only a whimsical approximation thereof, yada, yada, yada... Any resemblance to persons living or dead is intentional or accidental, depending on how such a portrayal will affect the author's final grade.

And the musical, revision 1a...
Addendum integrated into script.

CS212: The Musical

Setting: Cornell University, Spring 1999.

[Overture]

The musical opens in the lecture hall, on the first day of classes, where bright-eyed, bushy-tailed prospective CS majors gather to hear the first words from the master...

Scene: First Lecture

GREG:
CS 212 is an introductory course covering a broad range...
...and this is the course staff: Eli, Brandon, ...

Are you ready?

[GREG and COURSE STAFF leap onto table and take off their shirts. Lights dim, overhead projector turns into disco ball]

tto: YMCA / Village People

COURSE STAFF:
Young Man, come in from the sun! I said,
Young Man, it's time to have fun!
You drink coffee, there's no need here for sleep,
You will do these problems and weep!

Young Man, have you got what it takes? I said,
Young Man, know how many programs you'll make?
Now, I'll ask you, are you slightly insane?
Do you really enjoy pain?

It's fun to stress out in CS 212!
It's fun to stress out in CS 212!
Where the problem set's long, the code doesn't work
And your head really starts to hurt!

[repeat ad nauseum]

Scene: Consulting Hours

[David, Brandon, and students]

DAVID:
Well, that's because everything you've been learning so far has been a lie. Believe the lie.

STUDENT:
So if it's all a lie, why do we keep on learning it?

DAVID:
Because I say so.

BRANDON:
It will help later on. Besides, it's fun.

tto: My Favorite Things / Sound of Music

DAVID and BRANDON:
Lambdas and closures and internal defines
Boxes and pointers and code that's refined
Set! and error and environment frames
These are a few of my favorite games

Set car and cdr and fun data typing
Defclass and defstruct macros save typing
unless and letrec and list ops galore
Are some of the things that Scheme is good for.

When the code breaks
When the thing runs
When it's late at night
I think of a few of my favorite things
And then I will see the light.

Scene: Section, 2:30-3:20pm

[Eli carries his evangelicism in schemeifying the world over to sections... Someone dares to ask him the forbidden question of "what is scheme good for?" He gets this strange look in his eyes and jumps on the table.]

tto: Man of La Mancha / Man of La Mancha

ELI:
Hear me now, O pitiful, user-friendly world
Thou are sick and debased as can be
When a programmer, writing up a veritable whirl
Of only Scheme code - that's me -

I am I, Don Eli, the lord of programmers
I will wipe out inelegant code
And the one known as Bill Gates can see what I think
And Scheme will be wherever I go

Whithsowherever I go
Onwards with Scheme I go!

[repeat]

Scene: Working on Problem Set

[STUDENTS in computer lab, working on problem set.]

tto: Seasons of Love / Rent

STUDENTS:
Five hundred twenty five thousand six hundred hours
Five hundred twenty five thousand lines of code
Five hundred twenty five thousand six hundred errors
How do you finish, finish a set?

In style points?
In functions?
In runtime?
In lengths of lines?
Extensions?
Additions?
Confusion?
Asymptotic time?
In five hundred twenty five thousand six hundred hours
How much code can you write?

How about bugs?
How about bugs?
How about bugs?

Count up the bugs
It's full of bugs
It's full of bugs
Count up the bugs

Scene: Working on Problem Set, elsewhere on campus

[A lone student sits in front of the computer, attempting to finish the problem set]

tto: Memory / Cats

STUDENT:
Midnight, I'm awake, and it's midnight
And I'm still not yet finished
And I'm quite far from through
In the screen glare the lines of code dance before my eyes
And then - I start to groan.

Projects, how I hate all these projects
They take too much of my time
Which is why I don't sleep
Now it's midnight, and my eyes hurt from the monitor glare
And I'm having too much "fun"

Messed up, tangled lines of code
In the wee hours of morning
Someone grumbles, at the code they've bumbled
'Cause soon the day will be dawning

Daylight, I'm awake, and it's sunrise
And I'm fresh out of coffee
Because I stayed up all night
Trying vainly, to get this problem set done
A sleepless day's begun...

The students, now on their third problem set, slave away at the code. As they hand in horrible-looking code with line lengths over 400 characters, the course staff goes ballistic. A confrontation was inevitable.

Scene: Handing in the Problem Set

tto: Look Down... / Les Miserables

STUDENTS:
Eval, eval, letrec and define
Begin, set!, defclass and apply.

STUDENT 1:
This program's long, it's hard as hell to read

STUDENTS:
Eval, eval, you type until you bleed.

ELI:
CU ID 324601, your time is up and the problem set's done.
You know what that means.

STUDENT 1:
Yes, it means I'm free.

ELI:
No. It means you get another problem set to do. This is CS -

STUDENT 1:
But I just finished it!

ELI:
You have another three!

STUDENT 1:
I thought that I was through...
We stayed up last night close to 5
And we were stressing

ELI:
You will stress again
Unless you learn the meaning of the code

STUDENT 1:
I know the meaning of those 19 hours
Awake, debugging code.

ELI:
Five points off for bad indents. The rest because your code won't run, 324601!

Scene: April 1, 1999

[GREG announces a pop quiz]

BEN:
That's no lecture, that's a pop quiz!

HAN:
Nah, it's too early for a pop quiz.

LUKE:
I've got a bad feeling about this...

HAN:
You know, you may be right... Chewie, get out my pencils!

LUKE:
Why aren't we doing anything?

HAN:
He's got us in a... wait a minute!

EVERYONE:
APRIL FOOL!

As the problem sets get more involved, and successive updates to Swindle keep breaking each other, forcing everyone to update their binaries, the course staff begins to come apart. Eli goes quite insane, obsessive in his quest to bring Scheme to it's rightful place as the greatest of programming languages...

Scene: Eli's Office

[3 am, the room is completely dark except for the light of a lone monitor. ELI is hunched over his computer in 4161 Upson, turned away from the audience, fingers flying across the keyboard, laughing maniacally]

[powerful chords from an offstage pipe organ plays the intro]

[ELI turns around. He is a horrifying sight - long hair, unshaven face, bloodshot eyes. Offstage - a scream]

tto: Phantom of the Opera / Phantom of the Opera

ELI:
Now Swindle's broken now
Some strange new bug
In these thousand lines of code
Just one new bug
And though you turn to me, for your update
Fix-ing all these bugs takes time
So sit and wait!

[more maniacal laughing, while playing scales]

[ELI calms down, sings rhapsodically]

"The Lambdas of the Night"
tto: Music of the Night / Phantom of the Opera

ELI:
Slowly, gently, Scheme code will surround you
let*, define, procedure pass-by-value
Functional features - whee!
You will not find them in C
Or in any other language of our time
Scheme is the language choice of mine!

Say I want to extend the language in my way
More powerful than any C #define
I've extended Scheme to OOP!
And all this work was done by me...

Scene: The Prelim

[During the prelim, the lecture hall was filled with the wailing and cries of the damned, for they now face judgment. The sound of mad scribbling on papers fills the air. Off in the corner, a student is curled up in the fetal position making little whimpering sounds. Another looks and the test and collapses. Yet another is lying down and hyperventilating. At stage center we see a student going through the prelim with a resigned look.]

tto: On My Own/ Les Miserables

STUDENT:
On my own, pretending I really know this
All alone, my glaring lack of knowledge
It's prelims, I feel the stress around me
This test's full of topics I am sure I've never learned!

On this test are all these awful problems
All the things I didn't have time to study
Now I'm staring, and wondering how I should start this
Writing all these programs is starting to hurt my mind!

[orchestra begins crescendo]
But I know that's what I must (define ...)
Zardoz something, to return what you want
But I must check that the symbols that I bind
With set!, are in the right frame...
[orchestra crescendos]

I'll pass this, but every class I'm learning
About these things that I've been only dreaming
Like letrec, and this new Y operator
My head hurts and everywhere I see all lost faces

I'll pass this, I'll pass this
I'll pass this... at least, I hope so...

Interlude: Greg's Office

[Greg's office is a sparse throne room with a view overlooking the stars, in orbit around the forest moon of Endor. GREG is wearing a simple black hooded robe, hiding his gnarled, ancient figure. Eli is wearing a mask and cape.]

ELI:
A small group of students have finished the problem set. The Source is with them.

GREG:
Are you sure?

ELI:
I have felt them, Master.

GREG:
Strange that I have not. I am not sure we are entirely clear on this matter...

ELI:
I am certain, my master.

GREG:
Very well. Their fear of you will be their undoing. They will come to you, and then you will chase them before me.

ELI:
Yes, my master.

Scene: Problem Set 6 (Last problem set)

[After going through a whole semester of pain and suffering, many people have grown attached to their CS212 partners. In this scene, the partners (preferably male/female, but we can make do) pledge their undying devotion to survive the major together...]

tto: All I Ask of You / Phantom of the Opera

STUDENT 1:
No more talk of problems
Forget these failing grades
It'll work, nothing can stop you
We'll lead you and we'll guide you

Let Scheme be your freedom
Let functions solve your woes
Let let (which is a lambda)
(You can do everything with lambdas)

STUDENT 2:
Say you need me with you,
Here, beside you,
Let us finish this damned problem set
Say you'll work with me, now and always,
Promise me, that I'll always work with you
Partner, that's all I ask of you...

STUDENT 1:
Let this be our moment
Let this be our day
We're done
No one to try you
Your homework's far behind you.

STUDENT 2:
All I want is this major
And an easy A
Oh god, how I was mistaken
Forgotten and forsaken

STUDENT 1:
Then say you'll work with me every waking moment
Fill my head with computer sciences

STUDENT 2:
Say you'll live with me, on Coke and pizza
And late-night Chinese - I dig that too

TOGETHER:
Hack with me - that's all I ask of you...

Scene: Lecture Hall, song and dance number

[Main musical number: various STUDENTS frolic and dance in the lecture hall]

tto: We Didn't Start the Fire / Billy Joel

ALL:
Morrisett, Barzilay, problem set makes my day,
Dr Swindle, Tiny Scheme, all-night programming.
Higher order, logarithm, induction, blurry vision,
Side-effect, lists and chains, recurrence equations.
zardoz, Microsquishy, update your binaries.
Holy Grail, RSA, think this is going to take all day,
Auto-update, fix it soon, problems due this afternoon,
Four AM, Sunday night, kiss all my sleep goodbye!

We didn't start our homework
And now we're failing
And it's really shaming
We didn't start our homework
Now it's just great
We get to stay up late

Red Pen, Brandon Bray, hack all night, sleep all day,
Block tableau, auto-prove, awesome snowflake pics.
Insert sort, not so fine, verify-path in poly-time,
Public key, signature, functional programming.
Time stamp, n plus 1, deterministic automaton,
Grim Reaper, shrubbery, proving things inductively,
Final test, almost here, what have we learned all year?
After I finish this, think I'll major in English!

(chorus)

Having had so much fun and learning so much Computer Science through the semester, the students hate to leave. The course staff, too, having raised all these little hackers, now must watch them take flight...

Scene: Last Lecture

[GREG and COURSE STAFF look solemn. The STUDENTS have survived the semester and are ready to take the next step. GREG steps up to the podium and addresses his students for the last time.]

tto: Don't Cry for Me, Argentina / Evita

GREG:
It won't be easy; it's come at last.
When I try to explain how you did,
That you're still going to fail after all that you've done.

[shocked looks from faces of the STUDENTS]

You won't believe me -
All you will think is "what did I do?
I thought I did well on the test."
Know what? I'm kidding with you.

And now it's got to happen, the class is done.
Couldn't stay all your years in 212,
Making ducks with grenades and interpreters run.
It's time to leave me.
Time to move on and try everything new
Discrete Structures next fall
And also CS 314 too!

Don't cry for me, CS majors -
The truth is I will not fail you.
Though the tests get harder,
It won't be easy.
But if you work hard,
I'm sure you'll please me.

And as for the final, and as for grades
I've always enjoyed marking you down
Because it seemed to me sometimes they were all you desired

They are illusions
What's important is the stuff that you've learned
No mater what your GPA
Though I'm sure you'd all rather have A's

Don't cry for me, CS majors...

[STUDENTS pick up the chorus]

(chorus)

Am I out of time?
What else is there I can teach to you?
Just remember to study hard
As I know you will!

[STUDENTS go wild and clap and cheer. Much hugging and tears flowing]

Scene: CS212 Binge Party

[ELI is wearing a light tan trenchcoat. A light fog obscures much of the stage. EMMANUEL is wearing a sun hat and a dress (Risleyite!) WALTER is wearing the uniform of an Occupied France police officer. EMMANUEL asks about how to become a TA or a consultant next semester...]

ELI:
And after you leave this class, I want to continue to update Swindle. That'll make it even more official.

WALTER:
You think of everything, don't you, Eli?

ELI:
And I want Emmanuel for the course staff next year.

EMMANUEL:
But why my name, Eli?

ELI:
Because you're TA'ing the course next year.

EMMANUEL:
I don't understand. What I just said now -

ELI:
Just now you said a great many things. I'm going to do the thinking for both of us. Well, I haven't done much of it at all, but it all adds up to one thing: you're consulting for the course where you belong.

EMMANUEL:
But Eli - my grades...

ELI:
Look, do you have any idea of what you'd have to look forward to if you didn't? Nine chances out of ten I'd chase you across the campus right now, isn't that right, Walter?

WALTER:
I'm afraid Eli would do just that.

ELI:
Deep inside us we both know what you're going to major in. CS is a part of you, it's what keeps you going. If the next semester starts and you're not on the course staff, you'll regret it. Maybe not today, maybe not tomorrow, but soon, and for the rest of your life.

EMMANUEL:
But what about my grades?...

ELI:
Don't worry about your grades. They're shitty, yeah, you almost lost it. But you got it back on the final.

EMMANUEL:
And I almost became a theater major.

ELI:
And you may still will. But I've got a job to do too. Where I'm going, you might be able to follow. What I'm doing I want you to be a beta tester. Look, I'm no good at being noble, but it doesn't take much to see that the problems of a few hundred CS majors don't amount to a hill of beans in this crazy world. Someday you'll understand that. Now, now... here's looking at you, kid.

Scene: Finale

[Entire cast lines up. GREG takes center stage and addresses audience]

tto: The Ad-dressing of Cats / Cats

GREG:
Now you've heard about our class
And my opinion now is that
You should have learned a lot by now,
At least, in CS, anyhow.
You've learned enough to take the view
That CS is the major for you
You've seen us do our problem sets
And tried to find which algorithm's best
Our programs and coding style
Now what's your next CS class?

So first, your mind I'll now confuse
And make a schedule you can't refuse
So first, your mind I'll now confuse
And make a schedule you can't refuse

With classes, some say one rule is true
Take anything that you want to do
Myself, I can't quite hold with that
Because CS is not like that
But always bear in mind that you need familiarity
You learn, and taking your class,
Learn everything about this and that

Many programs you'll write and run
But the major's lots of fun
So this is this and that is that
Now choose your next CS class.