Scott Lindhurst's Curriculum Vitae

A short summary is also available.



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

Work Experience

Software Engineer at Parametric Technology Corporation, April 1998-present

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.

Faculty Assistant at U Wisconsin Madison, August 1997-Dec 1997

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.

Research Assistant for Professor Eric Bach, Sept 1996-Jan 1997

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).

Teaching Assistant at UW Madison, Sept 1991-May 1996, Jan-May 1997


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.

Algebra and Trigonometry

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.

Programmer at MTI, Amherst, NY, Summers of 1987 and 1988

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.

Computer Experience

Wrote Sokoban for the Macintosh

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.

Program in Several Languages

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.

Other Computer Experience

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

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,

Scott's home page | Sokoban pages | My resume