Lutz Hamel


Asteroid the Programming Language

Check out Asteroid, a multi-paradigm programming language heavily influenced by Python, Lua, ML, and Prolog currently under development at the University of Rhode Island. Asteroid implements a new programming paradigm called pattern-matching oriented programming. In this new programming paradigm patterns and pattern matching is supported by all major programming language constructs making programs succinct and robust.

Here is a program written in Asteroid that iterates through a list until only a single element is left on the list printing out the values on the list,

  load "io".

  let list = [1,2,3].

  repeat do
      let [head|list] = list. -- head-tail pattern
      print head.
  until list is [_]. -- list pattern
Note the heavy use of pattern matching. Interested? Check out the Asteroid user Guide.

Projects: If you are interested in programming languages and are looking for projects we have both senior level projects as well as MS and PhD level projects, e.g.:

  • Asteroid syntax highlighter for the Atom editor.
  • Interactive shell similar to Haskell GHCi - loading modules, evaluating simple statements.
  • Implementing Asteroid with RPython.
  • A more efficient implementation of basic arithmetic operators that preserves the attach/detach semantics.
  • A comprehensive regression test suite/framework that also captures program output as part of the tests.
  • A new module system similar to Python's module system. The current module system is similar to C's module system where all entities in the modules become global entities in current name space.
  • Create an Asteroid distribution mechanism with PyOxidizer.
  • Libraries - we need powerful libraries to make Asteroid useful in many domains. are some ideas in no particular order:
  • IO library with formatted print and read statements
  • Regular expression library
  • System call library so that Asteroid can be used as a system scripting language
  • Data science library
  • Identify overlapping patters in with-orwith statements.
  • Implement case statement.
Among many others. The minimum prerequisite to undertake Asteroid projects is CSC301 or equivalent. Preferably you will have taken CSC402 or equivalent.

Education: Doctorate from Oxford University 1997.

Research Interests: programming language design, semantics, and implementation; computer and AI applications in music, art, and design; logic and logic programming.

Publications: here

Teaching (Spring 2020):
Programming for Data Science, CSC/DSP 310

Previously Taught Courses:
Fundamentals of Programming Languages, CSC301
Programming Language Implementation, CSC402/CSC502
Programming Language Semantics, CSC501
Topics in AI: Introduction to Machine Learning with Support Vector Machines, CSC581
Theory of Computation, CSC544
Models of Computation, CSC445
Programming Language Boot Camp
An Introduction to Artificial Intelligence with AI Game Development, CSC481
Theory of Compilers, CSC502
Discrete Mathematics, CSC/MTH 447
Foundations of Logic Programming, CSC491
Arduino Workshop at the AS220 in Providence
Cognitive Modeling, CSC592
Advanced Logic Programming, CSC491 Sec 9
Knowledge Discovery and Data Mining, CSC492/CSC592
Software Engineering, CSC305

Software Systems I am involved with:
Asteroid - A pattern-matching oriented programming language.
POPSOM - An R package for self-organizing maps providing advanced visualization and statistical quality measures.
GPX - Gene Phylogeny eXplorer for spectral genome analysis.
PentaPlot - a visualization system for phylogenetic content.
ErrorEngine - a system for automatic narrative evolution.
UCG-E - an equational logic programming system.
OBJ3 - an equational specification system.
TRIM - an abstract machine for order-sorted rewriting.

(c) Lutz Hamel, 2003-2018