Live data from Hacker News

On the making of a girl nerd

mathbabe.org

11–20 of 73 posts

Re: On the making of a girl nerd

#11
post #6
post #3

Earlier quoted context omitted.

Its better than C++ at least, which I learned in High School.

You 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…

I 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.

Re: On the making of a girl nerd

#12

Anyone 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.

The College Board Advanced Placement exam for Computer Science has used Java for several years now. See 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.

Prior to that it was C++. I think they're actually moving in the right direction.

Re: On the making of a girl nerd

#13
post #4
post #3

Earlier quoted context omitted.

Its better than C++ at least, which I learned in High School.

I'm only 24 and I was learning BASIC in High School, back in Fiji.

I 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.

Re: On the making of a girl nerd

#14
post #4
post #3

Earlier quoted context omitted.

Its better than C++ at least, which I learned in High School.

I'm only 24 and I was learning BASIC in High School, back in Fiji.

I 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

Re: On the making of a girl nerd

#15
post #7

Anyone 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.

Why? What is so bad about Java that it makes learning it so bad as a first language or as a introduction to programming?

Having 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.

Re: On the making of a girl nerd

#16
post #6

Earlier quoted context omitted.

You 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…

I 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…

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 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++.

Re: On the making of a girl nerd

#17
post #12

Earlier quoted context omitted.

The College Board Advanced Placement exam for Computer Science has used Java for several years now. See 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.

Prior to that it was C++. I think they're actually moving in the right direction.

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.

Re: On the making of a girl nerd

#18
post #12

Earlier quoted context omitted.

The College Board Advanced Placement exam for Computer Science has used Java for several years now. See 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.

Prior to that it was C++. I think they're actually moving in the right direction.

The sad part is they can't realistically choose to use python any time soon, because the language is undergoing backwards incompatible changes. Until python 3 is the norm everywhere it's tough to teach to such a moving target.

Re: On the making of a girl nerd

#19
post #7

Anyone 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.

Why? What is so bad about Java that it makes learning it so bad as a first language or as a introduction to programming?

It's extremely complicated. The verbosity is not just LongerKeywords, it is endemic.

Re: On the making of a girl nerd

#20
Python 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.

Post reply on HN