3 ms·
> But starting out with something that is not Python, with the goal of ending up doing Python, seems like a funny way to approach things. Another project in th
by DonaldPShimoda 3y ago
> But starting out with something that is not Python, with the goal of ending up doing Python, seems like a funny way to approach things.
Another project in this space is Pyret [0]. The Pyret language has been developed with the express intention of taking completely novice programmers, teaching them how to program in a language with reasonable semantics [1], and progressively add language features until they eventually switch to Python. The language is integrated into the DCIC course [2].
The idea of a language that can progressively gain features was (to the best of my knowledge) pioneered by Racket. The idea is that a particular file can be declared at a specific "language level" (I think that's the terminology), which restricts the set of features available to the user. Over the course of the semester, new features can be added as they are taught. The advantage of this approach is that students do not accidentally encounter surprising semantics that they inadvertently internalize to the detriment of their long-term learning.
The Pyret project is actually spearheaded by Shriram Krishnamurthi at Brown University, who was on the original Racket team. His career has focuses on the application of PL theory and tooling to computer science education. One of his most recent publications is particularly interesting with regard to the present topic, which is an experience report detailing what happens when students move from Racket to Pyret and from Pyret to Python [3].
[0] https://pyret.org https://pyret.org
[1] While my use of the word "reasonable" is certainly opinionated, what I mean is that Python's semantics are simply unintuitive to many novices. I've forgotten the title of the paper I read that analyzed this, but a related paper is "Python: The Full Monty", which develops a small-step operational semantics for the core Python language. Many of the specific semantics are surprising even to seasoned Python developers! Direct PDF: https://cs.brown.edu/~sk/Publications/Papers/Published/pmmwplck-python-full-monty/paper.pdf https://cs.brown.edu/~sk/Publications/Papers/Published/pmmwp...
[2] A Data-Centric Introduction to Computing is a new introductory course at Brown (which is also now being implemented at a few other schools) that seeks to introduce students to computing through tables and data. There's a lot of research backing up the specific methodologies chosen by the authors. https://dcic-world.org https://dcic-world.org
[3] What Happens When Students Switch (Functional) Languages (Experience Report), direct PDF: https://cs.brown.edu/~sk/Publications/Papers/Published/lkft-switch-fun-lang/paper.pdf https://cs.brown.edu/~sk/Publications/Papers/Published/lkft-...
- uticus 3y ago> The idea of a language that can progressively gain features was (to the best of my knowledge) pioneered by Racket. Interesting, I did not know Racket had those connections, although I dabbled with Dr. Racket [1] a while back. It's a pretty fascinating thing to work with, especially from the educational standpoint. Smalltalk also has ties to education, see Alan Kay's "The Early History of Smalltalk" [2] Of course when we talk about extensibility in a programming language, I would think early examples are not only Lisp (Racket is a Lisp of course) but also Forth [3]. [1] https://docs.racket-lang.org/drracket/index.html https://docs.racket-lang.org/drracket/index.html [2] http://worrydream.com/EarlyHistoryOfSmalltalk/#smalltalkAndChildren http://worrydream.com/EarlyHistoryOfSmalltalk/#smalltalkAndC... [3] http://www.bradrodriguez.com/papers/moving6.htm http://www.bradrodriguez.com/papers/moving6.htm (this page describes extending the language, but is part of a larger project building a Forth from the ground up...not sure if that counts as extensibility or just a pain point, but regardless building out a Forth seems to be part of the rite of passage, so in my mind that counts as a language that is focused on extensibility. Although not necessarily focused on pedagogy.)
- spdegabrielle 3y agoIt’s DrRacket not Dr. Racket
- DonaldPShimoda 3y agoI haven't looked enough into Smalltalk's history — thank you for the pointer! Although the "language levels" I'd mentioned previously are implemented with macros, the underlying concept is a little deeper than that and I don't know of an earlier example of such a system! Certainly the Lisps and Schemes did a lot of macro work, but they did not tailor applications of that work to CS education in the same way (to the best of my admittedly limited knowledge).