Algorithm recognition by static analysis and its application in students' submissions assessment

Automatic program comprehension (PC) has been extensively studied for decades. It has been studied mainly from two different points of view: understanding the functionality of a program and understanding program structure. In this paper, we address the problem of automatic algorithm recognition and introduce a method based on static analysis to recognize algorithms. We discuss the applications of the method in the context of automatic assessment to widen the scope of programming assignments that can be checked automatically.

[1]  J. D. Brett. Hodges Knowledge-Based Program Understanding and Testing Assistant (KBPUTA). , 1994 .

[2]  Naeem Seliya,et al.  Detecting outsourced student programming assignments , 2008 .

[3]  Elliot Soloway,et al.  PROUST: Knowledge-Based Program Understanding , 1984, IEEE Transactions on Software Engineering.

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

[5]  Sally S. Robinson,et al.  An instructional aid for student programs , 1980, SIGCSE '80.

[6]  Alex Quilici A memory-based approach to recognizing programming plans , 1994, CACM.

[7]  Kirsti Ala-Mutka,et al.  Assessment process for programming assignments , 2004, IEEE International Conference on Advanced Learning Technologies, 2004. Proceedings..

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

[9]  Wei-Tek Tsai,et al.  Data-centered program understanding , 1994, Proceedings 1994 International Conference on Software Maintenance.

[10]  Lauri Malmi,et al.  Fully automatic assessment of programming exercises , 2001 .

[11]  Stephen H. Edwards,et al.  Improving student performance by evaluating how well students test their own programs , 2003, JERC.

[12]  Jorma Sajaniemi,et al.  An empirical analysis of roles of variables in novice-level procedural programs , 2002, Proceedings IEEE 2002 Symposia on Human Centric Computing Languages and Environments.

[13]  Stan Jarzabek,et al.  Detecting higher-level similarity patterns in programs , 2005, ESEC/FSE-13.

[14]  Stacy Marsella,et al.  Task oriented software understanding , 1998, Proceedings 13th IEEE International Conference on Automated Software Engineering (Cat. No.98EX239).

[15]  Nathan Griffiths,et al.  The boss online submission and assessment system , 2005, JERC.

[16]  Jim Q. Ning,et al.  Knowledge-based program analysis , 1990, IEEE Software.

[17]  Athanasios Tsintsifas,et al.  The marking system for CourseMaster , 2002, ITiCSE '02.

[18]  Ilene Burnstein,et al.  An application of fuzzy reasoning to support automated program comprehension , 1999, Proceedings Seventh International Workshop on Program Comprehension.

[19]  Alex Quilici Reverse Engineering of Legacy Systems: A Path Toward Success , 1995, 1995 17th International Conference on Software Engineering.

[20]  Qiang Yang,et al.  The program understanding problem: analysis and a heuristic approach , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

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

[22]  Michael J. Rees,et al.  Automatic assessment aids for Pascal programs , 1982, SIGP.

[23]  Dirk Ourston Program recognition , 1989, IEEE Expert.