Goals and Purpose of the Project:
The Java programming language is currently growing in popularity within
the academic community, and as a result of this, many colleges are converting
their introductory Computer Science courses to Java. While Java is a
very portable and web-compatible language, students often have a hard
time mastering it. There have been some projects that were aimed to
assist students in grasping Java's conceptual framework, but many of
these involved either simplified Java syntax or pre-constructed object
modules that distance students from the process of coding. Our goal
was to design an educational tool that would identify common Java programming
errors and misconceptions to facilitate the learning process, while
making sure that the students interact directly with their code.
The process used in completing the research: In order to achieve our
goal, we collected data from students, professors, and members of the
Special Interest Group on Computer Science Education (ACM-SIGCSE), and
compiled a list of errors we wanted our program to assess. Our research
was completed in the following four phases:
Phase 1: Identification of Errors We conducted a survey of college professors,
teaching assistants, and students in Computer Science to identify relevant
Java programming mistakes. Combining the survey results with our own
experiences as teaching assistants, we obtained a final target list
of errors and misconceptions.
Phase 2: Choice of Implementation Next, we decided how to implement
the error-detection advisory tool. We had initially contemplated writing
it as a preprocessor or as a dynamic and interactive part of an editor.
Later, we considered implementing it as a post-compiler designed to
translate cryptic compiler messages into comments that introductory
students could more easily comprehend. We finally chose to write our
tool as a pre-compiler, a program to be run before compilation.
Phase 3: Implementation and Evaluation We then wrote code to implement
our program. After developing a working version, we ran it on a test
suite of Java programs that we had developed to demonstrate the set
of errors we had targeted. The final outcome of this project was a helpful
and effective tool that should facilitate the teaching of Java and promote
better programming skills in students.
Phase 4: Future Possibilities This phase includes possible extensions
of our year-long project, rather than being a part of the project itself.
For example, we hope to combine our tool with an existing Integrated
Development Environment next year. We also hope to test our program
with an actual Java class in Fall 2002.
We undertook the responsibility of conducting each of the phases, guided
by weekly advisory meetings with Dr. Mercuri. Since the project formed
a senior thesis for Maria and Megan, Dr. Mercuri also served as their
thesis advisor.
Conclusions and results achieved:
Conclusion
Programming in Java can be a very difficult task for introductory students,
especially when they don't understand the error messages given to them
by the compiler. Our aim in this project was to create an educational
tool that would not only help students identify and fix their existing
programming errors, but also help prevent them from making them again
in the future. We accomplished this by compiling a list of common Java
programming errors made by introductory students, designing and coding
a program that identifies these mistakes and returns instructive error
messages, and testing our program on our test suite. We believe that
our resulting project will prove to be a very useful tool for future
introductory Computer Science students. Future work on this project
includes assessment of its effectiveness in the classroom environment
and examination of these results and student feedback to be reflected
in future implementations.
Future of the project:
Next year we intend to have our program used by the Bryn Mawr and Haverford
students enrolled in the introductory Java programming course at Bryn
Mawr College. We would like the introductory students to utilize our
program and give feedback on how to make it a more effective teaching
tool. It would be interesting to examine whether and how much students'
programming skills improve over time with use of our tool. We hope that
future Computer Science majors at Bryn Mawr College will continue working
on this project by compiling the results of student testing. When we
first started this project, one of our long term goals was to develop
a paper to for publication, and we intend to submit this to the Special
Interest Group on Computer Science Education (ACM-SIGCSE) for their
2003 conference.