From: rem@btr.com (Robert E. Maas)
Newsgroups: misc.jobs.resumes
Subject: Computer-Assisted Instruction/Training software development / SF Bay
Date: 18 Nov 92 20:46:12 GMT
Distribution: na
Organization: BTR Public Access UNIX, MtnView CA. For info contact: info@BTR.COM

Robert Elton Maas, 490 Chiquita, Apt. 18, Mountain View, CA 94041
Voice & answering machine: 415-969-2958
Internet electronic-mail: rem@BTR.Com


Employment objective: Programming, curriculum development, testing,
proofreading, etc. related to Computer Assisted Instruction/Training.

Legal qualification to work: I'm a natural-born citizen of the USA,
currently unemployed and available for work immediately.


In addition to minor experiments in developing CAI (Computer-Assisted
Instruction) software I've done on my own at various times since 1971,
I've been employed for the following significant tasks/projects:


CAI-Calculus: Part of team of approximately ten employees (1
supervisor, 4 programmers including myself, one curriculum developer
with assistants, and some faculty consultants) developing
computer-assisted instruction program for Calculus, under an NSF
contract at Stanford. This project, using PSL (Portable Standard LISP),
was started on a PDP-10 running Tenex and was later ported to an IBM
mainframe running VM/CMS and later ported to IBM/Unix workstations
emulating PSL in Ibuki Common Lisp. The resultant large program used
low-level assembly and/or C code to interface to the several operating
systems. In addition to making lots of minor improvements and bug-fixes
in modules originally written by others, interfacing some modules to
the rest of the system, and testing curriculum and reporting bugs in
curriculum and software, I conceived and/or developed mostly by myself
the following modules:

- EQD: Conceived and wrote prototype and first real version and continued
development on EQuational-Derivation module for student-directed tasks
such as differentiating using various primitive rules (sum, product,
chain rule), solving equations, substituting values and equations.

- Mathprinter: Conceived (as successor to text layout on XGP I wrote
several years before) and wrote utility that takes an s-expression that
is the internal form of a mathematical expression and lays it out in
two dimensions to look more natural. (It is similar to the way MacSyma
displays its output, except it works from a different internal
representation. This is different from the well-known 'Tex' by Donald
Knuth which prints mathematics nicely but requires the user to
translate math expressions into a mark-up language that directly
represents the 2-dimensional layout, thereby begging the question of
how to lay out mathematical forms in 2 dimensions.) During stage two of
this task, we planned to produce optimal (pretty) output on UGS
(Unified Graphics System, on VM/CMS) and in Xwindows (on Unix), and I
did much work on a new version, but due to difficulty getting
documentation for fonts in Xwindows and severe problems mixing text and
graphics in UGS as well as a need to have curriculum look the same
under both VM/CMS and Unix, my boss abandoned stage two and reverted to
the fixed-pitch plain-ASCII mode of output from stage one that was easy
to mix with normal fixed-pitch text on both systems.

- Model generator: From a written specification from another employee,
I wrote a subroutine to try all possible values from a selected set of
numbers to assign to all the variables so-far in a derivation to try to
find some combination that satisfies the premises, thus guaranteeing
the derivation isn't self-contradictory when the student introduces
each new supposition or variable assignment. If none of the canned
values satisfy the conditions, the student is queried to supply
additional values to try.


HyperCard stacks, developed completely by myself (at the request of the
supervisor of the CAI-Calculus project) as prototypes for new features
that might someday be installed in the main CAI-Calculus system:

MathPrint - A visual listing of the various non-trivial mathematical
notations that appear in calculus textbooks, as a set of requirements
for a new automatic mathprinter.

WordProb - Prototypes for CAI software to teach the setting up and
solution of word problems, including drawing appropriate diagrams:
- Multiple ways to parameterize an optimization problem.
- Difference between a "mathematical" solution with all units converted
by hand outside the mathematics and a "science" solution with all units
carried around in the mathematics and converted semi-automatically.
- Animation of word problem about falling ladder.
- Drawing appropriate diagram incrementally from word-problem
statement, including re-drawing when necessary.
- Hand-holding solution of word problem: Naming variables to match
canned descriptions, stating equations, ...
- Semi-hand-holding solution of word problem: Describing and naming
variables (program identifies descriptions by keyword-based
information-retrieval), ...
- Given equations of word problem, analyze dependent&independent
variables and transform equations to yield functions of single variable
amendable to elementary calculus methods. Includes canned
dependency-diagrams showing relations between variables and equations.
- Drawing diagram and parameterizing two different ways to solve
optimization problem.
- Dynamic simulation under mouse control to attempt to manually
approach optimization in a problem with two degrees of freedom.
- Elaborate heirarchial-menu system for user-controlled tools.

WordProbProx - Using new "proximity-hashing" method to find nearest
match between student-entered descriptions and curriculum descriptions
such as for naming variables & constants in a word problem:
- Actual word problem with engine for setting up descriptions and names
by "proximity-hashing".
- Demos of internal workings of "proximity-hashing".
- Results&diagrams imported from more advanced LISP-based
proximity-hashing software (because HyperCard is much too slow for such
heavy numerical computations).

CalculusInterfacePlotting - Tools&Games related to mathematical plotting:
- Simple tool for plotting functions, with zoom etc.
- Guess the function: Pick which of five functions are NOT consistent
with points as plotted (no scale given, thus might be tiny part greatly
magnified). More than one function might be consistent to the
resolution available.
- Guess the function: Menu of 28 functions to guess. Scale of graph
given. No hints except any partial matches between guess and correct
answer are NOT erased and one more character of correct answer also
given. Student tries to exactly guess closed-form of function with
fewest attempts.
- Adjusting parameters of function so that graph satisfies some
specified criterion such as two equal maxima or function fits within
window etc.
- Guess the function: Computer shows very misleading part of graph.
Student zooms in or out and pans around to show more representative
image of graph, then guesses closed-form of function.
- New tool for exploring the graphs of relations by browsing with the
mouse to try to locate where function changes sign. Makes rather pretty
pictures (see gallery in other stack).
- Listing (text descriptions) of additional new ideas for graph-related
games which haven't yet been prototyped.

CalculusStipple - Using black&white stipple patterns to emulate color
in such a way that color is properly additive and the individual
color-gun patterns are easily recognizable and distinguishable. The
simplest uses weights of 3+3+2. Another uses 4+5+2. (For R,G,B
respectively)

MathAlgorithms - Teaching polonomial long-division using full display
of the method step by step, starting with traditional long-division of
numbers as a warm-up or refresher or prerequisite.

ShortAnswerTests - Automatic online grading of short-answer fill-in
tests by matching sub-strings of student's answer against correct
answer. Matching segments are retained, all else is erased, and one
additional letter of correct answer is supplied. If the student can
reach the correct answer within two or three guesses it means he/she
knew the answer but perhaps spelled it slightly wrong or knew two
synomous answers only one of which was acceptable to the program and
happened to guess the wrong synonym the first time. Use of this method
could eliminate the need for multiple-choice questions when using
machine-graded tests, thus improving the testing to greatly reduce
random guessing. Also includes demo of hybrid method of having multiple
choice with four actual answers and one fill-in. The fill-in is correct
1/5 of the time (or more often if desired).

CalcGraphImages - A gallery of images of results from various
experimental mathematical graphing algorithms I've prototyped. Includes
plotting of functions, interactive technique for exploring relations,
and multi-dimensional plots.

Flashcards - Re-implementation of 1969 doubling-up-delay algorithm for
memorizing flashcards (previously implemented by me in Algol).


CAI-Logic: Worked with two other employees to convert a
Computer-Assisted Instruction system for symbolic logic from SAIL (a
version of Algol 60) to SL (Standard LISP), and later modify it to run
under PSL (Portable Standard LISP).


In addition to the development of CAI-related software described above,
I've written a wide variety of software using LISP and SAIL (a version
of Algol 60) and assembly languages on various CPUs (IBM 1620, IBM
360/370, IBM 1130, DEC PDP-10, MOS 6502, Intel 8080, 68000), plus
Fortran, HyperTalk (the scripting language of HyperCard), MacSyma,
MainSail, C, Forth, and Cobol.

I have a Bachelor of Science degree (Mathematics major) from the
University of Santa Clara, plus some graduate studies at University of
Oregon. I was among the top five (in U.S.A.) in the William Lowell
Putnam undergraduate mathematics competition, and I passed the
California civil service exam for Programmer/Analyst I and the federal
exam for Writing & Public Info as well as the Mensa IQ test.