4 ms·
> To me, block coding is too far removed from regular coding for kids to make the connection...provides a much clearer transition path for students to Python/JS
by uticus 3y ago
> To me, block coding is too far removed from regular coding for kids to make the connection...provides a much clearer transition path for students to Python/JS/Java.
Personally I wonder what the ultimate goal is. I appreciate furthering education, making connections between different concepts, etc. 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.
So Pickcode has some value, but not enough that I'm willing to transfer my educational time (and dollars) from other options giving my children the critical thinking skills & love of learning that let them explore and make the connections naturally. Educational materials are in a competitive space!
- deleted 3y ago[deleted]
- uticus 3y agoFollowing up on my own comment. Others also show changes to text-based code when changes are made to graphical-based [1], but I haven't seen any that allow working backwards, so that clicking or changing graphical highlights and shows how text changes. To me that would enforce how the two fit, rather than a one-way cause-effect. [1] want to especially mention https://makecode.adafruit.com/ https://makecode.adafruit.com/, which is really well done as you can even simulate moving the board around to see what accelerometer inputs do in your code.
- 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).