Dr. Walid Taha
Understanding Mathematica
Mathematica is a popular environment for performing numerical
and symbolic computation, and is used by almost two million
scientists and researchers. The goal of this project is
to analyze the makeup of Mathematica from the point of view
of programming languages theory. This project will consist
of, first, building a simple (albeit inefficient) implementation
of a core part of Mathematica. The next step will be to
derive a more efficient implementation by "staging"
the first one. The first step will involve a careful analysis
of the Mathematica language. The second part will involve
a careful analysis of how this language can be efficiently
implemented.
The project seeks a motivated Scholar that would like to
learn about Mathematica (look it up in google now!) and
be involved in the a research study to measure how well
some research ideas developed at Rice can be used to produce
better implementations of such languages. An interest in
math, programming and graphics would be a plus. The Scholar
will get a chance to learn what it's like to be part of
a team that is doing both software development and basic
research in computer science, and will be introduced to
tools such as concurrent version management and advanced
research ideas such as staging.
Super Circuits
Digital circuits are behind almost all computing devices
that we see around us today, and are basic high-level model
for what constitutes "hardware." Software, which
are instructions that run on top of hardware, can't usually
be viewed as circuits. As a result, software tends to be
harder to visualize and understand. In this project we explore
the implementation of a programming environment that supports
programming with Super Circuits, which are a hybrid concept
between software and hardware. The environment will allow
the programmer to view Super Circuits both as software and
as hardware. As such, it will be an ideal environment for
learning about both software and hardware.
The project seeks a motivated Scholar that would like to
learn about software, hardware, and be involved in the design
of an important research tool. An interest in programming,
graphics, and human-computer interaction would be a plus.
The Scholar will get a chance to learn what it's like to
be part of a team that is doing both software development
and basic research in computer science, and will be introduced
to tools such as concurrent version management and state
of the art programming languages like Ocaml.
The Fastest Turtle in the West
A programming language is any medium that we use to tell
a computer what to do. As our society becomes more dependent
on computers, there is more need for expressive, flexible,
and safe programming languages. The goal of this project
is to develop an educational programming environment for
teaching programming language design and implementation
techniques to beginning undergraduates. As an example, we
will use a Turtle Graphics language, which features a Turtle
(drawn as a little triangle) that starts in the middle of
the screen. The language contains commands such as move
forward, turn left, turn right, and some commands for repetition.
This simple language turns out to be quite expressive, and
is specially will suited for drawing fractals.
The project seeks a motivated Scholar that would start
by using an implementation of Turtle Graphics developed
at Rice, and then be involved in the preparation of educational
materials. Thus, having a passion for learning, teaching,
and writing would be plus. The Scholar will learn what it's
like to be part of a team that is doing both software development
and basic research in computer science, and will be introduced
to tools such as concurrent version management and state
of the art programming languages.
The Monty Python
Python is a popular scripting language that has been used
for a wide variety of applications, including web applications,
scientific applications, game development, and many more.
This project has two goals. The first is to explore the
possibility of new implementation techniques to quickly
build a compiler for Python. The second and more interesting
goal will be to explore the design and development of extensions
to Python, and in particular partially static typing.
The project will provide the Scholar with an opportunity
to master the Python language as well the typed functional
language Ocaml. To succeed in the project, strong mathematical
skills are required, and in particular, the ability to develop
rigorous mathematical proof. The Scholar will get a chance
to learn what it's like to be part of a team that is doing
both software development and basic research in computer
science, and will be introduced to tools such as concurrent
version management and advanced research ideas such as staging.
Contact Information
|