Nate Cronk, who is creating a dynamic software
integration test suite to support a centralized
production tool library for a large manufacturer
If you are interested in doing a research project
with me,
read more.
past undergraduate research projects include ...
Taylor Simington, who a dynamic scraping tool
on top of BeautifulSoup to support a specific
class of data science projects
Nathan Schmidt, who implemented a virtual machine
and debugger for a simple virtual machine
Autumn Lauen, who is studying the life and influence
of Ada Lovelace
David O'Brien, who is exploring the idea of technical
debt in machine-learning systems
Ethan Nelson, who constructed a home aeroponics system
and then implemented a web interface to control the
settings of the system remotely
Alec Arcand, who creating an intelligent program to
play blackjack and then experimented with various
search strategies
Drake Oswald, who designed a programming language
for doing linear algebra and implemented a compiler
for the language
C.J. May, who developed an alternative approach to
malware research by developing Jaws, a programming
language consisting of whitespace; implementing a
compiler for Jaws; and used Jaws programs to explore
design flaws in current antivirus models
Justice Adams, who investigated techniques for
preventing ROP attacks in LLVM-based compilers
(ROP = return-oriented programming)
Tyler Little, who implemented a system to compute
Elo ratings for NFL games and experimented with
parameters to improve reliability and to simulate
fivethirtyeight.com's ratings
Aaron Friel, who experimented with a way to
infer the types of effectful functions at
compile-time, in Haskell
Trevor Smits, who created a statistical model
for predicting the results of NBA games
Trent Morris, who created a genetic algorithm
to build a model for predicting the results of
NFL games
Anthony O'Dell, who analyzed comprehensive
play-by-play data from NBA games in search of
an effective measure of an individual player's
defense
Sean Fredericksen, who will create a language for
compiling a subset of Photoshop programs to HTML
Francisco Mota, who designed and implemented Fuga,
a homoiconic OO programming language
Joseph Winder, who is studied and implemented a number
of functional data structures
Shawn Sparks, who created MBCSS, a new class-based
language for scripting CSS
Derek Sellnau, who created an Android-based GPS system
for walking around the UNI campus
Kevin Shannon, who implemented a translator from a subset
of natural language to SQL
Nate Kemmer, who is implementing a Rails-based fantasy
baseball draft tool, including dynamic
revaluation of players based on draft
outcomes
Allyn Bauer, who implemented program to play Stratego,
an imperfect-information game
Paul Nadler, who implemented a scripting language for
players in his own on-line game
Kyle Lieber, who implemented a version of the department
web site using Ruby on Rails
Chuck Hoffman, who implemented software for manipulating
graphs and experimented with ideas such
the Small World phenomenon
Jessica Puls, who implemented an interface to GMail in
Ruby, which can be used to do e-mail from
a cell phone or the web
Alex Duzik (implemented a dynamic recompiler for
Mac Classic apps)
Jesse McGuire (implemented a web search tool that learns)
Ross Bohner (implemented a 3-D game)
Ryan Dixon, who is implementing a program for creating
custom fonts from a user's handwriting
Pat Burke, who working on natural language understanding
Derek Lawless, who built an XML/Java-based pattern
repository and search tool
graduate research projects by ...
Joshua Carroll
(tools for integrating complex product data
across many different sources)
Sameer Thajudin
(a genetic algorithm to learn play checkers)
recent graduate research projects include ...
Christian Schreiner
(analysis of process data in the management
of software development)
Zach Abbott
(a tutorial on mondas and functors)
Rabik Maharjan
(search and data representation for progressive chess)
Manish Shrestha
(enterprise software development)
Sergei Golitsinski
(tools for automatic generation of web content)
Patrick Burke
(case-based memory and natural language understanding)
Nathan Labelle (open-source software dependencies
and scale-free networks)
Shriram Ilavajhala (decision support for a GIS system)
If you are interested in working on an undergraduate or graduate
research project with me, I would be happy to meet with you to
discuss your ideas! Please take a look at
this information page
before coming by, to find out what my expectations are and to see
examples of projects I'd be interested.
Take a look at
Fred Zelhart's master's thesis
on an intelligent tutoring system he built. Fred was my first
grad student. I hope to post the work of my other past grad
students, including Mike Holmes and Tom Oleson, as times permit.
The work of students who finish in the near future will be
posted as it becomes available.
Previous Courses
Some of my previous courses are still available on-line:
820:140,
Environment, Technology, and Society
(capstone)
Scholarly Working in Teaching
My teaching in the last few years has primarily involved a
three-course rotation of Algorithms, Programming Languages,
and Compilers. I have also taught our second course, on
object-oriented programming, on a regular basis. I am teaching
our first course this semester for the first time in a decade,
and loving it!
As a part of my exploration of patterns,
I work on the discovery and use of patterns of programs in all of
my courses.