A short summary is also available.

- Ph.D. in Mathematics,
University of Wisconsin,
Madison, August 1997.

Thesis area: Number Theoretic Algorithms.

Thesis advisor: Eric Bach.

Thesis title: Computing Roots in Finite Fields and Groups, with a Jaunt through Sums of Digits. - M.S. in Computer Science, University of Wisconsin, Madison, May 1995.
- M.A. in Mathematics, University of Wisconsin, Madison, December 1994.
- A.B. in Mathematics, Princeton University, June 1990.

Earning a Ph.D. requires many abilities and skills.

- Planning and completing a multi-year project

I spent about 2 years doing research, and 6 months writing. - Learning independently

I had to spend time in the library learning what others had done before I could expand on their work. The learning process involved finding relevant journal articles and understanding them. - Communicating my knowledge in writing (my dissertation) and
verbally (speaking at conferences)

A dissertation has to be written clearly so that my examining committee could understand it. I presented parts of my research at three conferences, speaking before audiences composed of professors and researchers in mathematics.

I'm currently working as a software engineer (programming in C on Unix, using ClearCase, Sun Workshop, and custom development tools), working on CAD software. Specifically, I'm part of the group responsible for the cabling code for Pro/Engineer. I develop new projects and also fix bugs in existing code. Lately, I've spent several weeks changing data structures to improve performance (this involves modifying code in hundreds of files where the old data structures are accessed directly). I approve code and manage two people while our group leader is out of town, most recently for 3 weeks.

I taught Math 112, Algebra, to two sections containing a total of 50 students. My duties are the same as when I taught algebra and trigonometry: I prepare and give three lectures per week, making sure that I explain the mathematics clearly.

I presented my analysis of Shanks's algorithm for computing square roots in finite fields at the Canadian Number Theory Association conference in Ottawa in August, 1996 (a preprint of my analysis is available).

I started out teaching discussion sections for first- and second-semester calculus courses. A professor lectured three hours per week to approximately 250 students, and I led two 20-student discussion sections twice per week. My classroom duties were to answer questions about homework problems and to reexplain topics the students didn't understand after the lecture. Other duties were assigning and grading homework and quizzes for my two sections, helping to write and grade exams, and computing final grades for my students.

I have also taught algebra and trigonometry. For these courses, I was the only instructor my students ever saw. In algebra, I taught two 20-student classes three days a week, while trigonometry involved three 20-student classes meeting twice a week. The course coordinator prepared a syllabus, brief teaching notes, and exams. My job was to prepare and give the lectures, often having to reach out to unmotivated students who were merely taking the course to fulfill a requirement. I also assigned, collected, and graded homework and quizzes, and proctored and graded my students' exams.

The second time I taught algebra, the course had 9 "Problem Days," small-group learning opportunities. For half the class period, I wandered around the room and encouraged the groups and occasionally gave them hints and corrected misconceptions or answered individual questions. In the second half of the class, all the groups reported their progress as I moderated. I had to be sure that all of the groups had a chance to contribute something and that the students explained their work to each other so the whole class solved the problem without me lecturing at all.

Manufacturing Technologies, Incorporated is a small firm that contracts computer programmers to local businesses. My main job there in 1987 was writing a program called "Order Pad" for Elwood Safety in Buffalo, New York. The program connected with their inventory and customer databases to allow salesmen to enter and print orders easily. They could check if a product was in stock and search the inventory database from within the order-entry screen.

The client came up with the idea at approximately the level of detail given above. I was responsible for fleshing out the outline, designing the user interface, and writing the program. I worked with my boss and a fellow employee on these steps, meeting with them briefly each day. The user interface was designed with input from the salesmen who would use the software; I also trained them once the program was finished.

I used Basic Four Business BASIC running either on Basic Four computers or under Thoroughbred OS on IBM PC compatibles.

Sokoban is a puzzle game of pushing boxes to their correct destinations in a crowded warehouse. The game was invented in the early 1980s in Japan, and since then, versions have been written for most personal computers and for Unix machines. I wrote (and continue to improve and update) a Macintosh implementation. My version was written from scratch using Think Pascal; it's about 7000 lines of code.

My sokoban implementation has been included on numerous CD-ROM collections, including Wayzata's Best of Macintosh Shareware and the Software of the Month Club for June 1996. It was the only game on the MacUser Mac Megapac CD. Most recently, Sokoban was the software pick of the week at MacMadness. For more information, visit my Sokoban page.

I have extensive experience programming for the Macintosh graphical user interface in Pascal and have programmed in C professionally for the past year. I have also dabbled in C++, Java, Object Pascal, Lisp, Basic, ML, Prolog, and 6502 assembler.

I know HTML and wrote all of my own web pages. At first, I used a text editor and inserted tags manually, but now I use a graphical HTML editor with occasional hand-editing of the output. I'm comfortable using Macintosh, UNIX, or Windows computers for daily tasks like e-mail and word processing. Like most mathematicians, I typeset mathematics using TeX. However, I yearn for an interface that would make typing mathematics as fast and easy as hand-writing mathematics.

I wrote a program (part in C, part in Pascal) to compute the least primitive root for all primes up to 1 trillion (10^12). This provides numerical evidence that so far supports a conjecture by Eric Bach. The program is capable of finding least primitive roots for all primes up to 100 trillion (10^14); however, it would take about 200 years on my computer to get that far.

In my studies, I've enjoyed learning algorithms for solving many problems: graph algorithms, sorting algorithms, numerical algorithms, cryptographic algorithms. My current research is detailed analysis of number-theoretic algorithms: determining exactly how many computer operations (multiplications, etc.) they take on average.

"An exact analysis of Shanks's algorithm for computing square roots in finite fields," to appear in Proceedings of the Canadian Number Theory Association, Ottawa, Ontario, Canada.

For more information about me (weighted towards the personal side, instead of the professional), read my brief online autobiography.

Last modified: April 10, 1999. Scott Lindhurst, ScottL@alumni.princeton.edu

http://members.aol.com/sokobanMac/scott