Fundamentals of Computer Science I (CS151.01 2006F)

Project Report: Text Generation

Assigned: Wednesday, 4 October 2006
Due: Friday, 13 October 2006
No extensions!

This homework is also available in PDF.

Summary: Now that you've completed the laboratory experiences emphasizing text generation, we'd like you to extend the procedures you've written in that lab and then to describe your project in a form accessible to others.


Collaboration: You should work in groups of two or three. You may not work alone. You may not work in groups of four or more. You may discuss the assignment with anyone you wish. You may obtain help from anyone you wish, but you should clearly document that help.

Submitting Your Work: As always, you will submit your work via email, in this case with a subject of CSC151 Project One. For this assignment, you will be permitted to attach files to your email. Further details below.

Stage One: Generating Particular Types of Texts

In the first laboratory on text generation, you worked with and built procedures that construct simple, yet difficult to predict, sentences. In the second laboratory, you saw how to use some key Scheme techniques to vary the structure of these sentences and the components of the sentences.

Unfortunately, most of those sentences were not very interesting. Hence, we should find a way to generate a particular kind of text. For example, we might focus on the number of syllables in each word, and write a Haiku generator. We might consider both number of syllables and ending sounds to make simple rhymes. (In this case, it might be useful to randomly choose an ending sound.) We could even try to generate texts that sound a bit like Dr. Seuss.

Your first task in this report is to choose one of these simple types of writing (rhymes, Haiku, Seussian stories, personal advertisements, recommendation letters) and write a procedure that generates unpredictable versions of that types of writing.

In generating those texts, you will likely want to add another element to each of the lists in the parts-of-speech files (such as the number of syllabus, the ending sound, or something similar). You might also choose to customize the words files.

Stage Two: Writing the Report

For this assignment, in addition to writing code, you are also to write narrative text. In particular, you should write a 3-4 page narrative description of what you have accomplished in the project and how you have accomplished that goal. Your audience is other CSC151 students, but students who have not read the readings on text generation and who have not worked with the labs.

You should make sure that your narrative describes the key procedures you've written or used (both for your custom text generator and for the general text generation strategy) and how they work. Your narrative should be clear enough that someone could rewrite similar code (in, say, eight hours) without having any of the code as a reference.

I'd suggest organizing your report as follows:

Stage Three: Submission

Once you are satisfied with your code and your report, you should email them to me using a subject of CSC151 Project One. I expect to see the code as an attached .ss file and the report as an attached Word, PDF, or text file, whichever you prefer.

Questions and Answers

How long do you think this should take us?
I'd prefer that you spend no more than five or six hours on the project.
Can we acheive rhymes by, say, creating a file in which all the words end with the same sound?
Sure. For example, you might have a general nouns file and a more specific ee-nouns file with words like cookie, flea, and the ilk.
Can we acheive particular numbers of syllables by creating files of the same kinds of words with different numbers of syllables, such as noun1s, noun2s, and noun3s?



Monday, 2 October 2006 [Samuel A. Rebelsky]

Sunday, 8 October 2006 [Samuel A. Rebelsky]


Disclaimer: I usually create these pages on the fly, which means that I rarely proofread them and they may contain bad grammar and incorrect details. It also means that I tend to update them regularly (see the history for more details). Feel free to contact me with any suggestions for changes.

This document was generated by Siteweaver on Sun Oct 8 18:52:56 2006.
The source to the document was last modified on Sun Oct 8 18:52:43 2006.
This document may be found at

You may wish to validate this document's HTML ; Valid CSS! ; Creative Commons License

Samuel A. Rebelsky,

Copyright © 2006 Samuel A. Rebelsky. This work is licensed under a Creative Commons Attribution-NonCommercial 2.5 License. To view a copy of this license, visit or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.