4 ms·
I love python, so I think this is fantastic for the language and the community. I was taught Java at school... I hated it even then. However, the higher level
by roder 17y ago
I love python, so I think this is fantastic for the language and the community.
I was taught Java at school... I hated it even then.
However, the higher level languages abstract away the core of computer science. ANSI-C is what should be taught IMHO, so all the smoke and mirrors are removed and THEN you can appreciate the higher level langs and their lovely (sometimes) abstractions.
- skolor 17y agoMaybe, but only if it was taught in sequence with a high level course. From my experience, you need both. While it is incredibly useful to learn about the low level stuff, you want be able to hold on to students as easily if it takes you a week to teach them how to do "Hello, World." Just going off how my knowledge has gone, I would say a sequence of High Level OO language->Low level language-> High Level Language-> Functional Language, although that is more of a college level course sequence, not for high school courses.
- roder 17y agoYou need a curriculum, no doubt, I'm with you 100%. I think it's especially important to teach different paradigms. I've noticed for myself, that functional languages "gel" better for me than do object oriented languages. That doesn't seem to be the norm afaik, but I wish I would have been exposed to functional languages earlier in life.
- jamesbritt 17y ago"However, the higher level languages abstract away the core of computer science." OK, but what is "the core of computer science"? Is it CPUs based on the von Neumann architecture, or is it symbolic manipulation?
- roder 17y agoHeh, that's a good question. I was thinking in the context of von Neumann arch, but it's a good argument that it's symbolic manipulation. In that case, any language will do... but the best programmers I know almost intrinsically know the von Neumann architecture and they're C programmers too :)
- lanaer 17y agoI'm not entirely sure that the craft of programming has a great deal to do with the core of computer science. A programmer develops software for the hardware of today, so good programmers had better be well acquainted with von Neumann’s architecture. Theoretical computer science doesn’t need that architecture. It also needs mathematicians more than programmers, I think.
- ori_b 17y agoIt's both. It's the lambda calculus and the turing machine. It's useful to understand both the way that the machine works, down the the assembly level, and if possible below, since it lets you write code that fits the way the hardware works well. It's useful to understand the symbolic side, since it lets you reason about algorithms, and write code that fits the way mathematics work. You can't get away from either.
- spectre 17y agoThe University I'm at (University of Canterbury, Christchurch) is switching from Java to Python for 2010. The main reason is that we loose ~10% of the undergraduate enrolment explaining why hello world is: public class Main { public static void main(String[] args) { System.out.println("Hello World"); }}
- sketerpot 17y agoI'm TAing an introductory programming class, and the reason we lose people is because programming can be hard for people to wrap their minds around. Loops are easy for you and me, but for a bewildered freshman who's never seen them before, translating a simple problem into actual looping code can seem like an insurmountable brick wall. Ever seen someone write "for" and then stare blankly at the screen for the next half hour? It's painful to watch. (I just got back from helping a bunch of freshmen try to test a number for primality. It was brutal. And we're using a language without all that "public static void main" stuff, so that's not even an issue.)
- Pistos2 17y agoWhat language is that?
- sketerpot 17y agoWe're using Matlab. I'm teaching electrical engineering students, so they're going to have to know Matlab soon anyway. It's got fairly straightforward syntax, very nice vectorized array operations, and a read-eval-print loop so you don't have to waste time compiling. It's not as pretty and pleasant as Python, but the difference isn't significant at that level.
- polyester 17y agoI'm at the same university, and I feel the movement away from Java for introductory programming is a step in the right direction, primarily because of this initial learning curve. The example you've given perfectly demonstrates why Java should not be used as a teaching language - just getting a simple program running, you have thrown at you classes, methods, arrays, packages, access modifiers etc; this serves as a large barrier to learning the important programming concepts. This isn't a call to "dumb down" Computer Science - the curriculum should still be challenging, but Java is the wrong kind of challenging. Students are spending more time learning how Java works than learning how to program. We're losing a lot of students who might otherwise love programming if they could see the beauty of it earlier on. Having students learn using a Lisp would be better (hooray for minimal syntax!), but Python is a nice compromise.