Results 1 -
9 of
9
Improving Type Error Messages for Generic Java
, 2008
"... Since version 1.5, generics (parametric polymorphism) are part of the Java language. However, adding parametric polymorphism to a language that is built on inclusion polymorphism can be confusing to a novice programmer, because the typing rules are suddenly different and, in the case of Generic Java ..."
Abstract
-
Cited by 3 (1 self)
- Add to MetaCart
Since version 1.5, generics (parametric polymorphism) are part of the Java language. However, adding parametric polymorphism to a language that is built on inclusion polymorphism can be confusing to a novice programmer, because the typing rules are suddenly different and, in the case of Generic Java, quite complex. Indeed, the main Java compilers, Eclipse’s ejc compiler and Sun’s javac, do not even accept the same set of programs. Moreover, experience with these compilers shows that the error messages provided by them leave more than a little to be desired. To alleviate the latter problem, we describe how to adapt the type inference process of Java to obtain better error diagnostics for generic method invocations. The extension has been implemented into the Jastad extensible Java compiler. 1 1
Understanding novice errors and error paths in Object-oriented programming through log analysis
- In Proceedings of Workshop on Educational Data Mining at the 8th International Conference on Intelligent Tutoring Systems (ITS 2006
, 2006
"... programming through log analysis ..."
Retina: Helping Students and Instructors Based on Observed Programming Activities
"... It is difficult for instructors of CS1 and CS2 courses to get accurate answers to such critical questions as “how long are students spending on programming assignments?”, or “what sorts of errors are they making? ” At the same time, students often have no idea of where they stand with respect to the ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
It is difficult for instructors of CS1 and CS2 courses to get accurate answers to such critical questions as “how long are students spending on programming assignments?”, or “what sorts of errors are they making? ” At the same time, students often have no idea of where they stand with respect to the rest of the class in terms of time spent on an assignment or the number or types of errors that they encounter. In this paper, we present a tool called Retina, which collects information about students ’ programming activities, and then provides useful and informative reports to both students and instructors based on the aggregation of that data. Retina can also make real-time recommendations to students, in order to help them quickly address some of the errors they make. In addition to describing Retina and its features, we also present some of our initial findings during two trials of the tool in a real classroom setting.
Educational Data Mining 2009 Improving Student Question Classification
"... Abstract. Students in introductory programming classes often articulate their questions and information needs incompletely. Consequently, the automatic classification of student questions to provide automated tutorial responses is a challenging problem. This paper analyzes 411 questions from an intr ..."
Abstract
- Add to MetaCart
Abstract. Students in introductory programming classes often articulate their questions and information needs incompletely. Consequently, the automatic classification of student questions to provide automated tutorial responses is a challenging problem. This paper analyzes 411 questions from an introductory Java programming course by reducing the natural language of the questions to a vector space, and then utilizing cosine similarity to identify similar previous questions. We report classification accuracies between 23 % and 55%, obtaining substantial improvements by exploiting domain knowledge (compiler error messages) and educational context (assignment name). Our mean reciprocal rank scores are comparable to and arguably better than most scores reported in a major information retrieval competition, even though our dataset consists of questions asked by students that are difficult to classify. Our results are especially timely and relevant for online courses where students are completing the same set of assignments asynchronously and access to staff is limited. 1
Automated tutoring for novices in object-oriented programming
, 2009
"... This thesis is the result of my own work, except where explicitly acknowledged in the text. Marie-Helene Nienaltowski, September 2009 The best way to learn programming is to write programs. For novices, however, it can be daunting to solve their rst programming exercises, and discouraging when they ..."
Abstract
- Add to MetaCart
This thesis is the result of my own work, except where explicitly acknowledged in the text. Marie-Helene Nienaltowski, September 2009 The best way to learn programming is to write programs. For novices, however, it can be daunting to solve their rst programming exercises, and discouraging when they are unable to progress any further and cannot get help immediately. Oneon-one tutoring could provide the necessary support and motivation for novices to persevere and ultimately acquire the necessary skills but it is usually unavailable due to resource constraints. This dissertation introduces a novel methodology for identifying students ' intentions and providing automated feedback. It presents the design and implementation of a prototype computer tutor that assists novices in their rst steps in Object-Oriented Programming. The Intention Matching and Feedback Generation methodology identi es the student's intention, to e ectively diagnose errors and guide the student in solving the task. The intended bene ts
Science Education
"... We present the preliminary analysis of a study whose long term aim is to track IDE usage to identify novice-programmers in need of support. Our analysis focused on the activity of 24 dyads on a 3 week assignment. We correlated frequencies of events such as use of code generation and of the debugger ..."
Abstract
- Add to MetaCart
We present the preliminary analysis of a study whose long term aim is to track IDE usage to identify novice-programmers in need of support. Our analysis focused on the activity of 24 dyads on a 3 week assignment. We correlated frequencies of events such as use of code generation and of the debugger with assignment grades, final exam grades, and the difference in rankings within dyad on the final exam. Our results show several significant correlations. In particular, code generation and debugging are correlated with the final grade, and running in non-debug mode is correlated with differences in ranking. These results are encouraging as they show that it is possible to predict learning outcomes with simple frequency data and suggest more complex indicators could achieve robust prediction.
EMPIRICAL STUDY OF NOVICE ERRORS AND ERROR PATHS IN OBJECT-ORIENTED PROGRAMMING
"... What kind of errors do beginners make? Objective answers to this question are essential to the design and implementation of curricula that don’t just reflect the educators ’ theories but succeed in conveying a course’s topics and skills to the students. In the context of a new introductory programmi ..."
Abstract
- Add to MetaCart
What kind of errors do beginners make? Objective answers to this question are essential to the design and implementation of curricula that don’t just reflect the educators ’ theories but succeed in conveying a course’s topics and skills to the students. In the context of a new introductory programming course based on “inverted curriculum ” ideas, and taking advantage of our ability to instrument the compiler, we performed automatic analysis of the — sometimes contorted — paths students actually take to solve programming exercises on their own. The results, collected from three different groups of students across two unrelated universities, included a number of surprises. These findings will help improve future sessions of the course, and are being used in the design and implementation of an
Corrective Hints for Type Incorrect Generic Java Programs
, 2009
"... Since version 1.5, generics (parametric polymorphism) are part of the Java language. Experience with implementations of the Java Language Specification such as ejc and javac have shown that the type error messages provided by these tools leave more than a little to be desired. Type error messages ar ..."
Abstract
- Add to MetaCart
Since version 1.5, generics (parametric polymorphism) are part of the Java language. Experience with implementations of the Java Language Specification such as ejc and javac have shown that the type error messages provided by these tools leave more than a little to be desired. Type error messages are often uninformative and sometimes show artifacts of the type checking process in the messages. Evidently, providing good type error messages for a language as large and complex as Java currently is, is not as easy as one would hope. To alleviate the problem, we describe a number of heuristics that suggest fixes for generic method invocations in Generic Java, and illustrate their effect by means of examples. The heuristics are part of an extension to the original type checking process that has been implemented into the JastAdd Extensible Java Compiler. Keywords: generics compilers, type checking, error reporting, error correcting, heuristics, Java 1 <T> List<T> foo(Map<T, ? super T> a){} Map<Number, Integer> m = null; List<Integer> ret = foo(m); javac: cxt_heuristic/Test1.java:6: <T>foo(Map<T,? super T>) in Test1 cannot be applied to (Map<Number,Integer>) ejc: The method foo(Map<T, ? super T) in the type Test1 is not applicable for the arguments (Map<Number,Integer>) 1

