8 ms·
On the making of a girl nerd
- macavity23 15y agoAnyone even considering teaching Java as a first language to high school students should be given a good sound slap - and I say this as a Java dev.
- hbhanu 15y agoMy freshman and sophomore years, I was taught Java... the rest of undergrad and grad, I was living in a world of C and Matlab. I have no idea why it was taught in that order, and I think they're in the process of fixing it, but I remember my first C course when we started doing pointer arithmetic... quite the experience!
- Symmetry 15y agoIts better than C++ at least, which I learned in High School.
- navs 15y agoI'm only 24 and I was learning BASIC in High School, back in Fiji.
- rollypolly 15y agoI think BASIC, Python, and other simple languages are much better than C, C++, Java. Those latter languages are like teaching someone to swim by pushing them off the deep end.
- tlear 15y agoI think BASIC is probably a better language to learn first then Java. In a perfect world I think kids would be taught Lua, Python or Ruby. Now that I think about it even Javascript would be much better to teach then Java
- admg 15y agoI'm 25 and was using comal in high school, seems to have been a particularly rare language.
- scott_s 15y agoYou can do just fine with C++. Or Java. I have taught new programmers using both. I think you can do better with Python, because there's less initial friction. I'd rather not have to tell students to ignore "public static void main" because there are several concepts in that phrase alone that I'd rather they not worry themselves with. I want them to focus on developing the ability to think algorithmically. But, as I said, you can still do this just fine in C++ or Java. I think that people tend to place way too much importance on the first language we teach students. What matters far more is the quality of the teaching itself, and the relevance and logical progression of the projects the students have to solve.
- kingkilr 15y agoI think it matters more than you give it credit. Michigan State did an experiment where they replaced one of the Intro to CS classes (which were formally in C++) with Python. The result they found is that for people who went on to CSII (in C++), they did just as well; but for people who were non-CS majors, a) they did significantly better than non-CS majors starting with C++, and b) they were more likely to take more CS courses. So if you're someone already committed to programming or computer science, maybe it doesn't matter, but if you're trying to get your feet wet, it matters a great deal.
- scott_s 15y agoI looked up those two papers: "Python CS1 as Preparation for C++ CS2": http://www.cse.msu.edu/~enbody/fp039-enbody-revised.pdf 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 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 isn't a predictor of success. Conclusions from the first paper: When final exams were compared for a CS2 course offered before the Python transition with a course after the transition no statistical difference was found. The first CS2 course after the transition contained a mixture of Python-prepared and non-Python prepared students. There was no statistical difference in the performance between those two student groups. Conclusions from the second paper: We conclude that starting students with Python has not had a negative impact within a C++ based curriculum. It would have been nice to conclude that the Python students did better in these courses, but the evidence does not appear to support that hypothesis. With that said, I do agree with the authors that exposure to more languages, environments and tools is a good thing, and for that reason, I'd prefer using Python, then switching to C++.
- mhurron 15y agoWhy? What is so bad about Java that it makes learning it so bad as a first language or as a introduction to programming?
- kingkilr 15y agoBecause the hello world program has so much boilerplate. It means from the get-go you're telling students, "Don't worry about this, and this, and that; ignore it and we'll explain it later." You could go months into learning programming before you need to understand what a static method is, but it's right there in your first program.
- sirclueless 15y agoHaving tried to tutor beginning programmers in Java, there are a lot of things that bug me. There is a lot of boilerplate and cruft that must exist in order to get anything done, and the type system and visibility just gets in the way until you want to teach people how to architect large programs. Each class must be in its own file, and the execution starts from "public static void main(String[] args)" inside it. Then you have to deal with complex data types very early: python's set of primitives is much richer, which is great when teaching. Also, doing IO in Java is a pain unless you distribute a library. To those who think Python's significant whitespace is a problem, I think you need to watch an otherwise intelligent beginner struggle with an error on line 80 because they mismatched their braces on line 20. If you aren't properly indenting your code, it becomes an unreadable mess anyways, so why not enforce it at a language level? And if you think an IDE can do this for you, think again. People just complain that it does things wrong when it indents half their methods by 2 extra tabstops because they missed a brace. They don't really get it, they just get into a feedback loop where they say, "Oh, it won't compile. Let me scan the entire program counting braces" which is a waste of everyone's time. I've seen people go entire semesters without ever learning to write readable indented code.
- UnFleshedOne 15y agoI "got" indentation after spending 2 days hunting down some bug in calculations only to have the teacher take 1 minute to reformat the code and another minute to point out an instruction that was sitting in the inner loop. With proper formatting it was a glaringly obvious mistake...
- tantalor 15y agoThe College Board Advanced Placement exam for Computer Science has used Java for several years now. See http://apcentral.collegeboard.com/apc/public/repository/ap-computer-science-course-description.pdf http://apcentral.collegeboard.com/apc/public/repository/ap-c... I'm not saying that's a good idea, just that the practice is fairly common. I think they're nuts.
- eli 15y agoPrior to that it was C++. I think they're actually moving in the right direction.
- gaius 15y agoCompare 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 <iostream> and cout. In Java you've got all that class, public, static, blah blah nonsense.
- Jach 15y agoI 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.
- Turing_Machine 15y agoIn Javascript it's either: 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.
- adestefan 15y agoWhen I took the CS AP test in 1997 it was in Pascal. It was shortly changed to C++ and then was switched to the current Java. Most of my college CS (1998-2002) courses were in C, including first year courses. As it turned out my senior thesis was a Pascal compiler written in C that targeted the early JVM. Man I should have stuck with that, but my conclusion at the time was, while it was easy to target, the JVM was just too much baggage to carry around. Personally, I think Pascal was a great choice for those high school courses.
- marquis 15y agoI have to agree completely: math and science just hasn't been cool and it's ostracized not just girls but I bet a hell of a lot of boys as well. I dropped out of my extracurricular science/computer classes as a teenager to maintain my social reputation, and I know I'm missing huge pieces of knowledge because of this. What's changed? Well, computers are pretty cool now. The high school I mentor at has the hippest computer class I've ever seen, the teacher is an enthusiastic woman who drives the energy of the class and lets them focus on what interests them while directing them towards genuine learning towards what should be amazing careers for all of them. It's seriously encouraging and I have high hopes for a better gender balance in the years to come.
- GavinB 15y agoPython 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 can just hack things together, but as they go on they'll learn real programming. Also, the basic IDE is free.
- mickeyben 15y agoAgree, I don't know a lot about Unity3D but having an asset-centered workflow should be easier to approach and will sound more logical to students.
- reitzensteinm 15y agoI'm a full time Unity developer now (see http://www.underthegarden.com http://www.underthegarden.com), and while it's a really powerful toolkit, some of the bugs and problems I've encountered through no fault of my own have been pull-your-hair-out territory for me; they would literally be impossible for a beginner to overcome. While getting something running quickly is great, I'm not so sure having your instructor fix stuff up in your project every couple of days is the best way to start a programming for beginners course. It sets up the wrong mentality; that programming is complicated, stuff breaks even when you didn't touch it, or when you touch something completely unrelated, the best way to solve problems is to Google them or ask your instructor instead of think, and that learning the API more is the best way to get better at problem solving. This is nothing against Unity in particular; it's amongst the best of its competitors, and I don't regret choosing it for my work; it's just the nature of the beast when dealing with massive existing code bases. That said, I think getting started with graphics and sounds is a great idea; I'd just use something a lot closer to the metal and less complicated. Blitz2D would have been my choice 5 years ago; I'm not so sure now (how is PyGame?).
- vitno 15y agoI don't like that at all. I understand you are trying to make CS more "fun", but I would hate it. I'm a CS major because I enjoy thinking about the problems and programming solutions. Unity3D is not what real programming is about, and you shouldn't sugar coat it. A student might have a blast with Unity3D then despise learning about heapsort.
- sp332 15y agoI thought this post from that blog was interesting: Why "MathBabe"? http://mathbabe.org/2011/06/13/why-mathbabe/ http://mathbabe.org/2011/06/13/why-mathbabe/ Actually there’s another reason I ultimately decided to call this blog “mathbabe,” namely when I googled it[...] there’s another site with a very similar name which simply shows nearly naked women next to cliff notes on basic math subjects. WTF?!? It is ridiculously obvious to me that math babes should be doing math, not adorning it. So I kind of had to call myself mathbabe after that.
- yummyfajitas 15y agoIs 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 to explain the statistics I have." If you have this data, why not post it? Will mathbabe.org run out of bits?
- jbellis 15y agoNo, 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.
- dspeyer 15y agoThe implication seems to be that students with no experience can catch up with experienced students in one semester. Or perhaps that the experienced students have an advantage in perspective but not in actual knowledge, and the perspective can be taught in parallel with the knowledge at little cost. 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.
- frossie 15y agoIndeed, and let's not forget the other half of her point, which was to have introductory level courses focus on solving examples from across science, rather than CS esoterics. From personal experience I agree that if you are trying to get someone interested in a tool, show them what the tool can do before showing them how the tool is made (or how to make their own).
- cschmidt 15y agoMIT has a class like this as well, 6.00 https://stellar.mit.edu/S/course/6/sp12/6.00/index.html https://stellar.mit.edu/S/course/6/sp12/6.00/index.html This subject is aimed at students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in solving problems. It also aims to help students, regardless of their major, to feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals. The class will use the Python programming language.
- Impossible 15y agoProcessing (http://www.processing.org 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 probably a better introduction language, but Processing is a close second.
- marquis 15y agoI agree with teaching Processing. What is wonderful about it is that you get immediate visual feedback, and an immediate interest in learning algorithms.
- cs702 15y agoMost of the comments (so far) are focusing primarily on the details of the Harvey Mudd example instead of the much broader, more important theme of mathbabe's post: She wants educators to think seriously about the selection process for young nerds and how this process is currently biased so as to weed out girls. She believes we can do much better. She speaks from personal experience. On a different post on her blog, she writes, "when I and two other girls (and, as it happens, no boys) in the 6th grade did well enough to go into a special, advanced 7th grade algebra class, my (female) teacher brought us up to the front of the room and told the three of us 'I don’t see why you would challenge yourselves like this anyway since you are girls, and you won’t be needing math when you grow up.' I was the only one of the three of us to actually choose that class, and I was the only girl in the algebra class."[1] No wonder she thinks we can do much better! [1] http://mathbabe.org/2012/02/06/women-in-math/ http://mathbabe.org/2012/02/06/women-in-math/
- pyre 15y agoI think that speaks more to the general attitudes towards life of the teacher. The general premise is, "why challenge yourself when you coast through without putting in the effort?" It's wrapped up in sexism (girls don't need math), but boiled down to its base form, that's what she's telling those kids.
- cs702 15y agoAgree -- that's a good way to summarize what that teacher told mathbabe and the other two girls. Regardless, of the three girls, only mathbabe persisted with math; the other two were unfairly weeded out. The question is, is this type of weeding-out pervasive? Mathbabe clearly believes the answer is yes, and we should we doing something about it.
- pyre 15y agoI agree that those two girls were unfairly weeded out of math, and we need to prevent that. My point was that that teacher either needs to take a different attitude towards life, or get weeded out of the system herself. Why? Because her attitude will get impressed not just on girls attempting to enter predominantly male spaces, but upon all students that she interacts with.
- rwillystyle 15y agoGive me a break. No self respecting "nerd" would call himself a nerd. ..here comes the white knights.
- Tycho 15y agoI think a great deal of societal problems are caused by social 'pressures' and 'norms' (ie. bullying). Remember how terrified everyone was about being perceived as uncool? I remember when I developed an interest in classical music, i pratically had to keep it a secret. One 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.
- petegrif 15y agoGreat piece - thanks.