Project: Identifying and Correcting Common Java Errors and Misconceptions for Introductory Computer Science Students

Student Researchers: Ananya Misra, Megan Rutter, Maria Hristova
Advisor: Rebecca Mercuri, Ph.D.
Institution: Bryn Mawr College


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.