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? 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:

  1. Process zip code location data for the entire U.S.
  2. Improve sophistication of auction mechanism and support for transactions.
  3. For Business School (CIS or DIS) students: Help figure out the Marketing and Business Plan aspects of the site.
  4. Improve scalability of the site to high traffic loads, work out redundancy mechanisms for reliability.
  5. 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: 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:

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