Rice Header 

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

 Copyright 2008 © Rice University