4 research outputs found
Haskelite: A Step-By-Step Interpreter for Teaching Functional Programming
This paper describes Haskelite, a step-by-step interpreter for a small subset of Haskell. Haskelite is designed to help teach fundamental concepts of functional programming, namely: evaluation by rewriting; definition of functions using pattern-matching; recursion; higher-order functions; and on-demand evaluation. The interpreter is implemented in Elm and compiled to JavaScript, so it runs on the browser and requires no installation.
This is on-going work and has yet to be fully evaluated; we present some initial experience in the classroom and highlight some points for improvement
Recommended from our members
The ChildsPlay Approach: Evaluating an Experimental Approach for Teaching Introductory CS at University
University students first learning about computer science (CS) can be intimidated and frustrated by programming. In addition, the general-purpose programming languages chosen for introducing students to programming contain several features that have the potential to overwhelm and distract them from focused curriculum topics, which can lead to reduced retention of CS students and less student comprehension of fundamental CS concepts. We hypothesize that a more successful introductory CS course can be achieved by using a new approach that uses a familiar, physical game theme and a delayed-coding, concept-first approach followed by a language with a smaller feature set designed specifically for teaching fundamental CS concepts, such as types, values, conditions, control structures, and functions.
To test this hypothesis, we examine two sections of a first-year university CS orientation class. One section was taught using the university’s traditional approach for teaching the course. The second section was taught using the new approach. We evaluate each approach’s effectiveness by comparing multiple outcomes from the different sections of the course including student retention, subsequent class performance, grades, reported engagement and interest in the class, and reported changes in debugging practices. Based on student survey responses before and after the two sections, we find that students in the experimental section using the new approach like the use of games as a way to teach about computation but had lower engagement in their class, likely due to the programming language used. We find no difference in student performance in subsequent computer science courses
Experiences from teaching functional programming at Chalmers
John Hughes shared his experiences of teaching functional programming at Chalmers University in Gothenburg along with the successes and the problems he faced. His highest priority was to convince students that they could write real, interesting programs in Haskell by the end of the first course. He eliminated all the course material directly irrelevant to programming like a section on program proofs. He used to taught the material in a different order to most functional programming texts, like introducing Haskell input/output in the first lecture. He also included two lectures on GUI programming (using wxHaskell), building a simple straight-line-diagram editor in a couple of pages of code. He also introduced QuickCheck (random property-based) testing as part of the course, teaching students first to write the left-hand-side and type of a function, then its property, and finally its right-hand-side
Experiences from teaching functional programming at Chalmers
John Hughes shared his experiences of teaching functional programming at Chalmers University in Gothenburg along with the successes and the problems he faced. His highest priority was to convince students that they could write real, interesting programs in Haskell by the end of the first course. He eliminated all the course material directly irrelevant to programming like a section on program proofs. He used to taught the material in a different order to most functional programming texts, like introducing Haskell input/output in the first lecture. He also included two lectures on GUI programming (using wxHaskell), building a simple straight-line-diagram editor in a couple of pages of code. He also introduced QuickCheck (random property-based) testing as part of the course, teaching students first to write the left-hand-side and type of a function, then its property, and finally its right-hand-side