Sponsored by the National Science Foundation
the
Duke Computer Science Department
and Duke University
Positions include
Operating Systems, Robotics, Computer Architecture,
Tools for Automata Theory, Patterns, Web design/support
Programming in C++ and/or Java
(experience in Java is not necessary)
(must have taken CPS 100 or equivalent by summer, 108 preferred)
Deadline for application: March 2
Salary: around $10+ per hour (plus a few free pizzas)
10-12 weeks, flexible hours
Hiring 7+ undergrads!
The materials developed as part of this grant will be used at Duke and several collaborating institutions.
Operating Systems In the ARI cluster lab (third floor LSRC) we have modified our Unix kernels to log information about selected internal events to the network. A log server listens on the network and writes the log records into a large disk array. This produces a large database of detailed raw information about the internal behavior of the system. We can do this because the Myrinet network is so fast that logging consumes a relatively small share of network bandwidth. This allows us to collect information about the behavior of distributed systems as well, since they can function without the logging getting in the way. We place a logical timestamp in each log record so that we can impose an ordering on events occurring on different nodes. Anyway, the logs can be used as input to animation or visualization programs. The possibilities are endless.
Distributed Systems There is an opportunity to assist in producing a "Nachos" for the distributed systems class. The idea would be to build some Java programs that exercise various distributed systems principles, and use them as the basis for programming assignments in the class. There's lots of code lying around here and there that could be useful. For the initial assignments, it is not necessary to understand everything about distributed systems in order to prepare something worthwhile.
JOIE Graduate student Geoff Cohen has a system called JOIE that can be used to automatically instrument compiled Java code. It should be possible to use this tool to automatically instrument Java programs with code to do some basic animation (e.g., watch calls to selected methods, or operations on selected objects).
Reinforcement Learning Simulator/AI In this project, a student will create a graphic environment for demonstrating and experimenting with simple concepts from the field of reinforcement learning. This area, which has its foundations in dynamic programming, has been producing a series of highly promising results. An example result is the world's best backgrammon playing program, which was created by a program trained by reinforcement learning. The simulator I am imagining will use simple robot navigation using the robot lab in D215, LSRC.
Tools already developed include JFLAP, jeLLRap, and Pate (see http://www.cs.duke.edu/~rodger/tools/tools.html ). These tools are currently in use in teaching CPS 140. The positions for this summer include polishing existing tools, creating new tools for experimenting with proofs, and converting existing parsing tools over to Java.
For more information see send email to rodger@cs.duke.edu, or ola@cs.duke.edu or drop by.
DROOL = Duke-developed Resources for Object Oriented Learning
(not everything is object-oriented, but the acronym still holds)