How To Get Involved in Europa
This document contains a necessarily incomplete list of possible Europa
student research projects. If you are interested in pursuing any of the
projects below, or one of your own design involving further study of software
component engineering principles and practices, please contact Prof.
Bruce Weide (weide.1@osu.edu),
Dr.
Paolo Bucci (bucci@cse.ohio-state.edu),
or Dr. Wayne Heym (w.heym@ieee.org).
Your Responsibilities
Student research projects may be conducted by individuals, but small (typically
two-person) teams are preferable for most activities. You should plan to
spend about 6 hours per week on a project, averaged over the term. You should expect to be
accountable to the project leader(s) and to your teammate(s) by
meeting project deadlines and giving periodic reports at Europa group meetings (during all except summer quarter on Thursdays from 12:30-1:18 PM in DL 698),
possibly including a paper that could be submitted for publication and/or a senior honors thesis.
You also should plan to attend the group meeting each week and provide feedback
on others' work and presentations.
Your Rewards
Typically you may count a few hours of independent
study credit (but often not all the credit hours you will receive)
toward your technical elective requirements; you may decide to
continue on a project and do a senior honors thesis in this area; you
can tell prospective employers and graduate schools that you've worked
on a research project, and possibly that you've published some
paper(s) about your work; and when grant money is available we
can pay you an hourly stipend of about $10/hr. But don't get involved
for the credits or a padded resume or the money. Do it for the
experience and because you want to learn -- about what computer
science and engineering research is like, and about the subject matter
of that research. It might help you decide whether (or not!) you want
to try graduate school and pursue CS research there and beyond.
Where The Money Comes From
Many students are surprised to learn
that someone is actually willing to pay you to do research. We
tap various sources of funds for this. We almost always have
discretionary funds to support minority and women undergraduates to
become involved in faculty-led research projects. Similar
opportunities are sometimes available to highly-qualified male
non-minority students through supplemental funding of RSRG work
provided by other sponsors, normally the US National Science
Foundation (NSF).
Index of Project Areas
Project ideas in red could have serious publication potential.
Software Composition Workbench
There are some subprojects related to the Resolve
Verification Tools. These tools are being developed using Java, so
the first thing you'll have to do is to learn Java. Please contact the
lead designer and developer, Dr. Paolo Bucci (bucci@cse.ohio-state.edu),
for more information.
Design
-
Infrastructure support (e.g., "model types") to support more sophisticated
checking components and automated generation of some checking component
code
- "Chain_Position" component to support high-performance acyclic linked representations
-
"Cycle_Position" component to support high-performance cyclic linked representations
-
"K-spiral" ("heap") component
-
"Partitionable Array" component
-
"Graph" component(s)
- "Randomizer" component to support simulation, etc.
-
"Statistics" component to support collecting histograms, averages, etc.
- GUI application schema using toolkit classes, etc.
-
Schema for complete factoring of user interface from application code for
GUI and Text-based interfaces
-
GUI code generator
-
Extensions that "trace" kernel operations for test drivers
-
Profiling component generator
-
GUI-based test drivers
Component Implementation
-
K-spiral implementation of Sorting_Machine
-
Partitionable array implementation with constant-time operations
-
Array implementation with constant-time Set_Bounds and Finalize
-
Multiple implementations of Graph component(s)
- Read/Write extensions for all catalog components
-
Balanced binary tree implementations of Text, Sequence, Partial_Map
- Sequence_Kernel implementation layered on Sequence_Kernel (indexing blocks)
- Stack_Copy_To extension with constant-time operations
-
Extensions to Text (string matching, regular expressions, etc.)
Testing and Verification
- Automatic generation of tracing tables and "symbolic" tracing tables
-
Systematically-derived test plans for all components
-
Test driver generator
-
Checking components that use the exception mechanism
- Download the verification system called Jahob from
javaverification.org, and get it working here; then use it to try to
verify a couple simple programs, and report your experience
Performance Analysis
- Evaluation of the performance impact of lazy initialization
-
Performance profile information for kernels
- Run-time counting/timing of operation calls
-
Test drivers with timing
- Empirical tests on execution durations of Partial_Maps 4a and 4b
Student Support
-
Find gcc error condition codes (if any) to streamline debugging
-
Populate an on-line glossary of Resolve/C++ terms
-
Populate an on-line glossary of Resolve/C++ terms and concepts, and a
parallel Java version, to help students (and faculty) clear up
confusion about overloaded terms
-
Further develop the RECU tool that detects and reports improper nesting of all
kinds of C++ brackets, to help find problems with code where the compiler
mistakenly reports errors in included Resolve_Catalog code
Teaching Support
-
Using cryptographic technology to help prevent/detect academic misconduct
on lab assignments
- Explore various security issues in distributed systems by using the BugsWorld infrastructure as a testbed
- Modify the BugsWorld language, lab assignments, etc.
- Additional (new) lab assignments
-
Additional (new) homework problems
-
Sample homework solutions, done well
-
Multiple choice examination questions
-
Matching examination questions
-
True/false examination questions
-
Analyzing student lab/hw solutions, grader forms, feedback forms
-
Web-based worksheets
-
Evaluation interviews
Other
- Explore variations of "move" operators vis-a-vis "swap" and "copy" operators
- Compare/contrast STL components vs. Resolve/C++ components along several dimensions
-
Implement some of the lab projects from CSE 221/222/321 using the STL and
compare to Resolve/C++ solutions
-
Explore whether it is possible to add "swapping" or "moving" versions of the methods
for STL container components, so insertions "consume" their arguments
- Investigate and report on a variety of related work
-
Monads and other functional programming ideas
-
Aspect-oriented programming
-
Microsoft Research's AsmL
-
JML and ESC/Java
-
Eclipse platform as a possible framework for replacing XEmacs, etc., in
the SCE courses
-
Explore the relationship between Resolve components and Microsoft .NET
- Explore the relationship between templates and polymorphism to achieve genericity and decoupling
- Explore whether and how to allow two objects with different implementations of the same contract to be swapped
- Passing records as utility_class parameters
-
Semantics of the "checks" relation
-
Records with arbitrarily many fields
- Multi-threaded Resolve/C++
-
HTML catalog extensions/improvements
- Customize UML within Rational Rose(TM) to use OSU RSRG's CCD notation