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] 138 York Street Corry, PA 16407 Skype ID danleach0508 US Citizen (814) 572-9941 (cell)

EDUCATION Massachusetts Institute of Technology B. S. in Computer Science and Engineering, June, 1980

SKILL SUMMARY ++, C, C#, ; other languages used include JAVASCRIPT, Visual Basic, LISP Windows, .net framework for Windows, and / 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 ", "Expert Systems", "Artificial Intelligence", and "Organization of Programming Languages".

C++, C, C#, JAVA; other languages used include JAVASCRIPT, Visual Basic, LISP Windows, .net framework for Windows, and UNIX / LINUX / AIX / HPUX / RTOS / and other OS’s

C++: 2015 (C++11) on ; TI’s Code Composer Studio 6.2.0.00050 for Ubuntu 14.04 LTS; gcc and g++ (C++11) on Ubuntu; gcc and g++ (C++11) on Centos; gcc and g++ on Red Hat Linux (cross 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)); 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; gcc and g++ on various versions of linux

C: Microsoft Visual Studio 2015 (C99) on ; TI’s Code Composer Studio 6.2.0.00050 for Ubuntu 14.04 LTS; 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 10); CC on ATT UNIX System V; C on Berkley Unix; C on Wang 42X

Miscellaneous: .RS232, UART, NET Framework 4.6; TFS, SCRUM, Jira, ClearCase, XML, Coverity, Siebel, STL, Visual Studio, Metrowerks, , Visual Source Safe, , Subversion (SVN), StarTeam, CruiseControl.NET, Embedded SQL (from C, C++, and C#), Oracle, DB2, InstallSheild, SDLC (software development life cycle), OOA, OOD, OOP, SQL for Oracle, TSQL for MS SQL Server, UDB for DB2 on AIX, .NET 4.6, boost in C++11, multithreading, nant, make, gmake, mmake, cmake, imake, UML

PROFESSIONAL EXPERIENCE 3/21 – present: ASRC Federal through Data Intelligence Moorestown, NJ Software Engineer IV (Consultant) Fixing bugs for Lockheed Martin in legacy C++. Using GNU/Linux 2.6, g++ 4.9.2, clearquest 9.0.1, clearcase 9.0.1, gears 7.4.0, cmake 3.11.2, gedit. SECRET clearance.

11/19: Wabtec through Resolvit Erie, PA Software Engineer (consultant) Worked on fixing and optimizing Wabtec/GE Transportation tool software for building and loading embedded software for locomotives.

4/19 – 7/19: Nokomis through Mon-Valley Employment and Labor Services, Inc. Software Engineer (consultant) Pittsburgh, PA Worked on embedded tuner control software in C and C++ for an arm processor running a linux core with BusyBox. The build tool set is the Xilinx SDK on Windows 7. As the version of boost that we were using did not contain PropertyTree functionality, I implemented a subset of PropertyTree using the STL for reading, using, and constructing ini files. Some work using gcc, g++, make, and MSVC 2015. Source control was done using git.

8/18 – 12/18: General Motors through JDM Consulting Warren, MI Embedded Software Engineer III (consultant) Embedded work on Super Cruise using g++11 on SDV (Software Defined Vehicle). Porting new version to Adaptive AUTOSAR running on ubuntu. It was all embedded object oriented g++.

2/18 – 3/18: Bombardier Transportation Pittsburgh, PA Senior Software Engineer Worked on simulators for testing software for self-driving trains written in C# (w/ some C and C++).

12/17 – 1/18: Surface Mount Technology through American Contract Group Appleton, WI Software Engineer (consultant) Embedded work to control a gas range using C with TI’s Code Composer Studio 7.3.0 and HalCoGen 4.7.0 using Windows 10 for the TI Hercules RM42.

5/17 – 8/17: Astrobotic through System One Pittsburgh, PA Lead Flight Software Engineer (Consultant) Helped design flight software to control a space robot (the Peregine Lander). Initial port (proof of concept) was done using C and C++ with TI’s Code Composer Studio 6.2.0.00050 for Ubuntu 14.04 LTS. We were porting NASA’s cFE (core flight executive) and OSAL ( abstraction layer) to run on freeRTOS on the TI Hercules RM57L843ZWT.

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++ Test Framework (Google Test). Tools used included boost as part of C++11, Team Foundation Server (MS TFS), and Qt; work was done on Windows 7 using SCRUM.

2/16: Sensaphone, Aston, PA Software Engineer Design, development, and maintenance primarily in g++11 for Ubuntu precise (12.04.5 LTS) for remote monitoring and control systems. Tools used include git, 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 g++11 and git 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 assembler, 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 (consultant) Design, development, and maintenance primarily in C++11 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.

5/13 – 7/13: Hewlett-Packard, Nashville, TN Systems Engineer (consultant) 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. 2

10/12 – 4/13: PathGroup, Brentwood, TN Software Developer (consultant) Design, development, and maintenance primarily in C++ (MSVC 2012) for the .net framework on Windows 7 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. Application used MFC, OOA, OOD, OOP, and design patterns.

6/12 – 9/12: Emdeon, Nashville, TN Application Programming Analyst / Programmer IV (consultant) Design, development, and maintenance primarily in Pro*C/C for AIX of processing CMS-1500/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. Applications used MFC, OOA, OOD, OOP, and design patterns. Source Control was being migrated from Visual Source Safe to SVN.

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 applications 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++ , 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.

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.

3 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 , 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, 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 . Ported the API set to Windows CE for BPA’s use. This resulted in a $6 million sale.

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 4 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 Member of the Graduate Faculty 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 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).

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 Scientific 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.jpg

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