If you wish to contact me about any of these papers or texts, you can send me email at firstname.lastname@example.org.
- A Framework for Teaching Programming Languages - Presented at SIGCSE 2015.
- Foundations of Programming Languages - Published with Springer in 2015. Support materials for this text may be found at http://cs.luther.edu/~leekent/plfoundations. This text incorporates a virtual machine implementation, compilation of a functional language, and type inference in a one semester course on Programming Languages.
- Data Structures and Algorithms with Python - Written with Steve Hubbard and published with Springer in 2015. This text covers both introductory and advanced data structures and algorithms topics.
- Python Programming Fundamentals - In 2015 I published a second edition with Springer Publishing of this successful introduction to programming. There are also accompanying video lectures available on YouTube.
- Programming Languages: An Active Learning Approach - In 2008 I published this textbook with Springer. This text has since been replaced by the newer Foundations of Programming Languages.
- Teaching Programming Languages through Language Implementation - In 2003 I presented this paper where I describe a series of projects that may be used to teach programming languages at the undergraduate level. This paper was presented at the Midwest Instructional and Computing Symposium at St. Scholastica in Duluth, MN.
- A Formally Verified Register Allocation Framework - In April of 2003 I presented this paper at the Third Workshop on Language Descriptions, Tools and Applications (LDTA 2003). This was a continuation of work done in two earlier papers on register allocation. This paper pulls a lot of the work done in the earlier papers together and adds to it.
- Postfix Transformations for Action Notation - In Peter D. Mosses and Hermano Perrelli de Moura, editors, AS 2000, Proc. Third International Workshop on Action Semantics, Amsterdam, Recife, Brazil, number NS-00-6 in Notes Series, BRICS, Dept. of Computer Science, Univ. of Aarhus, August 2000.
- Formal Development of a Minimal Register Allocation Algorithm - Technical Report 99-07, University of Iowa, Department of Computer Science, Iowa City, IA, 1999.
- Minimal Register Allocation - Technical Report 99-06, University of Iowa, Department of Computer Science, Iowa City, IA, 1999.
- Tuple Sort Inference in Action Semantics - In Peter D. Mosses and David A. Watt, editors, AS'99, Proc. Second International Workshop on Action Semantics, Amsterdam, The Netherlands, number NS-99-3 in Notes Series, BRICS, Dept. of Computer Science, Univ. of Aarhus, May 1999.
- Action Semantics-based Compiler Generation - Completed in 1999, my dissertation describes an Action Semantics-based compiler generator called Genesis. Genesis implements a richer subset of Action Semantics than had been previously attempted in AS compiler generators.
In conjunction with the Foundations of Programming Languages text I have developed CoCo, a virtual machine based on the Python Virtual Machine. CoCo is written in C++ and implements a subset of the virtual machine specification for Python 3.2. There are two versions of CoCo. A student version is available at http://github.com/kentdlee/CoCo. There is a more complete, private instructor version available upon request. If requesting access to the instructor version you must provide a GitHub userid and proof that you are an instructor.
I have also developed a compiler for a Small subset of Standard ML. The Small compiler is written in Standard ML and a type inference system for the language is implemented in Prolog. The student version is available at http://github.com/kentdlee/MLComp. There is a more complete, private instructor version available upon request. If requesting access to the instructor version you must provide a GitHub userid and proof that you are an instructor.