Using intelligent tutors to enhance student learning of application programming interfaces

An essential part of software engineering training is for students to learn how to effectively use application programming interfaces (APIs), but traditional instruction only provides direct support for helping students to learn the most commonly used APIs. This paper introduces a new approach whereby professors could delegate some of these training responsibilities to intelligent tutors, which are interactive instructional materials that tailor themselves to each student's progress. A prototype system has been developed that semi-automatically generates API tutors from open source code freely available on the web. As API tutors are published to a new website, students have an increasingly large menu of training materials available for them to choose from. A preliminary study indicates that the approach increases student learning on sample tasks.

[1]  Stéphane Ducasse,et al.  Semantic clustering: Identifying topics in source code , 2007, Inf. Softw. Technol..

[2]  Vincent Aleven,et al.  A New Paradigm for Intelligent Tutoring Systems: Example-Tracing Tutors , 2009, Int. J. Artif. Intell. Educ..

[3]  Clay Spinuzzi,et al.  Building More Usable APIs , 1998, IEEE Softw..

[4]  Antonija Mitrovic,et al.  Evaluation of a Constraint-Based Tutor for a Database Language , 1999 .

[5]  John R. Anderson,et al.  Cognitive Modeling and Intelligent Tutoring , 1990, Artif. Intell..

[6]  Antonija Mitrovic,et al.  J-Latte: a Constraint-Based Tutor for Java , 2009 .

[7]  Jeffrey Stylos,et al.  A case study of API redesign for improved usability , 2008, 2008 IEEE Symposium on Visual Languages and Human-Centric Computing.

[8]  Cory J. Butz,et al.  A Web-Based Intelligent Tutoring System for Computer Programming , 2004, IEEE/WIC/ACM International Conference on Web Intelligence (WI'04).

[9]  Albert T. Corbett,et al.  Cognitive Computer Tutors: Solving the Two-Sigma Problem , 2001, User Modeling.

[10]  Brian Ellis,et al.  The Factory Pattern in API Design: A Usability Evaluation , 2007, 29th International Conference on Software Engineering (ICSE'07).

[11]  Brad A. Myers,et al.  Mica: A Web-Search Tool for Finding API Components and Examples , 2006, Visual Languages and Human-Centric Computing (VL/HCC'06).

[12]  Martin P. Robillard,et al.  A field study of API learning obstacles , 2011, Empirical Software Engineering.

[13]  John R. Anderson,et al.  Dynamic Student Modelling in an Intelligent Tutor for LISP Programming , 1985, IJCAI.

[14]  J. Gregory Trafton,et al.  Effective Tutoring Techniques: A Comparison of Human Tutors and Intelligent Tutoring Systems , 1992 .

[15]  Andrew Begel,et al.  Struggles of new college graduates in their first software development job , 2008, SIGCSE '08.

[16]  Philip J. Guo,et al.  Two studies of opportunistic programming: interleaving web foraging, learning, and writing code , 2009, CHI.

[17]  K. Koedinger,et al.  Example-Tracing Tutors : A New Paradigm for Intelligent Tutoring Systems , 2008 .

[18]  Jeffrey Stylos,et al.  Usability Implications of Requiring Parameters in Objects' Constructors , 2007, 29th International Conference on Software Engineering (ICSE'07).

[19]  SimonBeth,et al.  Struggles of new college graduates in their first software development job , 2008 .

[20]  Chaomei Chen,et al.  Mining the Web: Discovering knowledge from hypertext data , 2004, J. Assoc. Inf. Sci. Technol..

[21]  Bob Margulies,et al.  Task force report , 1991 .