101 research outputs found

    Critiquing Antipatterns In Novice Code

    Get PDF
    Students in introductory computer science courses, are learning to program. Indeed, most students perceive that learning to code is the central topic explored in the courses. Students spend an enormous amount of time struggling to learn the syntax and understand semantics of a particular language. Instructors spend a similar amount of time reading student code and explaining the meaning of the cryptic error messages displayed by compilers. Messages provided by compilers are intended to give feedback on the adherence of one’s code to the language specification and conventions. Unfortunately, these message are geared towards experts who have a clear understanding of the language syntax and semantics and a deep model of what comprises a program and how a program is developed. These students are novices who lack fundamental understanding of the structure of a program and have no basic mental model of how a program works. Novices make different kinds of mistakes than experts. Instructors need to spend a lot of time simply assisting novices in using compilers and understanding their output. In addition to mastering the syntax and semantics of their first programming language, novices are exposed to the question of what constitutes good design. Instructors can identify virtuous design choices and articulate areas of improvement. But contact time with students is limited, and waiting for in-person feedback or replies to personal messages can be a critical delay. Novices, still struggling to use the compiler, have not yet developed the sophisticated analytical processes employed by experts and this is reflected in their design choices and the kinds of mistakes they make. When a novice approaches an instructor with a question, the instructor must often provide a balanced critique that assists the student with understanding both the structure and the design aspects of their own code. My research has focused on whether we can identify examples of early programming antipatterns that have arisen from our teaching experience, and describe different ways of detecting them automatically. Novice students may produce code that is close to a correct solution but contains syntactic errors; code critiquers attempt to salvage the promising portions of the students submission and suggest repairs in ways more meaningful than typical compiler error messages. Alternatively, a student misunderstanding may result in well-formed code that passes unit tests yet contains clear design flaws; through additional analysis, code critiquers can detect and flag these flaws. Finally, certain types of antipatterns can be anticipated and flagged by the instructor, based on the context of the course and the programming activity; code critiquers allow for customizable critique triggers and messages. This dissertation presents several key contributions to our understanding of novice misconceptions and their representation, diagnosis and repair using antipatterns. My research focuses on identifying antipatterns and detecting them in novice code, then using this information to provide the student with a meaningful critique of their work. I have developed WebTA, a tool to critique student programs in introductory computer science courses. WebTA is used to teach students test-driven agile development methods through small cycles of teaching, coding integrated with testing, and immediate feedback.Through the use of WebTA in introductory computer science courses since 2014, I have amassed a significant corpus of novice programmer submission data. Lastly, I have compiled a library of antipatterns found in novice code

    It Seemed Like a Good Idea at the Time (Hindsight is 2020)

    Get PDF
    Charles Kettering reportedly quipped: “99% of success is built on failure”. Yet, those failures rarely see the light of day, as publications naturally focus on successful innovations rather than the many failures that preceded them. The academic community is poorer as a result, as we are all left to re-create the same failures independently, rather than learning from one another. In this panel, we offer an opportunity to “celebrate failure”, by presenting four separate case studies of computing education initiatives that “seemed like a good idea at the time”, but ended up being spectacular failures. The presenters will discuss their “good ideas”, the disappointing results, and (most importantly) the lessons learned! Our goal is to foster a supportive community where failure is celebrated rather than criticized. We hope to laugh and learn together from these experience reports

    Work in Progress: The RICA Project: Rich, Immediate Critique of Antipatterns in Student Code

    Get PDF
    Rich, relevant, and immediate student feedback is a core ingredient supporting effective student learning. Feedback is particularly important for introductory computing courses where novice programmers are still learning the basic syntax and semantics of a programming language. Our project is aimed at detecting poor solutions to common problems, termed antipatterns, in student code and providing feedback that guides the student to better solutions. This paper discusses the first year of the project, specifically, the development of a Code Critiquer to detect antipatterns in student code and generate appropriate feedback. This important first step sets-up the project to advance knowledge about novice antipatterns and their detection. The use of these antipatterns and code critiquers in future classroom interventions will help the project improve our understanding of student learning, retention, and self-efficacy

    Directing Incoming CS Students to an Appropriate Introductory Computer Science Course

    Get PDF
    Full Paper. Research. We discuss possible ways to direct students to right level of introductory programming. While many schools offer college preparatory or advanced placement courses in computing, there is still, unfortunately, a large part of the "college-ready" population that has no opportunity to learn computing at all before they arrive. Regulation of CS education at the state/province or national level is still rare (but growing). Thus incoming students possess a wide range of skills and knowledge. When coupled with increasing enrollments, this diversity of experience can result in courses having large numbers of both absolute beginners and seasoned coders. Such courses are difficult to teach, intimidate novice students, and bore those with more experience. This can result in low engagement and retention.Unlike mathematics and language arts, introductory courses in CS vary widely from one institution to another in both conceptual material and programming language used. A standard point of entry to college mathematics is a calculus course, with some students instead starting earlier with pre-calculus or an algebra refresher, and others starting out in the second-term calculus course. There is rarely a concern about student skill being hidden by notational or other language differences, because the language of mathematics is close to universal. Similarly, freshman language arts courses in reading and/or writing assume a certain level of skill and maturity of comprehension and expressiveness in the target language; otherwise remedial courses are provided.We investigate placement of incoming first year students into appropriate introductory computer science courses at higher education institutions where there is more than one choice of first course. The goal is to determine the best way to decide which first course would be the most helpful for each student

    Sensitivity analysis of iterative adjoint technique for microstrip circuits optimization

    No full text
    10.1002/mop.22204Microwave and Optical Technology Letters493607-609MOTL

    Le droit au respect de la vie privée : les restrictions justifiées par les nécessités de l'information

    No full text
    Le droit au respect de la vie privée est un droit reconnu à tous. Le consentement protège de façon efficace les particuliers contre toute ingérence dans leur vie privée. Cependant, des individus ordinaires peuvent se voir mêlés, volontairement comme involontairement, à des événements d'actualité. Dans ce cas, le consentement des particuliers est présumé en raison des nécessités de l'information. Ce mémoire démontre de quelles façons, les individus concernés peuvent - ou pas - protéger leur droit au respect de la vie privée et leur droit à l'image tout en établissant diverses comparaisons entre le droit belge et le droit français.La diffusion de ce mémoire n'est pas autorisée par l'institutio
    corecore