Jeffrey A. Meunier

87 Ruby Rd, Apt 20
Willington, CT 06279

University of Connecticut
Computer Science & Engineering
191 Auditorium Rd. U-3155
Storrs, CT 06269
(860) 486-3719 (department)

E-Mail: jeffm@cse.uconn.edu
WWW: http://www.engr.uconn.edu/~jeffm


Sections


Current Status

Ph.D. student at the University of Connecticut in the department of Computer Science and Engineering.


Research Interests

Ph.D. proposal title: Adaptive Acceleration of Functional Programs using Reconfigurable Logic Devices

Current research in programming language design and implementation, adaptive computing, functional programming; concurrent, networked, and distributed programming; virtual machines, mobile programs.


Fellowships

Teaching fellowship
University of Connecticut
Spring semester 2001

Received fellowship to teach UConn CSE240 Intermediate Computer Systems.

Taylor L. Booth Memorial Scholarship
University of Connecticut
November 2000

Award based on effort, excellence, and experience in teaching.

Teaching fellowship
University of Connecticut
Spring semester 2001

Received fellowship to teach UConn CSE240 Intermediate Computer Systems

Teaching fellowship
University of Connecticut
Fall semester 2000

Received fellowship to teach UConn CSE230 Introduction to Software Engineering.

Teaching fellowship
University of Connecticut
Spring semester 2000

Received fellowship to (re)develop and teach UConn CSE240 Intermediate Computer Systems. This course historically has used Intel-based computers and Microsoft-based operating systems to teach students about low-level programming. This was replaced by the use of a virtual machine for a modern RISC processor (the MIPS processor), written in Standard ML of New Jersey. Each student developed and programmed his or her own VM as a semester-long project.

NASA Connecticut Space Grant Consortium
June 1 - August 31, 1999

A Functional Distributed Agent Application Development Platform for Large Scale Image Processing
This project provides a means for easily developing efficient programs for processing of images from airborne and satellite-based imaging devices. Intent is to make large scale image processing distribute automatically across network nodes, and to make it accessible to non-programmers and non-scientists. The project is implemented in Standard ML of New Jersey and provides functional programming features at the level of both the VM instruction set and a high-level language targeted at the VM.


Publications

A Virtual Machine for a Functional Mobile Agent Architecture Supporting Distributed Medical Information
Presented at the 11'th IEEE Computer Based Medical Systems conference, June 18-20 1999, in Stamford, CT.

Design and Implementation of a Lazy, Memoizing, Purely Functional Scheme Interpreter Written in Java
Master's Thesis, University of Connecticut, Storrs, CT, December 1998.

Programming Experience

Functional Programming
Haskell programming for the Yale Haskell group. Forms-based CGI controlled program for the U.S. Census bureau.

NASA Connecticut Space Grant project (see Fellowships).

Master's project is a purely functional Scheme interpreter written in Java providing lazy evaluation, automatic memoization, function currying, named arguments, sockets, graphics, and some image processing functions (see Publications).

Completed two independent study courses in functional programming at the graduate level. Haskell programs were written to investigate how functional programming applies to time dependent planning and computability theories. The lambda calculus was studied.

Completed independent study course in virtual machines for distributed functional programming. Byte-coded VM was implemented in Scheme.

Industrial Control
Created real-time multitasking industrial control application to run under MS-DOS, for small rocket engine power lever servo-motor actuator test stand. Directly and simultaneously accesses (using multi-threading) PC's keyboard controller, video memory, 4 serial ports, hard disk, magneto-optical disk, and printer. Interfaces with Daytronic System 10K6 data conditioning and signal control computer.

Upgraded existing PLC system on a turbine engine fuel injector nozzle test stand with PC-backplane replacement control system. Increased system's closed-loop stepper-motor steady state response speed from 2.5 minutes with the PLC to 15 seconds with the PC system.

Assisted development of software to test high-speed automotive network controller, working closely with hardware and firmware developers (in Germany).


Languages

Haskell
SECD-based state machine for CGI control, XML parsing, and HTML generation. Time-dependent planning, Turing machine simulation, many programs to solve problems in abstract algebra. Virtual machines.

ML
NASA Connecticut Space Grant project developed in ML (see Fellowships). Developed and taught course in functional programming which used ML exclusively (see Teaching Experience). Developed and taught course in which students implemented and applied a virtual MIPS computer in ML; uses concurrency and sockets.

Erlang
Virtual machines for distributed cluster and grid computing.

Java
Master's project is a functional Scheme interpreter written in Java. Features include lazy evaluation, automatic memoization, function currying, named arguments, sockets, graphics, concurrency, and some image processing functions.

Scheme
AI programming for senior undergraduate project: explanation-based generalization. Other projects include symbolic differentiation, natural language parsing and generation, all aspects of functional programming including a lambda calculus evaluator (see Papers). Genetic programming.

C/C++
Concurrent programming, socket programming, industrial control, Scheme interpreter, virtual machines.

Perl
System administration applications and tools under Solaris and Linux.

80x86 Assembly Language
Controller-level I/O, interrupt programming, multitasking, classroom demonstration examples including argument passing on the stack, file I/O, and 80x87 FPU RPN calculator.

MIPS Assembly Language
Examples to demonstrate MIPS virtual machine, including interrupt programming and multitasking.

ARM Assembly Language
Examples to demonstrate ARM virtual machine, including interrupt programming and multitasking.

Visual Basic
Scheme interpreter, system control and data acquisition.

German
Can read, speak, and write German to a conversational capacity.

To a Lesser Extent, but still significant
FORTRAN, Smalltalk, Forth, Pascal, Prolog, Ada, Oracle/SQL.

Operating Systems

Unix, Linux
System administration and technical support for School of Engineering's Unix network of Sun/Solaris, PC/Linux and Digital Alpha machines. Responsibilities include problem diagnosing and correcting, system installation and configuration, shell programming, advising users, file backups and restoration. Familiar with Solaris and SunOS.

Use Linux exclusively at home on 10Base-T network. Have used Slackware, Unifix, all versions of RedHat from version 5. Networking, file sharing, socket programming, FTP and web serving. Master's project is in Java developed on a Linux system. Low-level programming in C/C++.

Windows 95, 98, NT
Familiar with use, setup & configuration, and programming with these operating systems.

OS/2 2.1 & Warp
Installation, configuraition, developed a Presentation Manager-based industrial control program.

MacOS 8.5
Familiar with use and configuration.

VMS
Set up and configured a MicroVAX 2000 minicomputer. VMS script programming in Rexx, some C programming.


Teaching Experience

Instructor: Computer Organization (UConn CSE243)
One lecture section, 38 students, Spring, 2002, University of Connecticut
CPU and system architecture, RISC/CISC, microcoding, pipelining, assembly language programming.

Instructor: Introduction to Software Engineering (UConn CSE230)
One lecture section, 16 students, Summer session 2, 2001, University of Connecticut
UML, Software lifecycle models, object-oriented programming, network and GUI programming in Java.

Instructor: Computer Network and Distributed Processing Programming (ECSU CSC338)
One lecture section, 15 students, Summer session 2, 2001, Eastern Connecticut State University
Practical issues in concurrent, networked, and distributed programming. Message passing, speculative evaluation.

Instructor: Network Essentials (ECSU CSC337)
One lecture section, 15 students, Summer session 1, 2001, Eastern Connecticut State University
Detailed analysis of each layer of OSI protocol stack, TCP/IP and UDP/IP communication, network programming in Java.

Instructor: Intermediate Computer Systems (UConn CSE240)
One lecture section, 55 students, Spring 2001, University of Connecticut
Course dealt with microprocessor architecture and low level programming. Haskell was used to create an emulator of a modern RISC processor (the ARM microprocessor) and its external devices. Topics included instruction sets, instruction encoding/decoding, memory, interrupts, and exceptions, concurrency, network programming.

Instructor: Introduction to Software Engineering (UConn CSE230)
Two lecture sections, 80 students, Fall 2000, University of Connecticut

Instructor, course re-developer: Intermediate Computer Systems (UConn CSE240)
One lecture section, 48 students, Spring 2000, University of Connecticut
Taught a course in microprocessor design and low level programming. ML was used to create an emulator of a modern RISC processor (the MIPS microprocessor) and its external devices. Topics included memory and caches, interrupts and exceptions, concurrency, network programming.

Instructor, course developer: Functional Programming (UConn CSE298)
One lecture section, 8 students, Spring 1999, University of Connecticut
Developed and taught an advanced undergraduate course in Functional Programming. ML was used to create interpreters, compilers, and virtual machines to explore representation and evaluation of functional programs. Topics included monads, lambda calculus, and combinators.

Teaching assistant: Unix and C++
Two lab sections, Summer 1997, University of Connecticut

Teaching assistant: Assembly language
Two lab sections, Spring 1997, University of Connecticut

Teaching assistant: Logic design laboratory
One lab section, Spring 1996, University of Connecticut

Tutor: Probabilistic Performance Analysis of Computer Systems
Spring 1996


Education History

University of Connecticut (Storrs, CT)
January 1999 - present
Ph.D. student in the department of Computer Science and Engineering. Research in grid computing, distributed computing, virtual machines, functional programming, distributed mobile agent computing.

University of Connecticut (Storrs, CT)
September 1995 - December 1998, Master's Degree in Computer Science
Classes included networks and distributed systems, statistical computer network queue modeling, advanced software engineering, superparallel/superpipelined processor architecture, automata theory, abstract algebra, autonomous robots. Research in functional programming, mobile software agents.

Student Foreign Exchange Program
July 1996 - December 1996
Six-month exchange program between UConn and the Fachhochschule Regensburg in Germany.

Rensselaer Polytechnic Institute (Hartford, CT branch)
January 1994 - April 1994
Graduate level night course (while employed by Bauer Aerospace) in object-oriented programming in C++ for Microsoft Windows 3.1. Learned model/view/controller paradigm, ``programming by contract'' using assertions.

University of Connecticut (Storrs, CT)
September 1987 - May 1991, BSE in Computer Science and Engineering
Software: AI, symbolic computation, assembly language, multitasking operating systems, language compiling, numerical analysis, database systems.
Hardware: analog and digital circuit design and analysis, RISC/CISC microprocessor theory, microcode analysis.

Lehigh University (Bethlehem, PA)
September 1986 - May 1987, Engineering major.

Employment History

University of Connecticut (Storrs, CT)
January 2001 - Present
Instructor for CSE240 Intermediate Computer Systems

September 2000 - December 2000
Instructor for CSE230 Introduction to Software Engineering

January 2000 - May 2000
Instructor and course re-developer for CSE240 Intermediate Computer Systems.

May 1997 - May 1999, August 1999 - January 2000
System administration and technical services for School of Engineering network. User support, Unix workstation support.

May 1999 - August 1999
Fellowship-funded research, see Fellowships.

January 1999 - May 1999
Developer and lecturer for CSE298 Functional Programming (see Teaching Experience).

January 1996 - May 1996, January 1997 - July 1997
Teaching assistant for CSE230 (Software Engineering with C++) and CSE240 (Intermediate Computer System Laboratory: assembly language on Intel x86 architectures), research assistant for web-based learning.

Yale University (New Haven, CT)
January 2000 - August 2000
Systems programmer for the Yale Haskell Group. A Haskell program was developed to provide a web-based program for census taking (sub-sub-contracted from the U.S. Census Bureau).

Siemens (Regensburg, Germany, automotive electronics and microchip fabrication)
October 1996 - December 1996
Part of student foreign exchange program. Software engineering for program to test automotive network controller and controller firmware (Pascal).

Independent Contractor
May 1995 - June 1995
Software engineering and maintenance (C/C++), and documentation.

Bauer Aerospace (Avon, CT, capital equipment OEM for aerospace and cleaning industry)
Now called Bauer Howden, Inc.
August 1992 - May 1995
Software engineering and maintenance for industrial control (C/C++, assembly).

Industrial Strength Systems (Pawcatuck, CT, software engineering services)
December 1991- May 1992
Software engineering for industrial control (C/C++), database programming (dBase II/III), PLC device driver development.

Pfizer (Groton, CT, chemical and pharmaceutical manufacturing)
Summer and winter vacations, 1988 - 1991
Database design and programming (dBase II), network installation and configuration, AutoCAD configuration and customization.

Organizations

IEEE
Student member.

Adaptive and Embedded Systems Research Group
Co-founder; research in adaptive/reconfigurable computing systems for functional programming and consumer electronics devices.

UConn GRID Computing Lab
Member. (GRID Computing Lab home page)

UConn Dynamic Computing Research Group
Founder, organizer, and web designer. (DCRG home page)

UConn Mobile Autonomous Software Agent Research Group
Founder, organizer, and web designer. (MASA home page)

Unpublished Papers

Function Currying in Scheme (10KB HTML)
A short paper describing how to implement function currying in Scheme, and some examples of how it can be useful.

Functional Programming (43KB HTML)
Written as a summary of one semester independent study in functional programming. Discusses issues such as function currying, delayed evaluation, and referential transparency.

Graph Reduction Machines (11 pages postscript)
Discusses the current state of the art in researchers' attempts to implement efficient evaluation environments for functional programming.

Lambda Calculus (18 pages postscript)
The basics of the lambda calculus are discussed, its significance to everyday programming, and source code and examples of a lambda calculus evaluator written in Scheme.