CS314: The Musical

Background Information


Walter Chang

Walter Chang, with Emmanuel Schanzer

Prof. J. Gregory Morrisett, with Mr. Neal Glew

Table of Contents

Act I

Act II

Act I

Scene: Summer Days

[students are returning from summer vacation to swap stories and talk about classes for this semester]

[to the tune of: Summer Nights / Grease]

Summer Break time had me a blast

Summer intern happened so fast

I went to work, made some cash

Partied all break, had a bash

Summer days, drifting away, 'cause classes are starting today.

STUDENTS (half):
Tell me more, tell me more
What you did over break?

STUDENTS (other half):
Tell me more, tell me more
What classes you'll take

Last semester kicked some ass

Wonder who will teach this class?

Three fourteen? Well, I don't know

Let me know what it says so

Summer days, drifting away, 'cause classes are starting today.

STUDENTS (half):
Tell me more, tell me more
Do you know who will teach?

STUDENTS (other half):
Tell me more, tell me more
Is this course out of reach?

So, I'm looking here on the web
Do you know what the roster said?

Look at this! Can it be?

I don't believe this what I see

Summer days, drifting away, 'cause classes are starting today.

STUDENTS (half):
Tell me more, tell me more
What is the surprise?

STUDENTS (other half)
Tell me more, tell me more
Do you believe your own eyes?

It says here Greg will teach this class

A class with him will be a blast

Why do we wait? Get off our ass

Hurry up, let's get there real fast

Three fourteen, seems like a dream, when classes started today

[all students head off to class]

Scene: Lecture: The MIPS Instruction Set

[GREG is lecturing on the stage, NEAL stands off to the side, the remainder of the class is in the center looking on]

GREG (spoken):
Now, to write programs for the MIPS architecture, you need to know the instruction set. The actual one-word instructions consist of a six-bit opcode, allowing for a total of sixty-four unique instructions. If you compare it to, say, the x86 instruction set, it's quite small. Actually, it's small enough to be completely memorized in an one hour lecture. So, take good notes, because you will need to know this:

[to the tune of The Major-General's Song / Pirates of Penzance]

There's div and nor and mult and or and sllv, sra
There's xor and swl and beq and sll and bgezal jumps today
And multu, srav, and j combined with lhu and lui
And also slt and bne and instruction mthi
There's sh and sb and lbu and blez and jal and then sltu
And of course there's and and add and srl and sub and things to do
With the MIPS instructions I am very nimble on my feet
And though I sing assembler but I am really not a geek

There's addu, ori, slti, swr, and bgez and jalr too
And loads of other fun instructions that were put in just for you
The MIPS instruction set is very simple to be memorized
Which will come in handy when you have your code to optimize!

There's addi, divu, lh, rfe, and syscall, jr, mfcz
And mfc1, nop, and break, and bltzal with bczt
And srlv, xori, bltz, and lb, lwl, and addiu
andi, subu, lwr, and lwcz, mtcz, sltiu
There's bczf, bgtz to branch if it's greater than
And mflo and sw, these instructions are not any also-rans
There's mtlo and swcz too, although I don't know what they're for
And lw - that's obviously load word from mem bytes there are four

And now my song is through and I know all of my words by the heart
Which will come in handy when we have our projects multi-part
I live and breathe the MIPS instruction set on every night and day
Because the MIPS assembler will always try and work my way!

Scene: Lecture: Hexadecimal

[GREG and NEAL are in center stage, ready to lecture. Both have very fake French accents]

Ma chere cs major, it is with deepest pride and greatest pleasure that we teach you MIPS asm for ze project one.

And now we invite you to relax, settle in the seat and listen to the lecture, because you will be given your first project - in HEX!

[to the tune of Be Our Guest / Beauty and the Beast]

Think in hex, think in hex
Look around you, who needs dec?
You can do anything in base sixteen or I'll go to my rest!

In base sixteen I'm quite keen
I can express bytes lean and mean

With only two hex numbers
It's not easy to make blunders

Numbers zero through the nine,
In decimal that's just fine,

But we've also got our digits A through F!
You'll find it's great this way,
Don't take our hex away,
Think in hex, write in hex, we love hex!

Now again, in base ten,
There is no telling when
You will have to memorize two's powers - yes that's all of them
But in hex, it's a cinch,
You can calculate in a pinch
Just because we have ten digits doesn't mean base ten is with it.

Then again, most of them
Have got their fingers ten,

But real hackers don't count with their hands!
So we will laugh at you, those who cannot do
Think in hex, write in hex, we love hex!

Now in hex, it's so swell,
All those words we now can spell
This is one of those little things that decimal can't do well.
We've got BEEF that is DEAD
And BAD BABEs in our BEDs.

And ABBA takes a CAB, goes to Stockholm, sees her DAD.

We can FEED our FACE,
But not with DECAF, that's too base

And 'cause our hearing's EBBED we're going DEAF

And so we are glad
It's not just a FAD,
Think in hex, write in hex, we love hex!

We keep time, we can rhyme
We don't complain or whine
Because we're CS people we enjoy pain all the time!

Oh my god, my code is broken,
And my partner's outside smoking

We don't use an assembler
'Cause opcodes we remember

HLL's are for wimps,
They don't really make you think,

Which is why we write our programs all in hex!
It's more fun this way,
Because it takes all day,
Think in hex,
Take our tests,
See why we're better than all the rest,
Please say yes
To our hex
We love hex!

Scene: The English Major

[Two CS students are in a dorm room. The clock flashes 3:30 in the morning. One of the students is pacing, mumbling to himself with a worried expression on his face. The other, seated at the computer, is staring at the errors messages as they scroll down his monitor. The seated student suddenly smashes his head on the keyboard with a loud *thunk*. Snoring follows.]

[The door to the room opens, a drunken, thick-boned student stumbles in, wearing only black velvet. It is the ENGLISH MAJOR.]

Hey guys, what are you doing working at 3:30 on a Saturday night?

Mumblefumblegrumble...compiler-shimler biler...

ENGLISH MAJOR (raising a bottle of wine to his lips):
COME AND PARTY! There's no reason to work! Classes are easy!

[SLEEPING CS MAJOR wakes up, throws P&H book at English major.]

Get out of here... we're only one third done with this problem set, and it's due tomorrow afternoon! And, following that, we have a prelim!

[PACING CS MAJOR continue to mumble]

Ha! You guys must be stupid... I'm taking 5 English classes, and I do no work at all!

[ENGLISH MAJOR pulls out grapes and eats them]


Can you believe that?

He's been partying since WEDNESDAY OF LAST WEEK! He has it so easy!

[PACING CS MAJOR pulls guitar out of closet, strums it firmly]

[to the tune of Pinball Wizard / The Who's Tommy]

It was 3am this morning, the room across the hall
I was up late and debugging, my code would always stall
But I looked across the hallway, I couldn't believe his gall
That damned English major sure doesn't work at all!

He reads his plays and poems, his Buck and Silverstein
He hasn't worked till morning since he was seventeen
Plays with himself all evening, buys pornographic dolls

That damned English major sure doesn't work at all!

He's an English major, there has to be a twist,
That English major's only stress involves his wrist
He says he takes 20 credits. That's bullshit
I'm dying with 18

If he took CS classes, you know he'd be in hell
Don't learn no topics slowly, don't wait for things to "gel"
Thirty hour projects, and we fail 'em all
That damned English major sure doesn't work at all!

I bust my ass so I can get a job
He sleeps till noon, that worthless f---ing slob.

While I code until my hands bleed, he just takes a rest
Drinks grenadine and gin, while I go fail a test
But after graduation, we'll nail him to the wall
That damned English major sure doesn't work at all!

Scene: Coding in MIPS Assembler

[PACING CS MAJOR walks home over the suspension bridge to North Campus.]

Wow, I'm sooo tired. I'm going to fall right asleep. But goodness, assembly code offers so much control, so much POWER!

[CS MAJOR trudges up stairs to his dorm room]

I can barely lift my legs, I'm so tired. Hmm... there are some funky that could be played if I just bitmask in the right way... mmm... this would be so fast... so optimized! So... beautiful... she's... so... beautiful... I think I'm in love

[CS MAJOR climbs under covers, and tries to sleep. He tosses and turns, unable to rest.]

Shift left by 2... ori $3, $2, 0x1F...

[CS MAJOR leaps out of bed, rose clenched in teeth. A Latin beat starts.

[to the tune of Living La Vida Loca / Ricky Martin]

Her code is so efficient
Her programs never crawl
She's on a debugging mission
That girl's code is off the wall
(guitar solo)
This is her occupation:
Make code run fast and light
She brings a strange affliction:
Coding into the night!
She'll make you code, then re-fine.
Mem'ry dancing brings you pain
She'll change reg-ister 29
Her tricks are so insane!
Like crack-rock in the brain!

Shift right then shift back
She's coding in MIPS assembler
She'll push and pop the stack
She's coding in MIPS assembler
She'll branch if greater than
Increment the program counter
Load im-med-i-ate
She's coding in MIPS assembler
Coding in MIPS assembler

Woke up and went to my class
smelling funky and like hell.
Debugged till 6am, it's not funny
She's like a process that you can't kill.

She don't believe in easy
Never comments any code
And when you trace a register
Can't tell from where it loads
Not enough addressing modes!

Shift right then shift back
She's coding in MIPS assembler
She'll push and pop the stack
She's coding in MIPS assembler
She'll branch if greater than
Increment the program counter
Load im-med-i-ate
She's coding in MIPS assembler
Coding in MIPS assembler
(guitar solo)
But you will learn to love her:
Take abuse and not complain.
Store registers defensively,
Debugging code for fame,
All high-level stuff is lame!

Shift right then shift back
She's coding in MIPS assembler
She'll push and pop the stack
She's coding in MIPS assembler
She'll branch if greater than
Increment the program counter
Load im-med-i-ate
She's coding in MIPS assembler
Coding in MIPS assembler
Coding in MIPS assembler

Scene: Dear Kindly Newsgroup Posters...

[STUDENT is frantically looking around for help. He starts first in NEAL's office]

[to the tune of: Gee, Officer Krupke / West Side Story]

Dear kindly Mr. Glew
My program's all messed up
My registers got clobbered
My stack frame just blew up
The project's due tomorrow
I don't know what to do
Holy Jesus, help me Mr. Glew!

Gee, my little student, some trouble you've got
Finish it in three hours? Well, I just think not
That's why you start early,
So you can get done.
But now you've just failed project one!

He's not done, he's not done, no way he'll be done
He's got three hours to get done

NEAL (spoken):
If you can finish the project in only three hours, I'll buy you a steak dinner.

STUDENT (spoken):
What am I going to do with a steak dinner when I'm worrying about this project?

NEAL (spoken):
Ask Greg, see what he has to say.

GREG (spoken):

[in GREG's office]

Please kindly Dr. Greg
I know that you like cows
I need to learn assembler
I just am not sure how
Neal has made an offer
If I finish I get steak
Let's hope my code's not full of mistakes!

Well, my little hacker, you've just done me wrong
My cows - they are my people - and may they live long
You can't just flambe them
And eat them for lunch
Cows - they are not for us to munch!

Let's eat lunch, let's eat lunch, let's all munch on lunch
Let's all have some burgers for our lunch!

GREG (spoken):
I hope you're working with a partner on the project. It could take some time.

STUDENT (spoken):
But who is familiar with assembler?

GREG (spoken):
You might want to ask Dan Dickinson, he does stuff with emulators.

[in DAN's room on West Campus]

Please emulator Dan
You gotta help me out
I've only got three hours
I'm about to shout!
You dig this emulation
What does it all mean?
I'm not getting output on my screen!

Well, sorry, my comrade, I can't help you here
It's not that I don't like you, I just have a busy year
Although emulation
Can be lots of fun
They will not help your project run!

Will not run, will not run, his code will not run
Try as he might his code will not run

DAN (spoken):
You might want to ask Emmanuel, he and Walter have designs on the hot314 simulator and CP/M.

STUDENT (spoken):
I'll ask.

[in EMMANUEL's room, Risley Hall]

EMMANUEL (spoken):
Well, well.

Dear kindly Mr. Schanzer
Your wireframe renders fast
I need help with my program
I need help in this class
You like to optimize things
Your code is very tight
Help me, homework's coming due tonight!

Well, I learned assembler, it's really not bad
Although our java software is making me mad
It doesn't print errors
It isn't worth crap
I think I'm going to take a nap.

It is crap, it is crap, hot314 is crap
Like all java code it's slow as crap

EMMANUEL (spoken):
Maybe you should ask Walter, he has much painful x86 experience that is now largely repressed as post-traumatic stress disorder.

STUDENT (spoken):
Ok... but I'm getting desperate.

[in WALTER's room, West Campus, Baker Tower]

WALTER (spoken, mumbling):
Yeah... West Side Story! I need to parody Bernstein!

Please crazy Walter Chang
The bard of Upson Hall
You have way too much free time
While I'm up against the wall
Your musicals are crazy
You program while you're drunk
Help me, please, I don't want to flunk!

Now, there, take it easy, it isn't so hard
A little bit of vodka will make a good start
Trouble's in typing
When you can't see keys
But I've got songs to write now, if you please.

Press some keys, press some keys, press the any key
If the program crashes press random keys.

STUDENT (spoken):
Now I've only got two hours left!

WALTER (spoken):
Have you asked Jeff Vinocur? He's a pretty smart guy.

[STUDENT heads down to other section of Baker Tower, to find JEFF]

Please help me out here Jeff
I like your marching band
You read a thousand newsgroups
I know that you're the man
I read all your postings
I always look up to you
Please now, tell me what I have to do!

I see now you've posted, decided to unlurk
But sucking up to me isn't going to work.
You'd better get started
There's one hour left
(Now I'll go back to my treble clef!)

Treble clef, treble clef, what's a treble clef?
Tell us Jeff, what's a treble clef?

JEFF (spoken):
Well, in music, it's a symbol that denotes...

STUDENT (spoken):
I don't have time, who should I see?

JEFF (spoken):
Go see Brandon, maybe he can help.

STUDENT (spoken):
Right, I'm off!

[STUDENT on a plane to Microsoft at Redmond, WA]

Please kindly Brandon Bray
I've got two hours left
No one here will help me
Of ideas I'm all bereft
I flew out to Seattle
And thanks to time zone change
Right now, buys me half another day!

Well, I'm glad now to see you
Way out here this way
But I cannot tell you much
I'm under NDA
So here's your plane ticket
You'd best hurry back
Go home, boot up, and begin to hack!

Start to hack, start to hack, he has to start to hack
He's got just two hours left to hack!

Ok, now I'm getting really desperate! Who haven't I seen?

[in FALKOV's room, Risley Hall]

Please help me Danny Falkov
Visual Basic man
I'm not done with my project
My grade is in the can
What good is Visual Basic?
Can it compile to MIPS?
Golly Moses, I'm just such a dip!

Visual Basic is all you will need
Hacking in a real language makes your nose bleed
It's easy to use
And hard to screw up
Unlike our emacs, which just sucks!

Emacs sucks, emacs sucks, emacs really sucks
Control and Meta they do suck

ELI (spoken):
[curses in Hebrew] I heard that! Emacs does not suck! Take any text processing task, and any application, and I can show you how emacs can do it faster and better...

STUDENT (spoken):
Only a half hour left... and I haven't even started!

ELI (spoken):
... just look at any development system. What other programmable text editor gives you the capability to...

STUDENT (spoken):
Hmmm... Hubert is on this group a lot. Maybe he can help.

[in Mennen lounge, with Hubert]

Please help me with my project
Kindly Hubert Chao
I haven't even started
Because I don't know how
It's due in fifteen minutes
At the UG lab
Damn it, this just make me very mad!

Too late to work now, to finish on time
And it looks like dear old Walter's running out of his rhymes
If this were 280,
I might help you through
But now it looks like you are screwed!

He is screwed, he is screwed, up the ass he's screwed
He just got himself so thoroughly screwed!

The trouble is he's lazy

The trouble is he's mad

The trouble's he's NOT crazy

The trouble is he's bad

The trouble's not using VB

The trouble is it's slow

Look here, we've got troubles of our own!

If you wanna get started
To work on it now
It's much too late to finish it, I just don't see how
If you always work hard, and know what to do,
Well then, lazy slacker, screw you!

Scene: Project 1: Assembler

[WALTER and EMMANUEL are standing in front of a computer with long assembly language listings on the screen. The projector in the background slowly scrolls the source code as the song goes on, with a billowing Cornell flag in the background. WALTER and EMMANUEL place their hands over their hearts and stand to attention]

[to the tune of: America the Beautiful / Katherine Lee Bates]

To compress a twenty four bit
pixel into sixteen
We used three registers as temp
And drank a bottle clean!
Assembler, Assembler!
God shed his grace on thee
And crown thy good with brotherhood
We wish we'd code in C!

From $4 we read, to $5 we write
our pixel when complete!
In $6 we store our end address
For comparisons sweet!
Assembler, Assembler!
God mend thine every flaw,
With careful, precise stack control,
We'll type our fingers raw!

To calculate register six
we shift left by just two
One word per element for kicks
And now we'll start the loop!
Assembler, Assembler!
May God thy gold refine
Till offsetting by an address
Is ingrained in our minds!

Compare $4 with our end address
Branch if equivalent
If not, then $4 has failed the test
Load the next pixel in!
Assembler, Assembler!
Bestow thy grace on me.
And crown thy good with brotherhood
Maybe we don't need C!

Shift right: chop garbage blues from $8
Shift right again and store,
And by 1F to filter straight
What's not blue we ignore!
Assembler, Assembler!
God shed his grace on thee
Till souls wax fair as earth and air
Which registers are free?

Shift $9 by seven right and store
The red bits into $10
Filter by three-E-zero, $9
Shift $10 left A and then....
Assembler, Assembler!
God shed his grace on thee!
Till paths be wrought through
wilds of thought
By hacker foot and knee

Or $9 and $10 (that's red and green)
Then or them with our blue
Now $8 contains only 16
We store our pixel new!
Assembler, Assembler!
God shed his grace on thee
Till mem'ry hits no longer bring
Instruction latency!

Add to $5 sixteen bits: that's two
To $4 add a whole word
Jump back and we shall start anew
We're done and have you heard...
Assembler! Assembler!
God shed his grace on thee
Till nobler men keep once again
We'll never code in C!

Scene: Lecture: Digital Logic

[GREG is again lecturing from center, Phillips 101]

So, how did everyone like project 1?

[muffled laughter]

Well, project 2 involves, I believe, designing a simple digital clock. To do that, we need to consider the physical representation of various components. Obviously, we need to represent zeros and ones using voltage, say, 5 volts for 1 and 0 volts for 0. We can construct simple gates like NAND and NOR and build other components from that. So, we have here...

[GREG looks around for his pointer and cannot find it. He spies the umbrella in the corner and grabs it. He continues to lecture]

ah yes, we need to abstract the physical representation, consisting of transistors, grounds, voltages, and that, into the logical gates.

[to the tune of: A Spoonful of Sugar / Mary Poppins]

To get all our programs to run
There must be compilation done
Into ones and zer-os:
Seems rather tame.

But how do ones and zeros make
Our hardware bump and shake?
Trans-..is-..tor.. gates!
It won't be hard to see.

We Use...
Digital logic: inputs, switches...and grounds.
inputs, switches...and grounds.
inputs, switches...and grounds.
Just by abstracting voltage, into zer-o's and ones.
We can hack all night and day.

In simplicity we'll rate,
The effectiveness of gates
Bits of silicon
Form nand and nor

Half-adders are not trivia:
A and not B or vice versa
That answer's it
And we keep the carry bit

We Use...
Digital logic: inputs, switches...and grounds.
inputs, switches...and grounds.
inputs, switches...and grounds.
Just by abstracting voltage, into zer-o's and ones.
We can hack all night and day.

From the bus that fetches data
From the cache into the chip
The system clock keeps things working without a blip
Because every gate that does flip
Does so at a rapid clip
And hence
And hence
It's fun
It's fun
All our programs run.

Scene: Lecture: Intro to Project 2

[In Phillips 101. GREG and NEAL will now inflict Project 2 on the students.]

So, in Project 2 you will be building a clock - a digital calendar with flip flops to store a day, month and year. When running in normal mode, the days will increment on each clock edge. There is a setcal line as well, so when the user wants to set the day, month, or year, each tick of setcal will increment the appropriate counter and no others.

So, the digital circuit I showed you last time in class counts up to 12 hours and loops back. Your project will be similar, so you might want to start with that.

It's really quite simple - everybody should get this. So:

[to the tune of: Rock Around the Clock / Bill Haley and the Comets]

One, two, three o'clock, four o'clock, rock!
Five, six, seven o'clock, eight o'clock rock!
Nine, A, B o'clock, C o'clock rock!
We're going to rock - build a clock tonight!

Clock turns on, day starts one
Setcal's off, just let it run!
We're gonna rock and build a clock tonight
We're gonna clock that clock till it's alright
Put some thought, then I got to build a clock tonight

Day counts up, to hex 1C
Then month goes up accordingly
We're gonna rock and build a clock tonight
We're gonna clock that clock till it's alright
Put some thought, then I got to build a clock tonight

Month counts up, to December
Change the year so we'll remember
We're gonna rock and build a clock tonight
We're gonna clock that clock till it's alright
Put some thought, then I got to build a clock tonight

Setcal's on, have some fun
A tick each time will add to one
We're gonna rock and build a clock tonight
We're gonna clock that clock till it's alright
Put some thought, then I got to build a clock tonight

Lecture's through, Project Two
Hand them in to me, Neal Glew
We're gonna rock and build a clock tonight
We're gonna clock that clock till it's alright
Put some thought, then I got to build a clock tonight

Scene: Project 2

[in WALTER's room, Baker Tower, finishing up Project 2]

God, I love this! Our design is BEAUTIFUL. There it is, gleaming in fiendish brilliance... screw gated clock inputs!

Word. So, we're pretty much done. Just that write-up to do.

We have to do a write-up? That sucks...

Well, let's see, how bad can it get?

Let's find out. But first, more vodka [takes a shot]

[to the tune of: One Week / Barenaked Ladies]

It took four shots and some Triple Boch
To make a calendar that runs on only one clock.
Flip-flops used to store the date, and then
Read lines cycle to remember the state.
Three sets of counters to track
The years, months and days, with logic to loop back.
Increments are halted by blocks,
And all the tricky stuff sits in the magic box.
Clock ticks 1: Day's incremented
It's so demented.
The value's read into the magic box.
The next bit's clock is current's not
Although the current bit's next slot
Is opposite what it is now. Binary logic rocks!
Day overflows, to month we carry.
But we be wary,
Cause if we're setting day we block this.
If not, month ticks one forward
And we don't store-word, this is silicon
Not assembler.
We all get our kicks: macros are bricks
Except we all hate Xilinx
Its bad programmers should be cut with crusty razors.
WIN16 apps blow, and we all know
To Neal and Greg you know we'll show
A working cpu
Or we'll get shocked by tazers.
When a counter is reset the next one increments,
Now I present to you, Ladies and Gents
Our reset logic is compact and quite chill
Wanna know how it works?
Well, you soon will.
If the day's 32 resetting is a safe bet
Short months with 31's are also resets
If it's leap year and February,
Feb 30th is wrong: we reset and carry
One less for a normal year
(We figured this all out when drinking lots of beer.)
It's an AND gate for each condition
When we OR 'em all together we're done with our mission.
Any date gets read right inside
And the magic box determines if the loop flag is high
Couldn't be finer, the plot it thickens,
Counters don't care if the clock is tickin'
Tough simulation causes a fuss,
We're asynchronous
We hope the graders won't impale us.
The next question is how to mode set
Carries to suppress
And which counters clock should pass-by?
Another macro handles the code
Decides what's the mode,
When setting anything the clock dies
And instead we set Cal Increment
Anytime it's set mode it goes and gets
The right counters and increments them casing for overflow
If mode is double-zero have no fear-o
'Cause our hero cuts off SetCal from the circuit
And only clock tick's a go.
Our reset logic is compact and quite chill
Wanna know how it works?
Well, you soon will.
If the day's 32 resetting is a safe bet
Short months with 31's are also resets
If it's leap year and February,
Feb 30th is wrong: we reset and carry
One less for a normal year
(We figured this all out when drinking lots of beer.)
It's an AND gate for each condition
When we OR 'em all together we're done with our mission.
Any date gets read right inside
And the magic box determines if the loop flag is high
And the magic box determines if the loop flag is high
And the magic box determines if the loop flag is high
Hard-wired logic sets alarm to high..

Act I Finale: La Vie CS

[EMMANUEL, ALEKSEY, WALTER, JEFF, BRIAN, DAN, FALKOV, BIG TALL SCARY MATT, and other CS geeks are present in EMMANUEL's room, abusing his computer(s) and generally behaving very geeky. The ENGLISH MAJOR walks in.]

[to the tune of: La Vie Boheme / RENT
Note: most of the scene from RENT is loosely reproduced here, from the start in the Life Cafe to the end of Act I, except for the dialogue between Benny and Mimi, and "I Should Tell You."]

Oy vey...

I would like to propose a toast
Now that your brains are fried
That's swell.

Go to hell.

Was the problem set stomped?

Walter, I'm surprised
A bright and fun writer like you
Hangs out with these hackers
Who don't know what do to.

They make fun - Yet I'm the one
Attempting to have a life
Or do you really want an education
Where people have to stay up every night?

Computer Sci, Computer Sci,
What's wrong with your head?
This is insanity
Your social life is dead.

Dearly beloved, we are gathered here to say our goodbyes...

ALEKSEY and EMMANUEL (background)
Pie Jesu domine [hits self over head with P&H book]
Dona eis requiem [hits self over head again, repeat]

Here it lies
Our lives on standby
Our brains by projects completely fried
While we're just a bunch of some crazy guys
Here in Cornell we are blessed
We raise our glass - You bet your ass to -
La vie CS

La vie CS
La vie CS
We love CS
We love CS

To times of inspiration
Playing Quake 2, making something
Out of nothing, the need
To program -
To communicate,
To exercising our brains
Going insane
Going mad

To doing recursion, any version
To doing data conversion
Interrupts get attention
Calling convention, and new inventions
Not to mention of course
Hacking all night and day

To getting new Macs
With the cute little fruit
To boot - to address absolutes

WALTER (interjecting):
To Absolut!

To C
To counting binary
To all the latest toys

To having some fun - for once
We love to hack

We love CS
We love CS

When is the equipment coming in?

Soon, Walter

This computer doesn't have a case
Don't give me that face

[enter DP DOUGH delivery guy]

So that's five calzones, four liters of Jolt, three cheese Danish, two mozzarella sticks, and one really huge check. And fifteen paper cups. Is that it here?

Wine and beer!

[exit DP DOUGH]

To fast little Macintoshes running with G3's
To Linux, to Unix, to telnet, VNC
To hacking, to writing, to coding assembly
To subnets, to routers, to IP's that are free

To show tunes, and lab rooms, to writing things in Scheme
Atari, to Sega

To emulating Bleem!

To PC's, to Palm III, to software that is new

To fractals

To practical

To death screens that are blue!

Turing, Neumann, Kerninghan and Ritchie

Larry Wall

Bill Gates

To compilers!

To TI!

To mem high!

Computers to buy, too

Why do we here hackers
We're not really slackers
Choose to do comp sci?

We love comp sci!

To compilers, decompilers, Perl and Larry Wall
To alcohol, function calls, falls
In lecture halls
C++, and data bus, features must
To binary, Henessey, Patterson
Computer organization!

PowerPC, to hacking C, to VPC, VNC
Alonzo Church - Lambda calculus, computability
To no shame - to always playing RPG games

To marijuana!

Now finally
This major's just for me

Chains and whips!

We hack in MIPS!

You guys are just getting too scary...


WALTER (spoken):
In honor of all things geeky an all-night hacking session will immediately commence following the calzones... Jeffrey Vinocur, using only an Apple G3, will VNC into his Linux box and then to his desktop Mac, to run VPC and telnet back into Linux to run ASCII Quake.

EMMANUEL (spoken):
While Walter Chang will model the latest fashion trends in duct tape clothing, featuring an all new casual menswear line by the master of fashion himself.

ALEKSEY (spoken):
As Danny Falkov demos Win2k and tries to prove to the world that he does in fact know what he's talking about.

And you should see
All these comp sci majors
And hacking into things with their PC's
The English Major called the cops

That fuck

They don't know what they're doing
The cops are saying we're too loud
But no one's quieting
We're all sitting here, mooing!

[large Holstein cow bolts across stage for no apparent reason]


It's a way to make a living

Masochism, pain, sadism, riding crops, bondage lady, Mistress Xilinx, always crashes


Musicals, insanity, crazy family, shot on location
Songwriting, perfect programs, Scheme
Talk, Turing complete, and fun!


Computation, CS theory, mathematics, proxy server
Logic, designing, gates, pipelining, and heavy competition


Revolution, justice, looking for solutions
Veganism, 3 act plays
Making noise and doing well!

To hackers, emacs, vi, professors too

To me!

To me!

To me!

To you, and you and you, you and you
To people coding with, hacking with, living with
And playing with PC's

Let he among us without a brain
Be dumb enough to condemn

La vie CS
We love CS
We love CS

[repeat in background as ALEKSEY speaks]

Anyone out of the mainstream?
What good is the mainstream?
Computers are alive - with 10 gig hard drives
Write up some code
Addressing modes
And what do we all love to study?

We love CS

[much frolicking and geekery]

Viva la vie CS!

Act II

Scene: Lecture: Intro to Project 3

[In Phillips 101. Not content with having inflicted Xilinx upon the students in Project 2, GREG launches the mother of all projects on the class - the MIPS CPU]

[to the tune of King Herod's Song / Jesus Christ Superstar]

Now you must be overjoyed to have finished project two
Now I'm going to show you what you have to do
Build a pipelined CPU to run
And I will know that you will find this project lots of fun

So, let's start the fun, yes, begin the phase 1
Show to me an ALU - let us see what you can do
You do that for me to start project three
A pipelined MIPS CPU

And when that's done and finished up phase two will yours
Pipeline stages all around, latches and much more
Oh, I'm waiting, to see your datapath
Your write up and your logic and control signal math

So, now you will do, oh yes, it's phase two
Show to me a datapath - built efficient so I won't laugh
That's all you need do, and you're done with phase two
A pipelined MIPS CPU

And when that's done you'll be ready to start on phase three
Control and data hazards all around you'll see
Mem and write-back, flush the data cache
I just know your extra credit's going to be a smash!

So, now, from you to me, you'll give me phase three
Write-back data forward along - you can do it in a song
Then demo for me, and you're done with phase three
A pipelined MIPS CPU

Hey, aren't you scared of me, class? CS three fourteen class?
Just you wait for the workload! Your free time will then explode!
So, wipe off that smirk, and get down to work
A pipelined MIPS CPU!

Scene: Tango 314

[In the Computer Science Undergraduate Lab, Upson Hall, DAN and HUBERT are finishing up their project , cursing loudly at the software.]


Hubert, Dan, how is the project coming?

Not good. Xilinx sucks.

Oy... I know what you mean. Using Xilinx has been a real bondage and discipline experience.

We must have spent 80% of our time just screaming at the software and only 20% doing actual thinking.

Tell me about it... let me know if you have any more luck.

Yeah, right, will do.


[HUBERT and DAN simulate the circuit, and find that it does not work when it worked only a few minutes ago]

[to the tune of: Tango: Maureen / RENT]

This is weird

It's weird

Very weird

Fuckin' weird
I'm so mad that I don't know what to do

Locked up here in the lab
And Xilinx makes me mad
NT crashed and the screen just turned blue

I think I'm going insane
I'm in serious pain
Just tie me up and make me scream

I am failing this class

Xilinx can kiss my ass

Ah yes, the Tango 314

[enter MISTRESS XILINX, in full leather bondage gear with the Xilinx logo on her black form fitting outfit]

The Tango 314 [cracks whip]
Watch me delete half of your files
As you stay up all night
Your schematic won't work right
And you scream and you cry but you just won't get by
Then you'll cry as my whip cracks down [cracks whip]

I think I'm going to scream

The Tango 314!

Have you ever hooked up a pin
That got disconnected?
Has a bus line ever gone flat
And was unexpected?
Have I ever refused to load up your work
Just to spite you?
Has the simulator ever gone wrong
Just to smite you?

[piano solo]

[while the piano plays, MISTRESS XILINX ties up and handcuffs various students in the lab to their computers]

It crashed!

Xilinx crashed!

We got bashed!

Work got smashed!

We're defeated
We should submit right now

Our spirits are shattered
Our souls battered

She's still my mistress somehow

We're all bound and gagged
Macro hit a snag
And I've got bags under my eyes

So I think this is swell
Mistress Xilinx is Hell

At least I've tried it at all

The Tango 314
I will dominate your little minds
You can try to escape me [someone tries to break free]
But I'll dominate thee [she kicks him with her boot]
But in the end you will come
When I whip up your bum
Till you're dumb and you're numb and give in

Why is our mistress so mean

'Cause she likes to hear screams

The Tango 314!

Scene: The Project 3 All Nighter

[in the Computer Science Undergraduate Lab, the night before the project is due. Everyone is there, pulling all nighters to get the work done. JEFF, WALTER, EMMANUEL, DAN are there, as well as the TA, VICTOR.]

[to the tune of: The Heat is On in Saigon / Miss Saigon]

GREG (spoken):
Allez, allez, everyone - welcome to - CSUG!

The stress is on in Upson
The work is harder than hell
Some of these computers just won't turn on
God, the tension is high
I hope I'll do well!

The stress is on in Upson
The projects are long
Bedtime? I know I can't tell

How are you doing there, E?

I can't wait for the phase three
We should get drunk and then hack
The deadline is near

I tell you, Xilinx, I've had it -
I don't want to hear

The stress is on in Upson
But till the work here is done
I'm gonna stay up and work

You can get me a beer

See my printout, it's just the right size
Virtual wiring is good for the eyes
If only Xilinx won't give a surprise

I'll show you, my printout's A4
Extra credit, I'll do more
So I'll bump up my score

The stress is on in Upson
Don't tell me Xilinx won't run
All that fucking shit sucks
Staying here ain't no fun
Not to mention I'm fucked!

[a student shows VICTOR his circuit schematic]

If this is your circuit, you won't pass this class
You'll just get it shoved right back up your ass
You'd better get started, and work real fast
And time's up, you've got to submit by three

GREG (interjecting):
Expect more homework from me
For this here project three

The stress is on in Upson
Why can't I just play with swords
We should have left long ago
What here is going wrong?
You tell me, I don't know

It's three fourteen, middle of the night
And gradually I'll be losing my sight
Pull an all-nighter? Well, I just might!
But I know... I'll finish project three
Whatever it takes from me

GREG (interjecting):
Or else you might just get a C

Now Greg is tightening the noose
Is it a week or a day or an hour we've got
Tonight could be our last shot
Got to put it to use

Tonight I bet that CS will get long
Forget about my sleep, forget the words to this song
IFETCH, OPFETCH, write-back along
Gonna stay up all night
And stress in Upson

Mem stage... write back... hazards... branch... delay slot
Attention, all the class!
At your own request
We give you the best
Xilinx 2 in Upson!

The stress is on in Upson
And things are not going well
But still by sunrise the party goes on
A all-nighter born in hell!

Scene: Prelim 2

[GREG watches all the students enter. WALTER is dressed in a tuxedo made entirely out of duct tape, carrying a bottle of vodka, EMMANUEL is dressed as, well, EMMANUEL, and there is much nervous anticipation in the air. GREG greets the students as they walk in]

[to the tune of: Master of the House / Les Miserables]

Welcome, students, sit yourselves down
And meet the best instructor in town
As for the rest, all of them profs
Come take the test and points I'll take off
Seldom do you see
Wicked profs like me
A regular old gent
Who's content to be -

Teacher of the course
Maker of the tests
I'll keep you busy and you'll get no rest
Make a state machine
Draw me a graph
I see your answers, then I start to laugh
Don't expect me any favors
Don't expect me to be nice
Wrong answers get you nothing
I won't even think twice

Teacher of the course
Keeper of the zoo
[pointing to EMMANUEL and WALTER]
Bastards in the front row there have gone cuckoo
Looking at your work
Giving you a grade
Looking at the processor that you guys made
Ev'rybody loves professor
Everybody's CS friend
I do whatever pleases
Jesus! I'll fail you in the end!

Teacher of the course
Quick to catch your bug
Gives a little smacking if you're feeling smug
Hardcore as can be
Xilinx simulates
Nothing's ever working, so ain't it great?
Everybody's favorite pastime
Everybody's source of stress

So write up your thesis
Jesus! Aren't I always just the best?

[the prelim begins. A lone student (preferably female with a young girl's voice, if you want to stay close to the original) starts to sing]

[to the tune of: Castle on a Cloud / Les Miserables]

Here is a prelim come from Hell
After a project; got no sleep
Look at the test and start to weep
I only hope that I'll do well

Here is a test that's got me screwed
My grade will be low with the points I'll lose
Everyone cries and looks so glum
Failing the prelim, one by one.

There is a teacher who likes cows
Tests me and fails me here and now
His lecture's fun
Cool stuff and such
So still, this class, I love it very much

I know a place where no one fails
I know a place where there's no stress
Where, you may ask, is this place? Well,
I know for sure it's not Cornell!

Scene: The Revelation

[the ENGLISH MAJOR is tossing and turning in bed, agonizing over the thought that his major will be worthless upon leaving college.]

ENGLISH MAJOR (mumbling):
Pointless... futile... nihilistic existence... dialectical materialism... what is the point of it all? Why am I doing this? Why do I not understand the way, the lambda the... the...

[he thinks about his friends, the CS majors]

[to the tune of Who Am I? / Les Miserables]

He makes binary trees
And can calculate chance
Connects circuits to grounds
BDSM romance...

Why should I be like him?
What am I doing wrong?
I am an English Major
And have been for so long

If I switch, I am condemned
If I stay English, I am damned

I am the envy of hundreds of students
They're jealous of me
I sit on my ass all day
They work till sunrise
While I read stories

If I switch, I am condemned
If I stay English, I am damned

Linux, Mac, Windows, and Be
All stir the geek inside of me
The hardware always obsolete
My machine never is complete
I went down to the campus store
And bought myself a Voodoo-4
And I'll play Quake until I die
At more frames than an SGI
Pop in an Ultra SCSI 2 and then
I'll never wait for apps to load again
My soul belongs to Microsoft
Like poor old Dmitri Falkov
A little sneak I've been all week
Coding late - and cannot speak
Who am I? Who am I?
I'm a CS Geek!

And so to English, hell with you!
Your bullshit and myself are through!

Who am I?
I'm a CS Geek!

[the stage is enveloped in a blinding light. As our eyes recover, we see the LADY OF THE LAMBDA emerge, a beautiful, angelic apparition. The ENGLISH MAJOR welcomes her with open arms and she takes him into her warmth and light]

Scene: Lady of the Lambda

[a STUDENT cries at the horror of Xilinx and remembers fondly the joys and happiness of CS212 and all the good times spent with the LADY OF THE LAMBDA]

[to the tune of: Wishing You Were Somehow Here Again / Phantom of the Opera]

You were once my true companion
You were all that mattered
You were once my light and guardian
Then my world was shattered

Wishing you were somehow here again
Wishing you were somehow near
Sometimes it seemed
If I just dreamed
Somehow you would be here

Wishing I could write Scheme code again
Hoping that I someday shall
But dreaming of you
Won't help me do
This Xilinx project hell!

Memory faults, schematic edit
Slow and temperamental
Seem, for me, inferior software
You were fun and gentle

Too many days
Crashed many ways
Why can't this shit just work?

Wishing you were somehow here again
Knowing that it all must end
Hardcore 212
Gosh, it was swell
Why does it have to end?

No more function calls
No more Tiny Scheme
No more of the Lambda, so it seems
I hate to say goodbye.

[the LADY OF THE LAMBDA emerges from the shadows and embraces the student. Fade out]

Scene: Mistress Xilinx Tango / Final Confrontation

[in the Computer Science Undergraduate Lab, CSUG. The scene is no longer the bright happy computer lab it once was, but a dark dungeon full of the cries of the damned. All around, CS majors are tied up and restrained with handcuffs, leather straps, ball gags, chains, spiked collars, leashes, and all the other trappings of bondage and discipline and sadomasochism. In center stage is Mistress Xilinx herself, the CS dominatrix, Master over all the Slaves in CSUG. She sings and taunts the students who, as a result of her evil work, have been unable to work on their projects]

[to the tune of The Masochism Tango / Tom Lehrer]

You can't finish up your homework
Because Mistress Xilinx won't work
I like to crash
Your work I will smash
As you dance to the Mistress Xilinx tango

Let your bus pins become disconnected
And simulate errors unexpected
Throw down a latch
And wires get detached
As you dance to the Mistress Xilinx tango

At my command
Before me here you stand
Your errors are so grand
It's me that you must see
And you entreat
And get down on your feet
To get the project beat
But you'll have to come through me!

My interface will torment you
Your Windows will crash and turn blue
Xilinx just died
Your work just got fried
As you dance to the Mistress Xilinx tango

I found your work
Backed up to the hard drive
As well as the net drive
I deleted them both
[reaches over and deletes files]

Noooo! [sobs]

And your CPU
Will stop to work, love
Yet another quirk, love
That I love to show.

You'll never finish any projects
I'll introduce bugs to break your logic
What once worked just fine
Won't work this time
As you dance to the Mistress Xilinx tango

Bash in your brain
I'll make you scream with pain
And whip you once again
And pull out all your hair
You know too well
In CSUG you will dwell
And you will start to smell
While you're strapped here in a chair!

Drag your project from it's folder
And watch me as it crashed the loader
Don't try to whine
Everyone here is mine!
Because they dance to the Mistress Xilinx tango!


I have seen the light! I realize now what I want to do with my life! I want to be... a CS Major!

Too late for that now, Mistress Xilinx has all of us in her vile clutches...

Not so! For I have brought with me... the Lady of the Lambda!


Not so fast, Mistress Xilinx. I have come to free my people.

[MISTRESS XILINX turns around. Music comes on - the Duel of the Fates by John Williams. The LADY OF THE LAMBDA draws out her sword. MISTRESS XILINX calmly pulls out her double ended dildo and glares menacingly. A long choreographed martial arts fight scene ensues.]

[Much evil power flows through MISTRESS XILINX. The fight seems to be even, but the LADY OF THE LAMBDA slowly loses ground. Finally, MISTRESS XILINX, fueled by the power of Bad Software, knocks the sword from the LADY OF THE LAMBDA's hand. She falls to the ground. MISTRESS XILINX points her dildo at her.]

Now, you too are mine. Bugs and crashes and general protection faults will descend upon the world!

STUDENT (shouting):
It's the Holy Sword of Barzilay!

[a spotlight shines upon a beautiful sword, with an ethereal glow and a hilt in the shape of a lambda. The LADY OF THE LAMBDA sees the sword and calls out to it. It flies into her hand. She then leaps up, somersaults over MISTRESS XILINX's head, and runs her through.]

Ouch... ouch... don't stop...

[MISTRESS XILINX has an orgasm and dies]

[the LADY OF THE LAMBDA proceeds to free all the students]

Scene: Final Lecture

[GREG prepares to address the class one last time before study week and finals]

[The GEEKS rise and present GREG a present in a box]

Of all the professors in all the world, you had to be mine. Maybe the pranks of a few merry geeks don't amount to a page block in this crazy world. But we'll always remember this course.

We'll always have CS314. It's a part of us, what keeps us going. If we took this course and you weren't teaching it, you'd regret it. Maybe not today, maybe not tomorrow, but soon... and for the rest of your life.

Say it again, Greg... say it for old time's sake.

[to the tune of: As Time Goes By / Casablanca]

You must remember this
A cache will sometimes miss
And Windows always dies
The basic theories still apply
As time goes by

And when you leave this class
Of you I'll only ask
No matter what your grade
Remember the MIPS you made
As time goes by

Logic and theory, never out of date
Caches and pipelines, made with simple gates
Chips will get fast, and compilers will be great
That no one can deny

It still is lots of fun
The code you write and run
The theorems you derive
No matter what the future brings
As time goes by.

[the entire class rises and applauds. There is much hugging and tears flowing.]

[a large black car pulls up. Two large men in dark suits pull HUBERT kicking and screaming out of the classroom. No one notices.]

Scene: Study Week

[in this scene, we cut rapidly between scenes of students working in front of various computers at various locations, running in and out of Upson, and all the other things that CS students do during Study Week]

[to the tune of It's the End of the World As We Know It / R.E.M.]

That's great, it starts with net Quake, files to make, an assembler, and Morrisett to teach today. N variable Karnaugh maps, logic circuits start to burn, simulator won't run, I start to look glum. Copy on a net drive, curse, no, crash, denied access retried, NT sucks me. Wire all are mired, representing logic gates, some software expired and a down website. State machine and prelim, eyes are blurry with the Xilinx saying GPF. Team by team students got baffled, stumped, weathered, stopped. Look at that cool waveform! Fine, then, uh oh, overflow, stack protection, pipelining, forwarding. Branch hazard, write hazard, instruction reorder, superscalar, more, more, carry with the look ahead runs faster and so? Right? Right! You narcoleptic, gone psychotic, hack, bright, daylight, feeling pretty psyched.

It's the end of the term as we know it
It's the end of the term as we know it
It's the end of the term as we know it, and I feel fine.

Six AM - up all night, screen never looked so bright. Hack and learn, return, simulate starts to burn. Lock the bus, cache snooping, block grouping, code working. Every prelim escalate, our grades incinerate. Draw a circuit, without a motive, oh no, oh no, watch your work crash, crushed, uh oh, this means too late, simulate, Xilinx ain't so great. A travesty, a travesty, a travesty of code. Offer me new versions, offer me the 2.0 and I don't know.

It's the end of the term as we know it
It's the end of the term as we know it
It's the end of the term as we know it, and I feel fine.

The other night was not all right, Xilinx won't run divide. Printouts sit in a line, prelim 2 is not so fine. Victor Tao, Panos, Ali S and Rob Cronin. CS party, Woodchuck, White Russian, bam! You alcoholic, gone psychotic, want to hack drunk, right? Right.

It's the end of the term as we know it
It's the end of the term as we know it
It's the end of the term as we know it, and I feel fine
(It's time I had some time alone)

Scene: Finale

[Entire cast - in the CSUG Lab. Students have finished the demos of their final projects and will never have to face the pain that was Xilinx again]

[to the tune of: Do You Hear the People Sing? / Les Miserables]

Do you hear the students sing?
Singing the song of happy men.
It is the music of a people who won't use Xilinx again
When the simulator runs
And the netlists all load fast
You can congratulate yourself 'cause you've passed this class!

Will you join us here today?
Will you be geeks and stand with me?
Here in the CSUG lab
There's fun things to code in Scheme
So join in the fight and the software you write shall be free!

Do you hear us CS geeks?
Hacking as we stay up all night
On our projects we have spent weeks
In the lab here late at night
Do you hear us CS geeks?
We're all as hardcore as can be
This major's not for the weak
As you have seen!

[students carrying flags and banners with the yin-yang and the lambda insignia march triumphantly onto the stage]

Do you hear us CS geeks?
Hacking as we stay up all night
On our projects we have spent weeks
In the lab here late at night
Do you hear us CS geeks?
We're all as hardcore as can be
This major's not for the weak
As you have seen!