Earlier quoted context omitted.
I looked up those two papers: "Python CS1 as Preparation for C++ CS2": http://www.cse.msu.edu/~enbody/fp039-enbody-revised.pdf and "Performance of Python CS1 Students in Mid-Level Non-Python CS Courses": http://dl.acm.org/citation.cfm?id=1734437 (email me if you'd like a copy, it's behind the ACM paywall). Neither of your claims is supported by either paper. Rather, they seem to support my claim: starting language is…
It's been a while since I looked at the data, but my main source was: http://blip.tv/pycon-us-videos-2009-2010-2011/python-for-cs1... (a talk Bill Punch gave on those papers). I think it goes into more detail on the non-CS majors.
On the making of a girl nerd
41–50 of 73 posts
Re: On the making of a girl nerd
#42Is the article seriously advocating increasing the number of women in CS by watering down their college courses? An easy "gold" course for the girls, a harder "black" course for boys (and the few girls who would have done CS absent any intervention)? I also found this very annoying: "I have found an amazing correlation between women with math Ph.D.’s and women whose fathers are mathematicians...you wouldn’t be able t…
Re: On the making of a girl nerd
#43Python is great, but I recommend that schools should start programming classes with Unity3D. Within the first class you can have objects with physics bouncing off of each other, and by the end of the course you can have a legitimate game to play (that can even be sent to your phone or tablet). The "javascript" variant is fairly straightforward and if you take it far enough can be quite powerful. At first the students…
I cannot stress this strongly enough, _NO_.
You need to walk before you can run and it is of NO BENEFIT to the student to hide programming behind a fancy UI with fun results before they know what is going on.
Let's be clear here, I am not against Unity. But I'm definitely against Unity for teaching how to program.
The "strength" you exemplify about having unity doing physics in the first lesson is precisely why it's a terrible choice. Students without prior programming knowledge will not understand that this is javascript (a language) connected to a physics library (3rd party module) being represented by the UI (unity). You will introduce them to this mess of interconnected parts and they will have no idea who is responsible for what. Plus you will spend so much time teaching them Unity-specific concepts and fundamentals they will walk away with a crippled ability to program.
I know this because at my university they taught first year programming with java and used a book written by the instructor that showed you how to load an image with swing before teaching conditionals. The boilerplate code that allowed the students to load images did nothing but completely confuse them and negate the teaching aspects as he slowly introduced programming fundamentals. It was a complete disservice to try to "fancify" basic programming and all it did was confuse anyone who hadn't previously learnt to program.
Python on the other hand is a fast, interactive, forgiving interface that boils programming down to the basic nuts and bolts that you need to understand before interfacing with fancy UIs and physics.
Re: On the making of a girl nerd
#44Earlier quoted context omitted.
To be fair, heapsort isn't what real programming is about either. (In fact I'd argue full-stack game programming combines more of technology principles than almost any other sub-field, not to mention non-tech principles in the art and design and story.) The GP's general point however is if you're trying to attract people into the field in the first place, dangling shiny objects isn't a bad way to go. I started with w…
Sorting algorithms are useful for teaching though. Not only do they help the student with writing code, the introduce important parts of programming as well as Big-O notation. Maybe you are right, but if someone was dangling a "Lets learn Unity3D" course in front of me, I would never ever attend that university.
Are sorting algos the best methods for helping students write code and learning about Big-O? I don't think so. Learning the fundamental data structures are a lot more useful for that purpose, I think. Of the standard crop, I think the binary search is a good algorithm to teach (though one must note its historical implementation problems in languages with fixed int sizes), and if you're going to do sorting then quicksort + insertion sort when N Instead of the cast of characters for sorting algos, I'd rather see something like this cast of maze generation algos: http://weblog.jamisbuck.org/2011/2/7/maze-generation-algorit... I think they would accomplish your goals better, plus they have shininess built-in.
>…"Lets learn Unity3D" course in front of me, I would never ever attend that university.
But you would probably still be doing programming and CS elsewhere. You're already set. This post is about trying to attract people into programming at the HS or college level who otherwise wouldn't be. But from the other comments it seems like I might agree with you specifically on Unity3D; I haven't used it myself but it doesn't sound all that rad as a teaching tool. I fully support mixing PyGame into a Python course, though.
Re: On the making of a girl nerd
#45..here comes the white knights.
Re: On the making of a girl nerd
#46One more point i'd add about the general immaturity and unfairness of school pupils, is that the smart boys are probably unkind towards to the smart girls, out of some sense of competitiveness. I don't have evidence of this but it seemed to be an abundant sentiment when I was at school.
Re: On the making of a girl nerd
#47Processing ( http://www.processing.org ) is a good environment to teach programming in. It addresses most of the concerns about Java (removes boiler plate , further simplifies the language), while giving people access to all of Java as the class moves to more complex concepts. It also provides a fun, visual programming environment without the complexity of a complete modern 3D game engine or web browser. Python is pr…
Re: On the making of a girl nerd
#48Python is great, but I recommend that schools should start programming classes with Unity3D. Within the first class you can have objects with physics bouncing off of each other, and by the end of the course you can have a legitimate game to play (that can even be sent to your phone or tablet). The "javascript" variant is fairly straightforward and if you take it far enough can be quite powerful. At first the students…
The issue with Unity is that it is a complex, fully featured 3D game engine. A lot of what you do and learn, as a beginner, has nothing to do with writing code and is more about how game engines work. Like what a mesh is, what a rigid body is, how to set up a particle system, etc. I can see students getting hung up on these details to the point where learning how to script is a secondary goal.
This comes from experience. I've worked with a game designer whose only real programming experience was inside of Unity and he was difficult to work with because he didn't have the ability to separate game engine (Unity) features\concepts from programming language concepts. So I'd get weird questions like "why doesn't Lua have 3D object parenting".
The same thing can happen in any complex environment where scripting can be secondary to the idiosyncrasies of the environment (Unity, Flash, web browser, etc.)
Re: On the making of a girl nerd
#49Earlier quoted context omitted.
Compare Hello, World! in the two languages, in terms of new concepts that need to be known to understand it. In C++ you need to know about including and cout. In Java you've got all that class, public, static, blah blah nonsense.
I did a presentation at my old high school about why programming is awesome in general, and had a couple notes on this. I counted 18 unique facts that need to be mentioned in order to completely understand a Java Hello World, and 25 for C++. For Python, it's either 4 or 5 depending on whether you start with the REPL or not.
document.write("Hello, world");
or:
alert("Hello, world");
Two lines of overhead counting the script tags.
For all its faults (and they are many) I think I'd argue for Javascript as a first teaching language (maybe focusing on Crockford's "good parts", or maybe some variant like Coffeescript). Minimal overhead. Support for reasonably advanced concepts like objects and anonymous functions. Will run on just about any device the student (or his or her friends own) without having to install anything. Trivial to distribute your creations. Has actual employability value (this, I think, is sole reason Java has become so popular).
I don't want to get bogged down in the argument over strong/weak/dynamic/static typing -- but also don't think it's necessary for a beginning course.
Re: On the making of a girl nerd
#50Is the article seriously advocating increasing the number of women in CS by watering down their college courses? An easy "gold" course for the girls, a harder "black" course for boys (and the few girls who would have done CS absent any intervention)? I also found this very annoying: "I have found an amazing correlation between women with math Ph.D.’s and women whose fathers are mathematicians...you wouldn’t be able t…
No, it's advocating increasing the number of women in CS by proposing a separate 101 course for people (like, the article assumes, most women) with no prior programming experience, while retaining an "introduction" course for those who do have that. I didn't see any implication that higher-level courses should have separate tracks.
These implications strike me as implausible. I think it would make more sense to create the for-true-beginners course with the expectation that the regular intro course comes after it.