Static Analysis of Students' Java Programs

A recent industry survey (Townhidnejad and Hilburn, 2002) has reported that more than fifty percent of a software project's budget is spent on activities related to improving software quality. Industry leaders claim that this is caused by the inadequate attention paid to software quality in the development phase. This paper introduces a static analysis framework which can be used to give beginning students practice in writing better quality Java programs and to assist teaching staff in the marking process. The framework uses both software engineering metrics and relative comparison to judge the quality of student's programs and provide feedback about how solutions might be improved.

[1]  Paul Roe,et al.  A Web Based Environment for Learning to Program , 2003, ACSC.

[2]  George E. Forsythe Automatic machine grading programs , 1964 .

[3]  Maurice H. Halstead,et al.  Elements of software science , 1977 .

[4]  Kenneth A. Reek,et al.  The TRY system -or- how to avoid testing student programs , 1989, SIGCSE '89.

[5]  Fadi P. Deek,et al.  A Survey and Critical Analysis of Tools for Learning Programming , 1998, Comput. Sci. Educ..

[6]  Mordechai Ben-aft,et al.  Constructivism in computer science education , 1998, SIGCSE '98.

[7]  William R. Murray Automatic Program Debugging for Intelligent Tutoring Systems (PhDdissertation) , 1986 .

[8]  Dean Sanders,et al.  Assessing the quality of programs: a topic for the CS2 course , 1987, SIGCSE '87.

[9]  Daniel Jackson,et al.  A software system for grading student computer programs , 1996, Comput. Educ..

[10]  Susan A. Mengel,et al.  A case study of the static analysis of the quality of novice student programs , 1999, SIGCSE '99.

[11]  Rebecca T. Mercuri,et al.  Identifying and correcting Java programming errors for introductory computer science students , 2003, SIGCSE.

[12]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[13]  Kenneth A. Lambert,et al.  Java: A Framework for Programming and Problem Solving , 1998 .

[14]  Ronald J. Leach,et al.  Using metrics to evaluate student programs , 1995, SGCS.

[15]  Kostas Kontogiannis,et al.  Towards portable source code representations using XML , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[16]  Paul Roe,et al.  ELP - A Web Environment for Learning to Program , 2002 .

[17]  David Jackson,et al.  Grading student programs using ASSYST , 1997, SIGCSE '97.

[18]  Tom Schorsch,et al.  CAP: an automated self-assessment tool to check Pascal programs for syntax, logic and style errors , 1995 .

[19]  William R. Murray,et al.  Automatic program debugging for intelligent tutoring systems , 1987, Comput. Intell..

[20]  Maurice H. Halstead,et al.  Elements of software science (Operating and programming systems series) , 1977 .

[21]  Jack Hollingsworth,et al.  Automatic graders for programming classes , 1960, Commun. ACM.

[22]  Michael Luck,et al.  Effective electronic marking for on-line assessment , 1998, ITiCSE '98.

[23]  Tanya McGill,et al.  An investigation of the relationship between student algorithm quality and program quality , 1995, SGCS.

[24]  Massood Towhidnejad,et al.  Software quality across the curriculum , 2002, Proceedings 15th Conference on Software Engineering Education and Training (CSEE&T 2002).

[25]  Marcia C. Linn,et al.  Can Experts' Explanations Help Students Develop Program Design Skills? , 1992, Int. J. Man Mach. Stud..

[26]  J. H. Kim,et al.  An intelligent tutoring system for introductory C language course , 1997, Comput. Educ..

[27]  Massood Towhidnejad,et al.  Software quality across the curriculum , 2002, 32nd Annual Frontiers in Education.

[28]  Linda M. Wills,et al.  Recognizing a program's design: a graph-parsing approach , 1990, IEEE Software.

[29]  Warren Harrison,et al.  A note on the Berry-Meekings style metric , 1986, CACM.