Download Dan Leach Resume

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Logic programming wikipedia , lookup

Expert system wikipedia , lookup

AI winter wikipedia , lookup

Human-Computer Interaction Institute wikipedia , lookup

Wizard of Oz experiment wikipedia , lookup

Transcript
This document can be found at http://alum.mit.edu/www/dan.leach/resume/dan_leach_t7.docx and
http://alum.mit.edu/www/dan.leach/resume/dan_leach_t7.html
Other versions of my resume and other materials can be found at http://alum.mit.edu/www/dan.leach/resume/
DAN LEACH
[email protected]
EDUCATION
6/80
Massachusetts Institute of Technology
B. S. in Computer Science and Engineering
SKILL SUMMARY
C++, C, C#, JAVA; other languages used include JAVASCRIPT, Visual Basic, LISP
Windows, .net framework for Windows, and UNIX / LINUX / AIX
Taught courses at a number of universities, including Northeastern University, University of Massachusetts, University of
Lowell (see appointment letter to graduate faculty), and Boston University. Courses taught included "Advanced C++",
"Advanced C", "Analysis of Algorithms", "Data Structures", "Computer Language Theory", "Design and Construction of
Compilers", "Expert Systems", "Artificial Intelligence", and "Organization of Programming Languages".
Languages used:
C++ (since 1986): gcc and g++ (C++11) on Ubuntu; gcc and g++ (C++11) on Centos; gcc and g++ on Red Hat Linux (cross
compiler for Toshiba’s Linux CE); CodeWarrior from Metrowerks on Windows for VRTX; XLC on AIX (VisualAge C++
Professional / C for AIX Compiler, Version 6); Microsoft Visual C++ (MSVC 1.0 to MSVS 2015 (C++11)); g++ on Redhat Linux;
Borland 5.5 on DOS; C++ (CFRONT) on ATT UNIX System V; MS C++ on MS DOS; Glockenspiel C++ on MS DOS;
Glockenspiel C++ on ATT UNIX System V; gcc and g++ on MS Windows; gcc and g++ on MS DOS; C++ on HP-UX; C++ on
AIX; C++ on Wang 42X; C++ on Wang VS; C++ on Apollo WS; C++ on Sun WS
C (since 1983): XLC on AIX (VisualAge C++ Professional / C for AIX Compiler, Version 6); Microsoft Visual C (MSVC 1.0 to
MSVS 2015); Borland 5.5 on DOS; MS C on MS DOS (MS DOS (all public releases) to MS DOS boxes on Windows 1.0 to
Windows 7); CC on ATT UNIX System V; C on Berkley Unix; C on Wang 42X; Wang C for Wang VS; C for Wang WS; Mark
Williams C
C# (since 2004): Microsoft Visual Studio .NET 2008 (based on both Windows Forms and Web Forms)
JAVA (since 2004): on Linux and Windows
ASPX (since 2006): Microsoft Visual Studio .NET 2003 (with C# code behind)
Microsoft Visual Basic (since 1992): all versions from VB 1.0 to VB.NET (Microsoft Visual Studio .NET 2008)
LISP (since 1975): MACLISP on PDP-11’s, VAX VMS’s, PDP-10’s; VBLISP; Kyoto Common Lisp (on Berkley UNIX, ATT
UNIX System V, Wang 42X); XLISP for MS DOS; Franz LISP
PL/M-80 (1980 to 1985): for Z80’s and 8080’s for Wang WS’s
PASCAL (1980 to 1984): on 8088’s, 8086’s, 8080’s, CP/M, MS DOS
FORTRAN (1973 to 1984): Various versions on IBM 360’s, IBM 370’s, Data General mini-computers, Cyber 6000’s,
Computer Vision mini-computers, MS DOS for Wang PC’s, CP/M
Assembly Language (since 1975): for Z80’s, 8080’s, 8088’s, 8086’s (I wrote code for those; I’ve used the MS Debugger
for release code in assembly mode for Intel processors through Pentium 4’s), IBM 360’s, IBM 370’s, PDP-11’s, PDP-10’s,
PDP-8’s, Wang VS’s, Motorola (68000 family)
Miscellaneous:
Design Patterns (taught from the Gamma, et al text): Creational Patterns (Abstract Factory, Builder,
Factory Method, Singleton, Virtual Constructor), Structural Patterns (Adapter, Wrapper, Bridge,
Composite, Decorator, Facade, Proxy), Behavioral Patterns (Chain of Responsibility, Command,
Interpreter, Iterator, Memento, Subject/Observer, Publisher/Subscriber, State, Template Method, Visitor)
STL, MFC, RogueWave, GTK+ (The GIMP Toolkit)
JBuilder, Eclispe, Microsoft IDE (1.0 to .NET 2005), Microsoft Programmer’s Workbench, teco, vteco,
emacs, vi, awk, yacc, lex, grep, sed, vss (Visual Source Safe), sccs, rcs, vcs, make, PVCS, Microsoft
Perforce, JIRA, Subversion, CVS, VI (Visual Intercept), peregrine, putty, Rational ClearCase, Clarify,
Siebel, WPF
perl, c-shell, ms dos bat (dos scripting)
Oracle, Wang’s PACE (open PACE and VS PACE), SYBASE, Informix
TCP/IP, HTTP
.net, HL7, TFS, SCRUM, ClearCase, XML, Coverity, Visual Studio, Metrowerks, Visual Source Safe,
Perforce, JIRA, Subversion, StarTeam, CruiseControl.NET, Embedded SQL (from C, C++, and C#),
Oracle, DB2, InstallSheild, SDLC (software development life cycle), OOA, OOD, OOP, UML, SQL for
Oracle, TSQL for MS SQL Server, UDB for DB2 on AIX; studying MVC (Model–view–controller is a
software architectural pattern for implementing user interfaces) online; studying ETL (Extract-transformload is a process in database usage, especially in data warehousing) online; studying the differences
between C++98, C++03, and C++11 online; studying “The Prince” by Machiavelli and “The Art of War” by
Sun Tzu (both of these can be used as models for competition and tactics)
Miscellaneous Languages: COBOL; ALGOL-60; ALGOL-68; PROLOG; CLU; ADA; APL; HTML
OS’s:
Microsoft: Windows 7, Vista, XP, 2000, CE, NT, ME, 98, 3.1, 3.11, 2.0, 1.0; MSDOS
UNIX: NetBSD, Unbutu, Solaris, Toshiba’s Linux CE, Red Hat Linux, AIX
PROFESSIONAL EXPERIENCE
4/16 – 12/16: General Dynamics through Beacon Hill Staffing, Fort Wayne, IN
Software
Engineer (consultant)
Design, development, and maintenance primarily in C++11 using MSVS 2015 for Windows 7 for a Common Battlefield
Application Toolset (ComBAT) for the British Ministry of Defence. Constructed white box units tests using the Google C++
Testing Framework (Google Test). Tools used included Team Foundation Server and Qt; work was done on Windows 7
using SCRUM.
2/16: Sensaphone, Aston, PA
Software
Engineer
Design, development, and maintenance primarily in C++11 for Ubuntu precise (12.04.5 LTS) for remote monitoring and
control systems. Tools used include automake and g++ 4.6. Development was done thru putty for Windows 7 using
SDLC.
11/15 – 12/15: Saab Sensis Corporation, East Syracuse, NY
Software
Engineer (consultant)
Design, development, and maintenance primarily in C++11 for CentOS for a radar system (CRUMBS -- Common Radar
Upgrade Modular Building blocks) for the Indian Navy. Tools used include JIRA, subversion, coverity, g++, cmake,
Confluence, and Jenkins. Development was done thru TigerVCN for Windows 7 using SCRUM.
2/15 – 6/15: GE Transportation, Erie, PA
Staff Software
Engineer
Design, development, and maintenance primarily in 68010 asembler, C, and PASCAL for embedded software for GE
locomotives. Tools used include ClearQuest and VirtualBox (NetBSD 6.1.5).
1/15 – 2/15: Zodiac Inflight Innovations, Brea, CA
Software
Engineer
Design, development, and maintenance primarily in C++ for an embedded Ubuntu platform for inflight entertainment.
Tools used included JIRA, subversion, coverity, g++, gmake, Confluence, and Jenkins. Development was done on
VirtualBox running under Windows 7 using SCRUM. Embedded system used both OOD and design patterns.
2
5/13 – 7/13: Hewlett-Packard, Nashville, TN
Systems
Engineer
Contract via AgreeYa. Design, development, and maintenance primarily in Pro*C/C/C++ and scripting (sh, csh, ksh, and
perl) on UNIX (SunOS 5.10 for SPARC-Enterprise) using Oracle to help solve issues and process claims and payments
for TennCare.
10/12 – 4/13: PathGroup, Brentwood, TN
Software
Developer
Contract via Allstates Technical Services, LLC (a KBR Company). Design, development, and maintenance primarily in
C++ for Windows using SCRUM. Ported PathGroup applications from MSVS6 to MSVS2012. Data stored in MS SQL
Server. Researched adding molecular genetic reporting in HTML5 (from GenoSpace) to our reports to aid in personalized
medicine. Some JAVA. Aplication used MFC, OOD, and design patterns.
6/12 – 9/12: Emdeon, Nashville, TN
Application
Programming Analyst / Programmer IV
Contract via TargetCW . Design, development, and maintenance primarily in C (gcc) for AIX of processing CMS1500/CMS-1501, 997/999 (Functional Group Acknowledgement/Implementation Acknowledgement) reporting (for
insurance claims clearing), and HL7. Built new wrapper for archive software (records must be kept for a number of years
(varies from state to state) and Emdeon currently has petabytes worth of them stored at its data center; so far, Emdeon
has never deleted anything, just moved it to slower forms of storage as it gets older). Data stored in Oracle. Some JAVA,
perl, and shell scripting.
4/08 – 3/12: Intergraph, Huntsville, AL
Software Scientist
Design and development in C++ and C# on the .net framework on Windows using Visual Studio for Intergraph’s Computer
Aided Dispatch system as it relates to InService’s Outage Management System and Mobile Worforce Management.
Design and development of DLL’s in C++ (e.g., OMSAlarmManager) for interop with C# and GUI’s (in C# (e.g.,
OMSStyleConfiguration tool) and C++ (e.g., OMSDisplayOptions)) using dynamic redundant SQL (an extention of t-sql)
for Oracle and MS SQL Server. Some MQSeries Messaging. Configuration management and build management – built
releases, service packs, and patches of OMS and MWM to ship to QA, coordinating the activities of developers in the
United States and India using SCRUM. Aplication used MFC, OOA, OOD, OOP, and design patterns.
7/03 – 3/08
Consultant/Contractor
Some work as an independent, the rest through other firms. Clients included Motorola (I developed for cable set top
boxes and hosts for cable cards) and QVC (I worked in Enterprise Data Services). Development in C++ and C, some
development in JAVA, JAVASCRIPT, VB, and C#; for UNIX (including xlC on AIX, gcc on Linux, and Metrowerks
CodeWarrior on Windows for VRTX) and the .net framework on Windows (using Visual Studio); used SQL for DB2 and
SQL Server; used XML for doing data exchange. Some development related to back end web processing for search and
navigation. Some software architecture (specs using UML), project management, and project coordination (for one
project, I had a team of 15 developers in China; while I was based in Atlanta, I spent 6 weeks in Shanghai, working on a
project for a client in Massachusetts). Various of the aplicationa used MFC, OOD, and design patterns.
3/97 – 3/04: NORTHEASTERN UNIVERSITY, Boston, MA
Senior Lecturer
Winter, 2004; Summer, 2002; Winter, 2002; Spring, 2001; Winter, 2001; Fall, 2000; Winter, 2000; Fall, 1999; Spring,
1999; Winter, 1999; Fall, 1998; Spring 1998; Winter, 1998; Fall, 1997; Spring, 1997
Lectured COM5628, Advanced C++ Programming, covering classes, templates, reusability, inheritance, multiple
inheritance, STL, class libraries (based mainly on Stroustrup’s The C++ Programming Language, Special Edition and
Meyer’s Effective C++, 2nd edition). Course is a lab course.
Fall, 2002; Winter, 2003
Lectured COM5383, Introduction to Software Testing, covering black-box, gray-box, and white-box testing, equivalence
class partitioning, and boundary value analysis as they relate to functional testing, regression testing, configuration
testing, compatibility testing, usability testing, and Web site testing (based mainly on Kaner, Nguyen, and Falk’s Testing
Computer Software, 2nd Edition and Nguyen’s Testing Applications on the Web: Test Planning for Internet-Based
Systems). Course is a lab course.
Summer, 2002; Spring, 2002; Fall, 2001; Winter, 2001; Summer, 2000; Spring, 2000
Lectured COM5625, C++ Programming, covering classes, constructors, destructors, scope, signatures, function
overloading, operator overloading, inheritance, multiple inheritance, templates, the STL, iostreams, references (and how
they differ from pointers), and namespaces (based mainly on Deitel and Deitel’s C++ How to Program, third edition).
Course is a lab course.
3
Summer, 2002; Winter, 2002; Fall, 2000; Winter, 2000; Spring, 1999; Fall, 1998; Winter, 1998; Fall, 1997
Lectured COM5594, Win32 Programming, covering the Win32 API set as it relates to mutexes, semaphores, threads,
processes, critical sections, DLLs, virtual memory management, SEH (based on Richter’s Programming Applications for
Microsoft Windows, 4th edition). Course is a lab course.
Spring, 2002; Spring, 2001; Spring, 1999
Lectured COM5637, STL Programming, a detailed coverage of C++ templates and the Standard Template Library (based
mainly on Josuttis’s The C++ Standard Library: A Tutorial and Reference and Stroustrup’s The C++ Programming
Language, Special Edition). Course is a lab course.
Fall, 2001; Fall, 2000; Spring, 2000; Fall, 1999; Winter, 1999; Spring, 1998
Lectured COM5588, Windows Programming, covering the Windows management, painting with text, keyboard and mouse
input, timers, memory management, resources, menus, accelerators, dialog boxes, et al (based mainly on Petzold’s
Programming Windows, 5th edition). Course is a lab course.
Summer, 2001; Summer, 1999
Lectured COM5600, C Programming, covering an introduction to C including syntax, operators, data types, and control
flow constructs (based mainly on Kochan’s Programming in ANSI C, Revised Edition). Course is a lab course.
Spring, 2000
Lectured COM5614, Advanced C Programming, covering file I/O, the C preprocessor, the C runtime library, advanced
pointer concepts, writing efficient C code, debugging techniques, program portability, and dynamic storage allocation.
(based mainly on van der Linden’s Expert C Programming: Deep C Secrets, and Summit’s C Programming Faqs :
Frequently Asked Questions). Course is a lab course.
11/94-7/03: DOBLE ENGINEERING CO., Watertown, MA
Senior Software Engineer
Programmed in Microsoft Visual C++ using the Microsoft SDK. Used all of the releases from MSVC 1.0 through and
including MSVC 6.0; RougeWave was used throughout all of those Protest releases. Also used Visual C++ for Windows
CE on various Windows CE platforms with the appropriate platform SDKs. The Windows CE platforms were used to
control the F6X from various smaller devices (including handhelds). Made extensive use of MFC, OOA, OOD, OOP, and
design patterns.
Doble’s products are primarily power system simulators. These generate voltages, currents, frequencies, and phase
shifts of phases of EMF waveforms that are either described directly in the test (for steady states as well as linear and
binary searches) or to replay transient waveforms that were previously captured (during a transient event (such as a
lightning strike)) or specified through a waveform editor. The waveforms are used to test relays and circuit breakers and
determine their compliance to manufacturers operating specification as well as configuration operability.
Had to refactor Protest many times due to changing hardware (both PC platforms and Doble instruments (new
instruments had to be supported to run the older tests even though the communications protocols were completely
different while maintaining the support for the older instrument sets), software (from DOS through releases of Windows
from Win95 to XP; FOXPRO to SYBASE; various releases of Crystal reports; various releases of Rogue Wave; et al), and
market conditions (power utilities have been undergoing their own refactoring efforts as power generation, distribution,
delivery, and maintenance have been divided; the business interfaces to the participants in the power grid have changed
radically as a result).
The port of the Protest functionality from the original DOS platform to Windows involved both UI and database redesign,
but core functionality had to be preserved. Protest 3 (the last DOS based product) was written in FOXPRO. The new
Protest was based on SYBASE and written in C++. The transient functionality was incorporated into Protest from a DOS
product written in C; it was refactored into C++ to support waveform generation on both the F6X and the F2K Doble
platforms (the legacy product only supported the F2K).
Did pre-sales support, post-sales support, customer support, and customer training.
Developed special communications drivers for Hydro Quebec resulting in a $5 million sale.
Trained engineers from BPA (Bonneville Power Administration) in the use of my APIs. Ported the API set to Windows CE
for BPA’s use. This resulted in a $6 million sale.
4
Designed and presented a course to customers who wanted to build their own macros using the F6X APIs (this course
was presented in Baltimore in the Fall of 2002 at the Doble User Conference).
Helped a summer intern port Mirror (in Perl) from a LINUX platform to an NT platform.
Designed and developed communications and protocol DLLs for interfacing PC-based UIs for Win32 environments (XP
through Win95) with embedded systems for instruments made by Doble to test relays and other power systems
equipment. Other of the DLLs developed implement macro functionality on top of the communications DLLs. All the DLLs
are written in C++ for MSVC; the last release of MSVC I used for this was Visual C++ 6.0.
Used object oriented design and object oriented programming techniques extensively.
The F6X protocol allows client applications (some written at Doble, some written by third parties) to define deterministic
finite state machines that describe power system simulations.
The transport macro classes designed for the F6X protocol follow a variation of the Envelope/Letter paradigm where in the
F6XTransportMacro class is both the envelope class and the base class for all derived letters allowing for recursive
polymorphism (based this design on Coplien’s polymorphic number class, though a class factory paradigm was used
instead of a virtual constructor paradigm for construction of the representations). This resulted in a design that was both
divisible (was able to take on additional staff and improve time to market) and scalable (didn’t have to develop all of the
classes for the project to be demonstrable or shippable), thus allowing defiance of two of Brook’s laws (see The Mythical
Man-month).
Designed and developed a set of APIs that give access to the objects in the DLL to third party developers. Also
supported our third party developers domestically and internationally. They use the third party APIs from both VB and
C++.
Instrumented the F6X and F2K DLLs in such a way that communications sessions may be captured (by activating a back
door). These can be used both for static diagnostic purposes and as input to the applications that generated them.
Replay allows debugging of the UI without the need for a physical instrument or the equipment that was being tested by
the instrument. That was particularly important when there were very few real F6Xs in existence. It is also important
when the equipment necessary to show a problem is not available to R&D (such as customer relays, circuit breakers, or
power system stabilizers).
The upper layers (both of the DLL and the application that is calling it) are unaware that they are not connected to a real
instrument. This allowed the Protest application that controlled F6Xs to be ready when the F6Xs were ready to be sold
broadly. It also allows our third party developers in India to debug their applications without having to have access to an
F6X all the time.
Was an in-house consultant to the engineering department on all things related to C/C++.
6/97-12/01: UNIVERSITY OF MASSACHUSETTS, Lowell, MA
Visiting Professor
Summer, 2001; Summer, 2000; Summer, 1999; Summer, 1998
Lectured 90.268, C++ Programming, covering classes, constructors, destructors, scope, signatures, function overloading,
operator overloading, inheritance, multiple inheritance, templates, the STL, iostreams, references (and how they differ
from pointers), and namespaces (based mainly on Deitel and Deitel’s C++ How to Program, third Edition). Course is a lab
course.
Summer, 2001; Summer, 2000; Summer, 1999; Summer, 1998; Summer, 1997
Lectured 90.360, Data Structures in C, covering arrays, linked lists, stacks, queues, binary trees, n-ary trees, searching
and sorting, minimal spanning trees, graphs, networks, memory management, hashing, tables, their underlying
implementations in C and use of same (based mainly on Kruse et al’s Data Structures and Program Design in C, 2nd
Edition). Course is a lab course.
Fall, 2001; Spring, 2001; Fall, 2000; Spring, 2000; Fall, 1999; Spring, 1999; Fall, 1998; Spring, 1998; Fall, 1997
Lectured 90.269, Advanced Topics in C++, covering classes, templates, reusability, inheritance, multiple inheritance, STL,
class libraries (based mainly on Stroustrup’s The C++ Programming Language, Special Edition and Meyer’s Effective
C++, 2nd Edition). Course is a lab course.
5
10/80-11/94: WANG LABORATORIES, Lowell, MA
Principal Software Engineer
Workflow (6/91-11/94): Part of team that designed, prototyped, and developed OPEN/workflow (a work management tool
based on a client/server model with a WINDOWS client and a UNIX server (servers are both AIX and HP-UX); procedures
were designed in a visual language). My parts included:
 DLLs for the In Basket, Cases, and Documents components
 OPEN/workflow APIs
 script language for doing both host and SQL integration
 workday calendar GUI (part of Administration)
Integrated Office Services (6/88-6/91): Part of a team that designed and prototyped a visual language for workflow in an
object oriented paradigm in a client/server model. Taught seminar on script language to in-house developers.
42x Core Development (8/85-6/88): Designed and developed software engineering tools for the 42x (a 68020 based
intelligent workstation) as well as ports from a VAX UNIX environment to the 42x. Designed and developed a source
control system (VC) for the 42x. Ported tools from UNIX System V to 42x. Taught AI course to in-house developers.
Taught seminar on source control to third party developers and in-house developers.
Special Products Software Systems Development (7/83-8/85): Evaluated special product requests as well as designed
and developed those for which a bid was accepted. Group tool smith.
Software Reliability Engineering (10/80-7/83): Designed and developed automated testing tools. Also designed and
developed other utilities sold as special products (while on loan to various departments). Taught PL/M programming
course to in-house developers (several times).
1/84-12/89: UNIVERSITY OF LOWELL, Lowell, MA
Visiting Member of the Graduate
Faculty
Fall, 1989; Spring, 1989; Fall, 1988 (two sections); Spring, 1988; Fall, 1987 (two sections); Spring, 1987; Fall, 1986 (two
sections); Spring, 1986; Fall, 1985; Spring, 1985; Fall, 1984; Spring, 1984
Lectured 92.575, Data Structures and Algorithms II, covering average and worst case analyses; time- and spacecomplexity; correctness; optimality and implementation (based mainly on Baase's Computer Algorithms: Introduction to
Design and Analysis, Aho, Hopcroft, and Ullman’s The Design and Analysis of Computer Algorithms).
Summer II, 1989; Summer I, 1989
Lectured 92.560, Data Structures and Algorithms I covering arrays, linked lists, stacks, queues, binary trees, n-ary trees,
searching and sorting, minimal spanning trees, graphs, networks, memory management, hashing, tables, their underlying
implementations in Pascal and use of same (based mainly on Standish’s Data Structure Techniques). Course is a lab
course.
Summer II, 1988; Spring, 1988; Summer II, 1987; Spring, 1987; Summer II, 1986; Spring, 1986; Summer II, 1985;
Summer II, 1984
Lectured 92.657, Introduction to Artificial Intelligence, covering symbolic programming languages (principally LISP,
PROLOG, and LOGO), search techniques, exploiting natural constraints, logic and deduction, expert systems (XCON,
AM, EURISKO, MYCIN, ATTENDING, fuzzy logic, inexact reasoning), AI development environments (KEE, ART, S1,
Knowledge Craft, KREME), AI hardware (SYNAPSE, EXPLORER, MicroEXPLORER, LMI Lambda), vision, planning
systems, learning, language understanding, automatic programming systems (based mainly on Nilsson’s Principles of
Artificial Intelligence, Charniak and McDermott’s Introduction to Artificial Intelligence and Winston’s Artifical Intelligence,
2nd edition).
Summer I, 1988; Summer I, 1987; Summer I, 1985; Summer I, 1984
Lectured 92.661, Computer Organization, covering digital logic design from counters, adders, and subtracters up through
microprocessors. Also covered relationships of low level software (microcode, assemblers, et al) to hardware (based
mainly on Mano’s Computer System Architecture).
Spring, 1985
Lectured 90.595, Expert Systems, covering medical expert systems, mathematical expert systems, commercial expert
systems, knowledge representation, inference engines, qualitative reasoning, inexact reasoning, fuzzy logic, automatic
programming, and languages for expert systems (based on various readings from journals and texts on expert systems).
Course is a lab course.
6
Summer I, 1984
Lectured 92.579, Organization of Programming Languages, covering concepts in programming language design and
runtime behavior of programs. A variety of programming languages compared by analyzing their data types, control
structures, and runtime systems (based mainly on Ghezzi and Jazayeri’s Programming Language Concepts, Horowitz’s
Fundamentals of Programming Languages, Horowitz’s Programming Languages: A Grand Tour, and various
programming language specifications). Particular emphasis on block-structured languages (CLU, ALGOL, PASCAL,
PL/1, ADA, C). Some functional programming (LISP). Programming assignments were be made in several languages.
1/81-5/89: BOSTON UNIVERSITY, Boston, MA
Senior Lecturer
Spring, 1989; Summer, 1984
Lectured MET CS 572, Computer Organization, covering digital logic design from counters, adders, and subtracters up
through microprocessors. Also covered relationships of low level software (microcode, assemblers, et al) to hardware
(based mainly on Mano’s Computer System Architecture).
Fall, 1987; Fall, 1983; Summer, 1983
Lectured MET CS 564, Introduction to Artificial Intelligence, covering symbolic programming languages (principally LISP,
PROLOG, and LOGO), search techniques, exploiting natural constraints, logic and deduction, expert systems (XCON,
AM, EURISKO, MYCIN, fuzzy logic, inexact reasoning), vision, planning systems, learning, language understanding,
automatic programming systems (based mainly on Nilsson’s Principles of Artificial Intelligence, Charniak and McDermott’s
Introduction to Artificial Intelligence and Winston’s Artifical Intelligence, 2nd edition). Course is a lab course.
Fall, 1985; Fall, 1984; Spring, 1984
Lectured MET CS 666, Analysis of Algorithms, covering average and worst case analyses; time- and space-complexity;
correctness; optimality and implementation (based mainly on Baase's Computer Algorithms: Introduction to Design and
Analysis, Aho, Hopcroft, and Ullman’s The Design and Analysis of Computer Algorithms).
Spring, 1984; Fall, 1983; Spring, 1983
Lectured MET CS 560, Organization of Programming Languages, covering concepts in programming language design
and runtime behavior of programs. A variety of programming languages compared by analyzing their data types, control
structures, and runtime systems (based mainly on Ghezzi and Jazayeri’s Programming Language Concepts, Horowitz’s
Fundamentals of Programming Languages, Horowitz’s Programming Languages: A Grand Tour, and various
programming language specifications). Particular emphasis on block-structured languages (CLU, ALGOL, PASCAL,
PL/1, ADA, C). Some functional programming (LISP). Programming assignments were made in several languages.
Course is a lab course.
Summer I, 1983; Spring, 1982; Fall, 1981 (two sections); Spring, 1981
Lectured MET CS 301, Information Structures, a course dealing with stacks, queues, linked lists, binary trees, n-ary trees,
graphs, some sorting and searching algorithms; their underlying implementations in PL/1 and Pascal and use of same
(based mainly on Augenstein and Tenenbaum’s Data Structures and PL/I Programming and Tenenbaum and
Augenstein’s Data Structures Using Pascal). Course is a lab course.
Fall, 1982
Lectured MET CS 665, LISP Programming, covering data structures, function types, macros, and programming
techniques. Also environments and bindings, the internal structure of LISP, and lambda calculus. Applications to pattern
matching, parsing, knowledge representation (based mainly on Allen’s Anatomy of LISP and Winston and Horn’s LISP).
Course is a lab course.
Fall, 1982
Lectured MET CS 468, Introduction to the Design and Construction of Compilers, covering program language structure,
lexical analysis, syntactic analysis, code generation, and error diagnostics (based mainly on Barrett et al’s Compiler
Construction: Theory and Practice and Aho and Ullman’s Principles of Compiler Design). Students design and implement
a compiler. Course is a lab course.
Summer II, 1982; Spring, 1982
Lectured MET CS 662, Introduction to Computer Language Theory, a course dealing with finite automata, regular
expressions, context-free grammars, context-free languages, pushdown automata, Turing machines, generalized
grammars (based mainly on Lewis and Papadimitriou’s Elements of the Theory of Computation and Hopcroft and
Ullman’s Introduction To Automata Theory, Languages, And Computation).
7
Summer II, 1981
Lectured MET CS 216, PL/1 for Programmers, intensive course for people with a programming background; combined
106 (Introduction to Computing and PL/1) and 206 (Advanced Algorithms and PL/1). Covered the concept of structured
programming in a block structured language, syntax and semantics of many PL/1 constructs. Including generalized DO
groups, string manipulation, structures, recursive procedures, on-units, stream I/O, some record I/O, based and controlled
storage (based mainly on Hughes’ PL/1 Structured Programming, 2nd Edition). Course is a lab course.
6/80-9/80: GOULD MODICON, Andover, MA
Senior Engineer
Designed and implemented low level graphic utilities (software character generation, line drawing, polygon filling, et al)
and command interpreter for a raster color graphics display (512 x 240 resolution, three color planes) in ASM86. Display
was driven by an Intel 8088 microprocessor and received its commands from an 8086 based host computer.
12/79-6/80: COMPUTERVISION, Bedford, MA
Senior Programmer
Maintained and enhanced CADDS 3 (Computer Aided Design and Drafting System) graphics utilities and applications
software in FORTRAN. Primarily responsible for the dimensioning and subfigure packages.
8/78-12/79: LOGICON, Lexington, MA
Systems Analyst &
Programmer
SECRET security clearance. Maintained CADSAT (Computer Aided Design and Specification Analysis Tool), a relational
data base system used by design and specification analysts for tracability analysis. Responsible for meeting user's needs
in explaining commands, fixing bugs, and documenting software.
Designed and specified the Automated Test Case Generator (ATCG) for automated program verification and validation.
Principal author of the following documents: Automated Test Case Generator, Functional Description (Vols. I and II);
Automated Test Case Generator, Systems/Subsystems Specification (Vols. I and II); Automated Test Case Generator,
Final Technical Report. The first four documents were published for internal use by the United States Air Force. The
Final Technical Report was published by the National Technical Information Service (NTIS).
3/78-8/78: DPSI, Waltham, MA
Programmer
Designed and implemented statistical software for use in the Weather Erosion Studies Program in the Convective Cloud
Physics Group of the Meteorology Division of the Air Force Geophysics Labs.
TECHNICAL PUBLICATIONS







with Satko, J. E., "DOCGEN: A Documentation Generation System", Proc. of the Fifth Annual Phoenix
Conference on Computers and Communications, 1986.
with Satko, J. E., and Gagne, P. J., "The Library Tester", Proc. of the Softfair II: A Second Conference on
Software Development Tools, Techniques, and Alternatives, 1985.
with Paige, M. R., and Satko, J. E., "A Methodology for Rapid Prototyping", Proc. of the Fourth Annual Phoenix
Conference on Computers and Communications, 1985.
with Satko, J. E., "Implementation Languages for Data Abstractions", Proc. of the Third Annual Phoenix
Conference on Computers and Communications, 1984.
with Paige, M. R., and Satko, J. E., "AUTOTESTER: A Testing Methodology for Interactive User Environments",
Proc. of the Second Annual Phoenix Conference on Computers and Communications, 1983.
with Paige, M. R., Satko, J. E., and Urso, W. R., "A Tool for Testing the User Interface in a Distributed Systems
Environment", Proc. of the 20th Annual Spring Reliability Seminar, 1982.
with Kundu, S., AUTOMATED TEST CASE GENERATOR, FINAL TECHNICAL REPORT, NTIS, 1980 (see
http://alum.mit.edu/www/dan.leach/resume/atcg.pdf).
Notes for my Advanced C++ course can be found at http://alum.mit.edu/www/dan.leach/resume/notesacpp.docx and
http://alum.mit.edu/www/dan.leach/resume/notesacpp.html
Notes for my Data Structures in C course can be found at http://alum.mit.edu/www/dan.leach/resume/notesdsc.docx and
http://alum.mit.edu/www/dan.leach/resume/notesdsc.html
NON-TECHNICAL PUBLICATIONS



“Campfires”, Cricket, July, 2000
“The Chase”, Impressions, Iliad Press, February, 1996 (Reprinted in the April, 1998 issue of Sunday Suitor)
“Jigsaw”, American Poetry Annual - 1996, The Amherst Society, 1996 (Reprinted in the August, 1997 issue of
Sunday Suitor)
8















































“Snowy night”, Treasured Poems of America, Sparrowgrass Poetry, Winter, 1997
“Sonnet on a fetish”, In Your Face, Winter, 1997
“Traps”, Cut to the Chase, Poetry Press, January, 1997
“On Boxes”, Cut to the Chase, Poetry Press, January, 1997
“A Touch of Grace”, Love Poems, Poetry Press, February, 1997
“Thoughts of Louise” , Love Poems, Poetry Press, February, 1997
“Magic”, Love Poems, Poetry Press, February, 1997
“Memories in a soft rain”, Best New Poems, Poets’ Guild, 1997
“Of a Phone Call”, Poetic Eloquence, Spring, 1997
Love Poems and Other Lies, The Plowman Printing House (Box 414 / Whitby / Ontario L1N 5S4 Canada), 1996
(also available at http://alum.mit.edu/www/dan.leach/poems/lovepd.html)
“Sam Spade Dreams...”, Report to Hell, February, 1996
“Volcano”, Poetic Eloquence, Vol. 5, # 2, 1996
“On Infrequent Letters”, Poetic Eloquence, Vol. 5, # 2, 1996
“Something for Dee”, Poetic Eloquence, Vol. 5, # 2, 1996
“Of Liz”, Poetic Eloquence, Winter, 1996
“A Song for Catherine”, Poetic Eloquence, Fall, 1996
“Of Waste”, Poetic Eloquence, Fall, 1996
“Rain Song”, Poetic Eloquence, Winter, 1996
“Looking to Dee”, Poetic Eloquence, Fall, 1996
“Reunion”, CQ (California Quarterly), Autumn/Winter, 1996
“No Strings”, Treasured Poems of America, Sparrowgrass Poetry, Winter, 1996
“St. George”, Array Magazine, Winter, 1996
“Thoughtful Daydreams”, Impressions, Iliad Press, February, 1996
“Edits”, Muddy River Poetry Review, Winter, 1996
“Rochelle Salt”, Illya’s Honey, Spring, 1996
“A Memory of M----“, Impressions, JMW, April, 1996
“Shy Sunrise”, Impressions, JMW, April, 1996
“To Kelvin”, Impressions, JMW, April, 1996
“The Ring”, Impressions, JMW, April, 1996
“Infidelity”, Treasured Poems of America, Sparrowgrass Poetry, Summer, 1996
“The Wind to a Kitten”, The Rainbow’s End, The National Library of Poetry, Summer, 1996 (Received an “Editor’s
Choice Award” for this poem)
“Haircuts”, Mobius, Spring, 1996
“Naiad”, Echoes from the Silence, Vol. XIII, Quill Books, 1996
“Cycles”, Ages and Stages, Poetry Unlimited, 1996
“Tides”, Ages and Stages, Poetry Unlimited, 1996
“To Emily”, Poetic Eloquence, Spring, 1996
“The Beach”, Skyline, Poetry Unlimited, 1996
“Voices”, Endless Harmony, Word Art Publishing, 1996
“First Lesson”, Endless Harmony, Word Art Publishing, 1996
“The First Time”, Endless Harmony, Word Art Publishing, 1996
“Philosophers in the Checkout Line”, Second Glance, New Spirit Press, Summer, 1996
“Presents”, Array Magazine, Fall, 1996
“Communion Secret”, Illya’s Honey, Fall, 1996
“Chocolate Debate”, Mobius, Fall, 1996
“In answer to a question”, Sea of Treasures, The National Library of Poetry, December, 1995 (Received an
“Editor’s Choice Award” for this poem)
“Skyscape”, Echoes from the Silence, Vol. VII, Quill Books, 1995
“Beer and Pizza”, Illya’s Honey, Fall, 1995
9
TEST RESULTS
ReviewNet C++ Evaluation (Advanced; 94th percentile): This test result can be found at
http://alum.mit.edu/www/dan.leach/resume/testcpprn.png
Brainbench C++ (scored better than 90% of previous examinees): This test result can be found at
http://alum.mit.edu/www/dan.leach/resume/testcpp.jpg
10
Prove It! C test (Percentile ranking 90%): This test result can be found at
http://alum.mit.edu/www/dan.leach/resume/testc.jpg
11