Potential Student Research Projects
with Dr.
Frank
for Senior Projects,
Individual Study, or Graduate Research or Thesis Work
Note that these are only suggestions; I am happy to supervise students'
work on their own project ideas as well. However, all projects must
follow my general student project guidelines,
and follow something similar to my generic project
plan. Also, here is a list of presently-
and previously-active
projects I've supervised
and the students who have worked on them.
Internet applications:
Programming projects:
Embedded systems:
Hardware research:
Algorithms research:
Computer science theory:
Develop a web-based system for posting & peer
review of preprints of academic research articles.
There are sites (arXiv.org) that specialize
in posting of academic preprints before they see print. There are
sites that focus on indexing citations to articles, either those published
in journals (WebOfScience.com)
or on the web (ResearchIndex.com).
There are sites that allow people to post reviews of material (Amazon.com),
and to rate each other's reviews and comments to filter out the chaff (SlashDot.com,
Plastic.com).
What about a site that combines the best features of all of these sites?
I.e., (1) Researchers can post their technical articles to the site.
(2) Articles are automatically submitted to researchindex.com or to our
own similar service, where they are hyperlinked to articles they cite,
and to articles that cite them. (3) People can post positive or negative
reviews (text or technical documents) of posted articles. (4) Logged-in
users can rate reviews themselves positive or negative to help eliminate
the chaff. A review's average rating would determine its relative
impact on an article's rating. Reviews can reply to other reviews.
(5) Viewers can elect to see only articles & reviews that exceed a
certain threshold of (p+1)/(p+n+2). Such a site could become widely
used in the EE/CS community, which currently lacks a comparable, widely-used
service. Faculty in the CISE and ECE departments could help promote
use of the site in the wider community.
Contribute to the open-source effort
to develop MathML support for Mozilla
SUMMARY: The web is very promising as a teaching medium, but currently
it still lacks adequate support for the presentation of highly mathematical
material. Most browsers only support the presentation of complex
mathematical formulas using either embedded images or Java applets.
The former is not sufficiently flexible (the embedded images aren't scaled
to match font sizes with surrounding text, and their content isn't structured
to support selection and hyperlinks), and the latter is often too slow
to load or suffers from other problems. MathML
is a web standard for embedding math formulas in XML documents, which is
intended to improve the situation. However, it is still not widely
supported by most browsers. The open-source netscape-related browser
Mozilla has an ongoing project
to support MathML, but last I checked it did not seem to stably support
all MathML presentation and editing features. I think it would be
a great project for a student to try diving in to the Mozilla effort and
help add features to the MathML browser/editor implementation. This
project will help the student learn to work within the open-source development
paradigm, as well as to use the specific technologies involved. The
results of this project will be useful for the web-based
teaching project below.
SKILLS: C++ development experience required; experience with
open-source development would be helpful.
Help improve web-based courseware for skills-based
learning
SUMMARY: For her Spring '01 Senior
Project, Cindy Kwok is building a web-based framework for skills-based
learning in any topic area. The idea is that anyone can log on to
the web site (once it is working) to design a course or a set of related
courses (in any subject area), having inter-linked topics, subtopics, and
skills, and associated resource material and exercises. Students
can log on and work their way a course, with the system tracking which
specific topics and skills each student has mastered. Students can
be grouped into "classes" which are associated with specific topics, grading
criteria, deadlines, and institutional course-grade transcripting.
Cindy's design & implementation presently under development (based
on Perl/CGI) will probably not achieve all these goals to perfection.
A great follow-on project would be to extend Cindy's system to achieve
more of the desired features, or to reimplement it using a different base
technology. A particular feature of interest is a framework to support
dynamic generation of new random exercises and solutions (of specific types
coded by the course designer). Also there is an opportunity for graduate
students and others to begin work on actually developing real course materials
based on this system.
SKILLS: Experience with some dynamic web technologies (e.g.,
CGI, JavaScript, DHTML, ASP, servlets, etc.), some databases (e.g.,
Sybase, Oracle), and some appropriate programming languages (e.g.,
Perl, VBScript, Java, etc.) would be very helpful.
Create a free public meeting-scheduling tool on
the web
SUMMARY: It seems like I am constantly exchanging schedules
with people via email (very inefficiently) to try to find times when
I and one or more other people can all meet together to discuss a project.
Wouldn't it be great if there was a database-backed web site that I (or
anyone on the web) could use to in order to do the following things?
-
Input my password-protected schedule, including both weekly and one-time
events, via interaction with a graphical scheduling grid (similar to the
PalmPilot's schedule interface), either as an HTML/JavaScript CGI or ASP,
or a Java applet.
-
Publish my schedule for anyone to look at.
-
Input lists of email addresses of "groups" of people associated with a
particular project.
-
Ask the system to "schedule a meeting" (either one-time or repeating) to
include a given list of people (specified by their email address).
The system emails all the people in the group, requesting them to input
(or update) their own personal schedules on the system so that a meeting
time can be found.
-
After all the group members have responded (or the meeting organizer runs
out of patience and presses a "schedule meeting now" button), the system
automatically finds the soonest available time fitting everyone's schedules,
and emails everyone in the group to inform them about the time of the meeting.
Or, if there is no overlap, the system sends a grid showing which people
have conflicts at each time, and someone can drop out of the meeting or
rearrange their schedule, or the organizer chooses a time with the fewest
conflicts.
-
As the meeting day/time approaches, the system sends email reminders about
the meeting to the group members.
The Yahoo calendar system does some of this but not all. Perhaps
something else like this exists somewhere out there already, but if so
I haven't seen it yet. Anyway, it's an excellent exercise for programming
a database-backed web application. And it would be a very useful
tool for all us busy people in the department to use to organize our meetings.
SKILLS: Java or CGI/HTML/Javascript. Relational DBMSs.
Improve software for a general-purpose distributed
computing market.
SUMMARY: This is a major ongoing multi-semester, multi-student project
(homepage: http://www.cise.ufl.edu/research/ocean/).
Its goal is to develop a fully functional infrastructure supporting the
automated, commercial buying and selling of dynamic distributed computing
resources over the internet. The idea is that anyone with spare cycles
should be able to deploy an OCEAN server which can run other people's computing
tasks for a fee, and any developer should be able to easily write a distributed
application which any user with a credit card number should be able to
deploy in distributed fashion using as many suitable OCEAN servers as they
can afford to rent for their particular purpose. XML is used as the
basis for a standardized language describing the requirements of particular
OCEAN jobs and the corresponding capabilities of OCEAN servers. A
distributed, peer-to-peer double-auction mechanism is used to ensure that
jobs are automatically contracted out to the cheapest suitable available
bidders, and that OCEAN servers automatically contract themselves out to
run the highest-paying available jobs. Java is currently used as
the basis for cross-platform job-migration, although we foresee perhaps
eventually supporting other languages. There is still much work to
be done on OCEAN in terms of refining the design and extending the implementation.
Also, example applications need to be developed as part of a collaboration
with the AeMES department. Also, work needs to be done to integrate
OCEAN with existing electronic payment systems. Protocols and tools
are needed to help the operators of server and client systems to observe
the activity of the computation market and set prices appropriately.
SKILLS: Must know Java programming, have some knowledge
of client-server models and distributed computing.
Improve or reimplement a local used-item web auction
service.
SUMMARY: Two groups of students have designed and implemented web
services (buyitused.net and gatorxchange.com) to allow people to easily
buy and sell used furniture (and other household items) from/to other people
nearby. Sellers input items, prices, location, and contact info;
site allows buyers to easily search for desired items ideally sorted by
price and/or distance from their own location. (This service would
be especially ideal for college towns, where people are frequently moving.)
A good team project.
Possible extensions to the work already done include:
-
Process zip code location data for the entire U.S.
-
Improve sophistication of auction mechanism and support for transactions.
-
For Business School (CIS or DIS) students: Help figure out the Marketing
and Business Plan aspects of the site.
-
Improve scalability of the site to high traffic loads, work out redundancy
mechanisms for reliability.
-
Try porting the site to a Unix server platform.
These sites are close to being ready to go live, and if any of them are
successful, they can later be spun off as an e-business.
SKILLS: HTML, Microsoft IIS, VBScript, Perl, networking, CGI,
etc.
Create web-based project management software (supporting
Gantt charting, etc.).
SUMMARY: This basically means: Create a simplified but free analogue
of Microsoft Project that anyone can use for collaboration via the web.
Some pet features: Should support dependencies between tasks, deadlines
& other contraints, tracking of task completion, repeating tasks, and
balancing of time spent on different categories of activity. Should
support Gantt chart, as well as daily, weekly, monthly views. Should
support views restricted to a single user's tasks, and multiple project
views, and tasks color-coded by project or work gategory.
SKILLS: Prior experience with implementing dynamic database-backed
web services is strongly recommended. Previous experience using MS
Project and/or other computer-based scheduling tools would be helpful.
Implement space-efficient reversible simulation
of irreversible algorithms.
SUMMARY: The program should preferably take as input a byte code
for a pseudo-machine language (virtual machine), preferably one that can
be generated by GCC (so that ordinary C language input programs can be
used). (Java byte code is also possible but more difficult.) The
program should then interpret that program reversibly using Bennett's 1989
algorithm (which Dr. Frank can provide), either with a small-polynomial
time factor and a logarithmic space factor (with various choices of polynomial),
or with linear time and quadratic space (thereby exercising different variants
of Bennett's algorithm).
NOTES: The program should be implemented to be as
time-and space-efficient as is feasible. The program should be exercised
on example input programs having various run times, and the correctness
and reversibility of its operation should be verified. Also, data
should be collected and graphed showing the space and time requirements
for the reversible simulation as a function of the input program's space
and run-time, thereby verifying the theoretical predictions from the asymptotic
analysis of the algorithm.
SKILLS: ANSI-C/C++ programming, good analytical and programming
skills
Develop algorithms for large-scale, massively
parallel supercomputers.
SUMMARY: Choose and learn about a highly compute-intensive application
area that historically has motivated the development of large-scale, massively
parallel supercomputers, and design an efficient, physical scalable algorithm
for solving the problem.
NOTES: For example, physics or engineering simulations,
or some compute-intensive mathematical, combinatorial search, or optimization
problems. (The application area should be one in which overall application
performance is limited by the speed of the machine, rather than by I/O
bandwidth limitations.) Become familiar with the primary computation
algorithms used in that application area. Then, design an efficient
physical
algorithm for performing the same computational task as the standard algorithms,
under a computational model (such as the R3M) that captures the constraints
from physics listed in project 3 above. Compare the theoretical asymptotic
performance of your algorithm to that of physical realizations of the standard
algorithm. Again, a quantum model may be used if desired, but this
is optional. (For many applications, it may be too difficult
to find a quantum algorithm that is significantly better than one could
do classically.)
Improve reversible quantum mechanics simulations in
Java.
SUMMARY: Study & learn about existing low-level, reversible
quantum mechanics simulations. Dr. Frank has one simple example in
C, another student wrote a Java version. Learn about the more sophisticated
tools that real physicists use to simulate their theoretical models.
Then, improve the Java implementation of a visual, graphical quantum mechanics
simulator for 1-D, 2-D, and (later) 3-D quantum systems with small numbers
of particles. The program should use reversible computing techniques
to ensure numerical stability of the simulation. We'll put it on
the web.
SKILLS: Some prior knowledge of Java AWT programming and quantum
mechanics would be helpful.
Implement reversible algorithms for various tasks.
SUMMARY: Using the R language or other reversible programming system,
implement efficient reversible algorithms for a variety of interesting
computer science problems. Tasks of particular interest include:
-
All-pairs-shortest-path graph problem. This is an example of a problem
for which the best reversible algorithms may have a very different structure
from the best irreversible ones.
-
Data compression algorithms. This is potentially useful for reducing
the temporary memory usage of reversible algorithms, or the amount of entropy
generation in irreversible ones.
-
Computer game-playing algorithms (e.g., minimax). This one seems
a particular challenge to do efficiently with a reversible algorithm.
SKILLS: Familiarity with the relevant traditional (irreversible)
algorithms would be helpful.
Create a GUI for a MIPS simulator written in Java.
SUMMARY: For his Masters thesis project, grad student Steve Lewis
<slewis@gnv.fdt.net> is building a MIPS simulator in Java suitable for
use in COT3100, incorporating state-of-the-art reversible debugging features.
A good senior project would be to build a well-designed interactive GUI
for Steve's simulator.
SKILLS: Prior experience with Java, AWT, Swing, and some Java-GUI-building
visual IDE is strongly recommended for this project. (You
don't want to do the GUI coding by hand.)
Create a Java applet to simulate & visualize
adiabatic circuit operation.
SUMMARY: We have designs for reversible, fully-adiabatic logic
gates composed of CMOS transistors, but their cycle of operation is somewhat
complex and difficult to visualize given just a textual description.
We would really like to have an animated, graphical Java applet that would
allow the user to interactively run through the cycle of operation on circuit
schematics. Color can be used to indicate voltage, and transistors
should be marked "on" or "off". Users can select from several circuits
to demo. A more advanced version of the program would allow users
to edit the circuit schematics and timing diagrams to build and test alternative
designs.
SKILLS: Java AWT experience helpful.
Create a Java applet to simulate & visualize
quantum computing algorithms.
SUMMARY: Write a Java applet to graphically display the dynamic
state of quantum computing algorithms, such as the Shor algorithm.
States can be arrayed in 2-D, and complex phase/amplitude can be indicated
by color hue/intensity. Each individual quantum gate operation of
the algorithm should be simulated and its effect dynamically displayed.
User can pause/continue/reverse/reset the execution, and select inputs.
SKILLS: Java AWT experience helpful.
Improve a compiler for a reversible programming
language
SUMMARY: During my Ph.D. work, I wrote a simple compiler for a reversible
high-level programming language of my own design called R. The compiler
and language are both in a rather primitive state, and many more language
features and optimizations are desired. The result of this project
would be used in various future projects to design, implement and test
reversible algorithms for various problems.
SKILLS: Fluency in the Common Lisp programming language
and experience in compiler writing would both be very helpful. Knowledge
of C is also helpful.
Perform Experiments using Nuclear Magnetic Resonance
(NMR) Techniques to Implement Quantum Algorithms
SUMMARY: Use information from independent and laboratory research
documents to implement quantum algorithms using NMRtools. We will
provide the apparatus necessary for performing the experiments including
chemical samples, the superconducting magnet, and signal generation/sampling
devices. The student will write software to drive these experiments
using C/C++. Contact Michael
Bidzos <mbidzos@ufl.edu> for more information.
SKILLS: C/C++. Basic understanding of vector and
matrix algebra and complex variables helkpful.
Design & implement a prototype for a DSL modem
that supports multiple simultaneous voice phone lines over a single DSL
line.
SUMMARY: This is an IPPD
project for Siemens corporation to design a board that incorporates an
existing DSL chipset and existing Siemens telephony circuitry into a single,
inexpensive product that supports data transmission & ~5 simultanous
voice conversations over a single DSL line. The product should be
suitable for home use and compatible with the correponding central-office
equipment currently being designed by Siemens. This is a 2-semester
project which is follow-on to a 2000-2001 IPPD team which accomplished
the beginnings of this integration process.
SKILLS: Student must qualify for IPPD
and should preferably have experience with either or both of: (1) embedded
microprocessor programming in C, and (2) FPGA programming using VHDL.
Develop innovative control software for autonomous
mobile robots.
SUMMARY: This is more of an open-ended suggestion than a specific
project idea. I have a Lego Mindstorms robotics kit, and there is
software available on the web that allows one to program these robots in
Visual Basic or C. I also have a book of Mindstorms projects.
I think it would be a reasonable senior project or undergraduate individual
study for a student to build & program a Mindstorms robot, if the student
developed significant new architectural or algorithmic contributions.
Some more specific ideas for functionality of the robot include:
(1) Program the robot to explore a given region of floor space, building
an internal map through dead-reckoning, landmark recognition, and statistical
alignment of internal maps with data. (2) Program an open-ended "exploration"
behavior by using a recurrent neural-network technique I designed at Stanford.
(3) Similar to #2, but using genetic algorithms rather than neural nets.
(4) Program interesting interactive sets of behaviors using Brooks' subsumption
architecture. (5) Develop a vision-based navigation system (requires
you buy vision kit).
SKILLS: VB or C programming, prior experience with embedded systems
programming helpful, AI course helpful, owning your own Mindstorms kit
is preferable.
Assist in writing up scaling analysis of adiabatic
circuits.
SUMMARY: To be written.
SKILLS: To be written.
Design a low-power, adiabatic floating-point unit.
SUMMARY: Design the circuit schematics and VLSI layout for a floating-point
arithmetic processing unit that is designed using the principles of adiabatic
(asymptotically thermodynamically reversible) digital circuits to operate
with significantly less energy dissipation per operation (by an order of
magnitude or more) than conventional designs. (I will teach you what
you need to know about adiabatic circuits to do this.) I have a general
high-level design approach in mind, but you will need to work out the details
of implementing the specific functional blocks and putting them together.
SKILLS: Digital logic design experience with VHDL, SPICE, Cadence
and/or other design tools helpful.
Design a high-Q electrical power supply for adiabatic
circuits.
SUMMARY: Design circuit schematics, choose components, and build
a resonant power supply that can produce a fairly precise trapezoidal-shaped
voltage waveform with very high Q (long energy decay time, in cycles),
~1000 or more.
SKILLS: A challenging project. AC circuit design experience
needed. Experience with circuit design and simulation tools needed.
Design MEMS-based power supply for adiabatic circuits.
SUMMARY: Design and implement an efficient energy-recovering power
supply using Sandia National Labs' 5-layer MEMS process. Requires
good engineering analysis of both electrical and mechanical characteristics
of the component. (A good candidate for a team project.) We'll
use Sandia's CAD tools to design the element, and send it to them to fabricate.
Improve MEMS design tools.
SUMMARY: Work with Sandia National Labs to improve their CAD design
tools for MEMS system design. This is a good candidate for an IPPD
project which Sandia has expressed some interest in.
Optimize thermodynamically reversible circuits.
SUMMARY: Write a program (or do a mathematical analysis or invention
by hand) to find the simplest possible fully thermodynamically reversible
(energy-conserving) logic gate circuit based on standard digital devices
(such as CMOS transistors).
WARNING: This one may be too hard. First, there might be
no solutions to this problem that are simpler than the simplest solution
that is currently already known. Even if there are simpler solutions,
it may be intractable to find them with an automatic search. A solid
man-month of research work (and several solid days of CPU time) have already
been spent on this problem without exhausting the search space or finding
a significantly simpler solution.
Study superconducting logic technologies.
SUMMARY: Learn about RSFQ (Rapid Single Flux Quantum), a very fast
superconductor-based digital logic technology. Write a report to
survey and explain the basic principles, operation, and design methodology
behind RSFQ logic circuits. Design some simple RSFQ circuits.
Also, learn about the related superconducting logic technologies that are
thermodynamically reversible, and the pros and cons of those techniques.
If the cons seem serious, try to come up with a reversible variant of RSFQ
(based on the same or a similar underlying device technology) that avoids
some of the problems associated with the earlier reversible superconducting
technologies.
NOTE: This one has already been done once by another student
(Erik Island) for a senior project, but could possibly be done again more
thoroughly by another student with more background in the physics of superconductors.
This project is difficult and is probably best for a graduate student with
a co-advisor in physics or electrical engineering.
Design programming language for expressing physical
algorithms.
SUMMARY: Design a prototype programming language that is tailored
for expressing efficient "physical algorithms", that is, algorithms under
a computational model that reflects the computational constraints of physics,
such as a reversible 3-D mesh (R3M) model.
NOTES: The constraints (and features of the R3M model)
include:
-
Only 3-D spatial connectivity between processing elements.
-
Finite speed of propagation of information through space.
-
Finite capacity for information per unit volume.
-
Finite bandwidth between neighboring processing elements.
-
Information cannot be simply destroyed; instead must be reversibly "uncomputed"
or else physically removed from the interior of the machine.
-
If desired, the model studied can also allow quantum-coherent operation,
but this is optional. (Quantum computing is more difficult to understand,
and may possibly turn out to be infeasible to implement, but it is potentially
much more powerful.) Regardless of this decision, the model should obey
all the above properties.
For optimal efficiency, the language should permit uncomputing any computed
information, rather than dissipating it to entropy.
SKILLS: ANSI-C/C++ or Java programming, good analytical
and programming skills, understanding of modern physics helpful
Design a programming language for quantum computing.
SUMMARY: Design a programming language and accompanying simulator
for quantum-coherent computing. Research existing similar tools.
Implement and run quantum factoring, search, and error-correction algorithms.
Improve a proof in reversible computing theory.
SUMMARY: I have a proof of a fundamental result in reversible computing
theory - that reversible algorithms generally require more computational
spacetime than irreversible ones. However, the proof is complex and
hard to read, and badly needs to be cleaned up and organized more clearly.
Also, a bright student may figure out a way to make the proof more widely
applicable using the theory of one-way functions. The project involves
thoroughly reading and understanding the proof and the background literature,
figuring out good ways to reorganize and improve the proof, and writing
up the result. A successful job on this project will likely lead
to a publication in the computer science literature.
SKILLS: The student should be skilled in rigorous mathematical
thinking, and be familar with the basics of computational complexity theory.
End of Page