Making CS Fun

Originally presented at the CCSC-NW Small Colleges Conference 2001 as a Panel Discussion (Oct. 2001, Pacific Lutheran University, Tacoma, Washington)

Panel Members:
Katrin Becker, Chair
Department of Computer Science,
University of Calgary,
2400 University Drive NW
Calgary, Alberta Canada, T2N 1N4
email: beckerk@ucalgary.ca

Dr. Jerry Roth
Dept. Math and Computer Science
Gonzaga University MSC 2615
Spokane, WA 99258-2615
email: roth@cps.gonzaga.edu
Dr. Sharon M. Tuttle
Humbolt State University
Arcata, Calif. 95521-8299
email: st10@humboldt.edu

Dr. Steven R. Vegdahl
University of Portland,
School of Engineering
5000 N. Willamette Blvd.
Portland, OR 97203-5798
email: vegdahl@up.edu
Ron West
Umpqua Community College
Roseburg, Oregon 97470
email: westrm@rosenet.net

These pages are devoted to collecting ideas that instructors can use to make CS more fun for their students. It includes ideas for things to try in and out of class as well as collections of entertaining lists such as silly names, place names, tongue twisters and the like. Contributions welcome. If you are submitting an idea that came from someone other than you, please do them the courtesy of giving them credit. Thanks.

LISTS: for data, etc.

Choose your data set carefully for assignments and examples (see lists)

Use bogus names, interesting text, strange place names - Newfoundland Canada is a rich source of bizarre place names
Tongue twisters make good text samples
Excerpts of scripts from popular films or classic literature (like “Alice in Wonderland”, “The Matrix”, or “The Crow”)

IDEAS

Ideas provided by panel members (other than K.Becker) and ideas provided by others out there in the world are credited.

Binary:

<style float-left> </style> Counting in Binary on Your Fingers (watch out for the number 4!)

Performance Art:

'playing computer' to demonstrate low-level instruction execution

Teaching Recursion:

The Towers of Hanoi are an old favorite. Liven things up a little by using a real model: buy some pre-school stacking toys and use them to demonstrate (the more juvenile the better)(important note: the IKEA toy in the middle may be hard to find because of a recall - the ball on the top is a choking hazard - I'm assuming however, that that wouldn't be an issue for most College students)

Performance

[Source: Dr. Steven R. Vegdahl ] Using a ball to illustrate the semantics of “throw” and “catch” in Java.

[Source: Dr. Steven R. Vegdahl ] Singing the old song "I'm my own Grandpa" to illustrate what happens to tree traversals when cycles are inadvertently introduced.

Drill

[Source: Tim Rolfe, Eastern Washington University] Drill programs, with students called to the board randomly. Each student is assigned a card face value and color. Unassigned cards are covered by the instructor. The instructor shuffles the deck, has it cut by one of the students, and then goes through the deck one card at a time, choosing who will perform the next stage in the drill. The session can be kept light with running commentary — “Someone's getting an easy one here” or “Someone's going to have some fun on this one” — and also perhaps by allowing the student currently working to ask for help from the rest of the class.

Drill programs:

http://penguin.ewu.edu/class/cscd327/Spr-2001/Drill/index.html [Source: Tim Rolfe, Eastern Washington University] For the section on graph traversals, use a regionally-correct graph (here, a selection of eastern Washington towns plus a couple of towns in northern Idaho).

PowerPoint file and Word-97 file with the traversals:
http://penguin.ewu.edu/class/cscd327/Spr-2001/06/Graph/Travail.ppt
http://penguin.ewu.edu/class/cscd327/Spr-2001/06/Graph/TravSlides.doc

Web page on the graph algorithms: http://penguin.ewu.edu/class/cscd327/Spr-2001/06/Graph/index.html

Examine the occasional 'program perversion' E.g. executable programs that are almost completely unreadable by humans (i.e. using bad or misleading variable names; creative use of white space; try the Obfuscated 'C' Code site [ The International Obfuscated C Code Contest ] for some outstanding examples)

<style float-left> </style> <style float-right> </style> Place Clip Art on exams (Santa's or summer holiday clip art, etc.) Keep some toys in your office or place interesting and/or fun things to read outside your office. Award stickers for top marks on assignments or exams.

Hold back all the 'A' exams rather than returning them with the rest and make these students ask for them personally. This way you get to congratulate them personally.

Costumes at Halloween (for the midterm?)

Post a fun or thought-provoking quote to begin each class. (see Quotes)

Assignment Ideas

[Source: Dr. Steven R. Vegdahl ] Giving students an assignment to create a Java applet that draws their professor's face.

For an assignment that requires students to choose a scenario and set up a computer system; allow them to choose unusual scenarios:

  • a PC for a family with 15 children
  • a system for a “drug-lord” (security would probably big a big issue, but cost wouldn't)

CS 2: OO; Stacks (& queues?): Assignments implementing Solitaire Games:

Note: If you have trouble accessing these assignments (some are password protected), send me mail.

CS 1: 2-D arrays: Assignments implementing Games:

CS 2: Object inheritance: Assignments implementing Games:

File Formats; path-finding; searching: Make a path-finding robot program (if you are interested in this assignment, please send me email)

Try adding a Bonus or Challenge to your assignments. These are suggestions for ways that students can expand or improve on their assignments. Don't let plausibility get in your way here. The challenge category for my 1st year Asteroids assignment included making the program real-time, full colour; with sound; in 3D. I got one submission that did it all - in XWindows no less!

Out of Class

The Spare Time Programming Contest (with real prizes!)

This contest is open to all CS students and the problems are intended to be solvable by 1st year students as well as graduate students.

Write a quine (a program that takes no input, and whose only output is an exact copy of itself)
Write a program to output the 'lyrics' to the song “99 Bottles of Beer on the Wall”
Write a “program” to do metric conversion. You may not use any known programming language.
Write a program that either generates poetry or is itself poetry.

The William's Cup (in honour of Dr. Michael R. Williams, who's not even dead btw).

The trophy is made of one of his old melamine coffee cups, with coffee stains intact, mounted on a wooden base. It's awarded to the most entertaining assignment submission of the year - intentional or otherwise) The student's name is engraved on a metal plate and fixed on the trophy.

Have a “Silly Hat” day, or arrange for all students (in one of your colleague's classes) to wear a red shirt on the same day.

Organize a tournament of some sort between students and staff (Hallway-Golf maybe?)

  • tnl/make_cs_fun.txt
  • Last modified: 2012/03/29 06:45
  • by 127.0.0.1