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.
Tim Long
(long@cse.ohio-state.edu),
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,
possibly including a paper that could be submitted for publication and/or a senior honors thesis.
You also should plan to attend a 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 $9/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.
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. The diversity program in the CSE Department is coordinated
by Prof. Tim Long
(long@cse.ohio-state.edu).
This GE Fund-sponsored program includes a special Undergraduate Research
Opportunities (UROP) category with funding for minority and women undergraduates
to become involved in faculty-led research projects. Awards pay undergraduate
research stipends. Applications for these awards are due in early fall
quarter, and sometimes in other quarters. Similar opportunities are sometimes
available to highly-qualified male non-minority students through supplemental
funding of RSRG work provided by other
sponsors.
Index of Project Areas
Project ideas in red could have serious publication potential.
Software Composition Workbench
There are many subprojects related to the Software
Composition Workbench (SCW). The SCW is being developed using Java,
so the first thing you'll have to do is to learn Java. Please contact the
SCW designer and lead 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
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
-
Port (or keep current the port of) Resolve/C++ to Microsoft Visual C++, Linux, Borland C++, Metrowerks Code Warrior, and
other environments
-
Find gcc error condition codes (if any) to streamline debugging
-
Populate on-line glossary of terms
-
Attach a "search engine" to the SCE Course Sequence Home Page(s)
-
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