Re: [Edu-sig] when and why should kids learn Python?
On Sat, Oct 28, 2017 at 1:44 PM, David MacQuigg <macquigg@gmail.com> wrote: << ... >> I just hate to see what could have been a critical mass of users offering
an alternative to Java, a much better alternative as an introduction to CS, losing that opportunity because there is no agreement on a simple alternative. Oh well, most students will end up with Java anyway, so maybe learning with all those useless semicolons will make the transition easier.
Thank you, yes, I share your view that Ruby feels more like Perl and markets itself versus Python with somewhat hollow slogans like "Ruby makes programmers feel happy" (it's all about how it "feels"). AP CS seems stuck in the crufty past given a main rationale was to pick a language actually taught at the college level. That used to be Java, but is now Python so much more so. https://www.quora.com/Why-does-AP-Computer-Science-A-teach-Java-and-not-Pyth... I'm always in favor of learning at least a couple languages, even if #2 is mainly for contrast. One's mastery of X improves when one has experience with ~X. Learn Python and Ruby both? But learn one to a higher level? Clojure? As this other thread points out, there's a new AP CS Principles course (CSP) which Code.org and others are tackling, in principle language agnostic. JavaScript is another contender as a first language, especially in light of all the recent revisions (making it seem more like Python :-D). https://computinged.wordpress.com/2014/08/03/python-is-the-most-popular-intr... Since the posting above (2014) -- about how college intro courses don't use JavaScript as a first langauge --came at least Stanford's doing so: https://www.theregister.co.uk/2017/04/24/stanford_tests_javascript_in_place_... I think Harvard's CS50 is a good example of how Python has replaced Java in terms of sharing the big picture. I refer people to the lectures on Youtube, Week 8 in particular. https://youtu.be/5aP9Bl9hcqI Kirby
'''
I'm always in favor of learning at least a couple languages, even if #2 is mainly for contrast. One's mastery of X improves when one has experience with ~X. Learn Python and Ruby both? But learn one to a higher level? Clojure?
''' I agree with everything you are saying, but I would postpone the "language comparison" to sometime *after* the first course, and then my ~X language would not be Ruby (almost identical to Python), but something radically different (Lisp) or something important to industry (Java). The first course should focus entirely on fundamentals - understanding what is a function, what is an object, what do we mean by encapsulation, how do we control scope, etc. Perhaps my bias is due to my background (engineering and science), not CS. I like a language that can 1) teach the fundamentals with minimum clutter, 2) provide a tool for non-CS majors that will be useful their entire career, and 3) transition easily to Java, the main "industrial" language for the foreseeable future. Even as a non-CS major, I am curious about what other languages offer. This could be taught most easily as short examples comparing some great feature in language ~X to the equivalent in Python. Coding.bat is a good website for comparing Java to Python. My big disappointment with Python was that graphics was not integrated more smoothly into the package. Engineering involves a lot of plotting, and that should happen without extra effort. The integration with C could also be improved, for those applications where speed is important. On Sat, Oct 28, 2017 at 3:15 PM, kirby urner <kirby.urner@gmail.com> wrote:
On Sat, Oct 28, 2017 at 1:44 PM, David MacQuigg <macquigg@gmail.com> wrote:
<< ... >>
I just hate to see what could have been a critical mass of users offering
an alternative to Java, a much better alternative as an introduction to CS, losing that opportunity because there is no agreement on a simple alternative. Oh well, most students will end up with Java anyway, so maybe learning with all those useless semicolons will make the transition easier.
Thank you, yes, I share your view that Ruby feels more like Perl and markets itself versus Python with somewhat hollow slogans like "Ruby makes programmers feel happy" (it's all about how it "feels").
AP CS seems stuck in the crufty past given a main rationale was to pick a language actually taught at the college level. That used to be Java, but is now Python so much more so.
https://www.quora.com/Why-does-AP-Computer-Science-A- teach-Java-and-not-Python
I'm always in favor of learning at least a couple languages, even if #2 is mainly for contrast. One's mastery of X improves when one has experience with ~X. Learn Python and Ruby both? But learn one to a higher level? Clojure?
As this other thread points out, there's a new AP CS Principles course (CSP) which Code.org and others are tackling, in principle language agnostic.
JavaScript is another contender as a first language, especially in light of all the recent revisions (making it seem more like Python :-D).
https://computinged.wordpress.com/2014/08/03/python-is-the- most-popular-intro-language-but-what-about-csp/
Since the posting above (2014) -- about how college intro courses don't use JavaScript as a first langauge --came at least Stanford's doing so:
https://www.theregister.co.uk/2017/04/24/stanford_tests_ javascript_in_place_of_java/
I think Harvard's CS50 is a good example of how Python has replaced Java in terms of sharing the big picture. I refer people to the lectures on Youtube, Week 8 in particular.
Kirby
My big disappointment with Python was that graphics was not integrated more smoothly into the package. Engineering involves a lot of plotting, and that should happen without extra effort. The integration with C could also be improved, for those applications where speed is important.
Yes, I agree with your points, about the 2nd language being more different. Probably if #1 is Python, then #2 should be Lisp family as you say, and/or strongly typed. Regarding Python not natively including anything graphical in the Standard Library or core, that's a barrier for younger students coming from an MIT Scratch background, also strong on acoustics. You may have seen Codesters already. Here's one I coded just last night as a part of an ongoing discussion on math-teach (CS and math are becoming "as one" in the early grades): https://www.codesters.com/preview/11a6566e8105408489662f851bb21c7e/ You can actually run the code by clicking the green arrow button. Notice how the namespace is enhanced with Sprites and what not. The goal is to provide a graphical bridge to lexical programming,. I work for a company that indeed uses this with kids. I'm in some school or other every weekday but Monday for about an hour after school -- so yeah, still extracurricular. Codesters is Python 2.7 under the hood, not 3.x, which I consider a weakness, but not a show stopper. This is an "in between" platform. We're on our way to a more Jupyter Notebook + IDE like environment, and or designing simple websites. Speaking of websites, I'm into making examples that don't even use HTML i.e. the HTTP requests are all for JSON data and the like. Just to separate the idea of "website" from the usual stereotype, of something we'd want to "browse". Kirby
participants (2)
-
David MacQuigg -
kirby urner