Computer Science Logo Style

Advanced Techniques

Computer Science Logo Style

Volume 2: Advanced Techniques

Brian Harvey

University of California, Berkeley

Below this short table of contents is an expanded table of contents including sections within each chapter. Click on the chapter name to jump down. You can also download the complete text of each chapter in PDF format for elegant printing, or browse the HTML version.

Note: These books are still in copyright, and in print. They are posted here for your personal use, not for resale or redistribution. Thanks!

View this page in Romanian courtesy of azoft.

Slovakian translation courtesy of Gasper Halipovich

About the projects

About this series

How to read this book.

Acknowledgments (HTML)

Reader and Writer

End of File

Case Sensitivity

Dribble Files

A Text Formatter

Page Geometry

The Program

Improving the Formatter

This project is an implementation in Logo of the often-needed utility program to find the changes between two versions of a file.

Program Overview

The File Information Block Abstract Data Type

Saving and Re-Reading Input Lines

Skipping Equal Lines

Comparing and Remembering Unequal Lines

Reporting a Difference

Program Listing

Quiz Program Revisited

Nonlocal Exit and Modularity

Nonlocal Output

Catching Errors

Ending It All

This project deals a simulated deck of cards and allows the user to play a game of solitaire. The program checks for legal moves and displays the board layout.

The User Interface

The Game of Solitaire

Running the Program

Program Structure

Initialization

Data Abstraction

Stacks

Program as Data

Multiple Branching

Further Explorations

Program Listing

Text and Define

and Automated Definition

A Single-Keystroke Program Generator

Procedure Cross-Reference Listings

This project is a first look at what it means to compile a program. It's simplified because it translates BASIC programs into Logo, rather than into machine language. But it introduces the ideas that will return in more realistic form in the third volume.

A Short Course in BASIC

Using the BASIC Translator

Overview of the Implementation

The Reader

The Parser

The Code Generator

The Runtime Library

Further Explorations

Program Listing

This program looks for patterns in a list. It can be used, for example, to recognize particular types of English sentences.

Reinventing Equalp for Lists

for Lists A Simple Pattern Matcher

Efficiency and Elegance

Logo's Evaluation of Inputs

Indirect Assignment

Defaults

Program as Data

Parsing Rules

Further Explorations

Program Listing

Naming Properties

Writing Property List Procedures in Logo

Property Lists Aren't Variables

How Language Designers Earn Their Pay

Fast Replacement

Defaults

An Example: Family Trees

This project uses the pattern matcher to carry out a conversation with the user, pretending to be a psychiatrist. It is a Logo version of a program originally written by Joseph Weizenbaum.

Eliza and Artificial Intelligence

Eliza's Linguistic Strategy

Stimulus-Response Psychology

Property Lists

Generated Symbols

Modification of List Structure

Linguistic Structure

Further Explorations

Program Listing

Recursion as Iteration

Numeric Iteration

Logo: an Extensible Language

No Perfect Control Structures

Iteration Over a List

Implementing Apply

Mapping

Mapping as a Metaphor

Other Higher Order functions

Mapping Over Trees

Iteration and Tail Recursion

Multiple Inputs to For

The Evaluation Environment Bug

This project is a tool to assist the user in solving cryptograms (simple substitution ciphers). It makes some guesses automatically, and records other guesses made by the user.

Program Structure

Guided Tour of Global Variables

What's in a Name?

Flag Variables

Iteration Over Letters

Computed Variable Names

Further Explorations

Program Listing

Localmake

Backquote

Implementing Iterative Commands

Debugging Macros

The Real Thing

This program displays graphs of the Fourier (harmonics of sine waves) approximation to a square wave. It illustrates how harmonics are combined to control the timbres of notes in computer-generated music.

Square Waves

Keyword Inputs

Making the Variables Local

Indirect Assignment

Numeric Precision

Dynamic Scope

Further Explorations

Program Listing

Appendices