18 ms·
You make a lot of assumptions about how kids have to be taught coding. > I tried everything possible. Every other trick in the trade. Even tried to start with
by jkeesh 14y ago
You make a lot of assumptions about how kids have to be taught coding.
> I tried everything possible. Every other trick in the trade. Even tried to start with Python first and not C.
> They struggle to understand where or why should you use an if/else/switch statement, or a for/do/while loop. Its difficult for them to map solution patterns to a code pattern. Its not their fault. Its ours. Better luck trying to explain a kid why they are being asked to write a program find greatest of three numbers, find factorials, or sort numbers. To them it very clearly looks math in a different language. Its that boring math thing all over again.
There are so many other ways to introduce students to programming. This is the main part of the problem. So many people think this is how you have to teach programming. I am in full agreement that you need to teach problem solving, and you can do that with programming.
We start teaching with a simplified language called "karel"--where you have a dog who can only turn left, move, and put down and pick up tennis balls. That's it. There is no overhead of python or C or java. It's just a few commands and a dog. And there is no question on why you should do it.... people do this because it is immediately fun. Printing "hello world" for most people (especially younger kids) is not immediately fun.
Try our demo on the code.org page http://www.code.org/learn/codehs http://www.code.org/learn/codehs
I have started thousands of students in person with our karel the dog demo. Everyone can do it. Almost everyone finds it to be really fun. Because karel is a simplified language, it is all about problem solving. How do you get a dog to find the midpoint of his world when he cant store variables, but can only ask questions about the state and put down tennis balls?
I contend that you can teach problem solving to students through programming--but it is so crucial how you make that initial experience feel.
There is no
public static void main(String[] args)
to get started.
Try this out at http://codehs.com http://codehs.com. We have schools using it all over the country, and young students can get if/else, and for/while.
> Beyond all this it needs to fun, which it very clearly isn't.
Find a student who didnt like programming, and have them try our karel the dog starter for 10 minutes. Let us know what they say. I bet they think it's fun.
- gislifb 14y agoI have a hard time understanding why on earth anyone would have semicolons and parentheses in a programming language for kids! A comma, instead of a semicolon, would be much more natural for kids imo and the parentheses are just there to confuse it seems. Just keep it as simple as possible and have the syntax as close to natural language "rules" as possible then kids might start to understand things better.
- christiangenco 14y agoThere may be no `public static void main(String[] args)`, but there's still a lot of `();` We can do better! Why not just `move`, `turnLeft`, `putBall`, and `takeBall`? Better yet, camelCase is kind of weird. Why not `turn left`, `put ball`, and `take ball`?
- Confusion 14y agoI think both you and the grandparent are making a mistake. He assumes children dislike math. You assume children will like karel. I think the truth is that children have different interests and that you can only bring them to programming by latching on to those interests. Many children like math. Many other children will not like karel. The result: to engage as many children as possible, you need several introductory tracks: one that uses math, one that uses puzzle solving, one that uses drawing, one for another common interest, etc. Also be aware of the way interests change with age. Teaching is hard and almost every approach invented seems to rely on yet another silver bullet.
- pflats 14y agoIt's dated, slow, ugly, and poorly-supported, but in my experience, Alice is the easiest introduction and call to action for a 7-10th grade proto-programmer. You create 3d animations using an OO syntax. Like Karel, you build up from basic methods, but you get to animate a scene, rather than have a robot/dog pick up and drop stuff. My students have really enjoyed it, and it let me get to deeper concepts far faster than other instruction. edit: http://www.alice.org http://www.alice.org and it looks like development has actually woken up. The blog is active and there's a new version out. Big improvement over last year when I went there.
- jkeesh 14y agohaha yes, you make a good point. I do think that including several ways to try to connect with beginners is important, and that is what we hope to do. I really like the logo the turtle approach as well. I think my main concern with the previous comment is that the dominant method for introducing programming is too syntax-heavy, math-heavy, starting with a language with a lot of overhead for beginners, so ours is an alternative. Not everyone will like our intro, as you note. But I think it has a very different feel than the way many students are introduced to programming in school (see AP Java class).
- MikeAmelung 14y agoI think this is a good point, but I'll take it a step further. The kid that likes drawing doesn't have to be a programmer, so stop trying to teach it to him and let him draw without the constraints that programming brings. We don't all have to be the same.
- cpressey 14y agoOT and I don't know if you'll find this useful but http://codehs.com/ http://codehs.com/ looks like an absolute trainwreck to me, layout-wise. I'm using Firefox 19 on Ubuntu.
- jkeesh 14y agoThank you Hacker News reader for the very Hacker-News-esque constructive criticism. We are trying to improve our site, so if you have specific constructive feedback for us, we would appreciate it. Thanks! :)
- cpressey 14y agoApologies if "absolute trainwreck" came off as harsh or unspecific. My specific, actionable feedback is: Check how your site looks in multiple common browsers (IE, Firefox, Chrome...) while you develop it. Check how your site looks on screen sizes smaller than your own, by resizing the browser window. If it looks fine to you, then maybe the problem is on my end. But there is definitely a problem on my end, as I assume you did not intend for the "Why CodeHS?" text to overrun on top of the photo of the classroom.
- zachgalant 14y agoworking fine for me. I think it might just be an issue with ubuntu.
- arethuza 14y agoLooks OK to me using Firefox and Chrome on Ubuntu.
- cpressey 14y agoI tried in Chromium on Ubuntu, and Firefox and IE on Windows. It looks trainwreck-y on all of them for me. By the process of elimination, I believe it's because I'm using a T-mobile wireless dongle. The upstream proxy attempts to reduce bandwidth by doing things like coalescing external CSS and JS inline. I've seen this break one other site (LinkedIn profile editing, which seemed to be a bit fast and loose about its use of ajax) but every other site I've used has been fine (even e.g. Asana, which is rather intensive.) I looked at the source of codehs.com (insofar as I can figure it out, what with all the CSS and JS put inline...) and I'll change my actionable feedback to: Try to keep it simple. That seems like far more stuff than you'd actually need on a landing page. I also noticed that, when loading on IE, it pops up a message saying: You are using Internet Explorer, an unsupported browser :( You should download Google Chrome so you can get started! It's a pity that the site doesn't support the browser with the largest market share -- that's probably something you should work on.
- jonny_eh 14y agoClicking "Learn to code with CodeHS!" on http://www.code.org/learn/codehs http://www.code.org/learn/codehs results in the link being opened within the iframe.
- ajanuary 14y ago> We start teaching with a simplified language called "karel" ... It's just a few commands and a dog. Off topic, but curious: why does the language have semi-colons?
- mhurron 14y agoBecause it's Java. Also, significant whitespace is a pain in the ass.
- ajanuary 14y agoIt seems to be JavaScript, not Java. Semi-colons are great for real programming. They help deal with ambiguity when you want to split something over several lines yadda yadda let's not have the debate here. But I don't see it's utility in something like this. It becomes one of those "just because" answers if someone asks why you need to put a semi-colon at the end of the line. I could understand it if it was pitched at an "almost ready to write real code", but from what I've seen, and looking over the chapter headings, that doesn't seem to be the case. I guess really I'm trying to look at the balance between using a DSL in a real language and using a toy DSL with a simple syntax when introducing basic concepts and shaping how people think about problems. I use "real" to mean anything written outside of the CodeHS playpen.
- mhurron 14y agoIt looks like there are many, many implementations of Karel the Robot. I first saw Karel watching the Engineering Anywhere CS106a videos provided by Stanford. That course was in Java but used Karel at the beginning to get students used to writing programs, in this case instructions to the robot. If things like why ; and what is this `public void` had to be introduced before the groundwork for understanding what they were doing, it was done with a 'do this and we'll be able to explain why shortly.' Which to me, is a perfectly valid way of introducing things. Because the Karel implementation there was Java, controlling the robot was just Java. You learned Java syntax as you played in the sandbox. You used that syntax as you moved out of the sandbox. FYI the semi-colon at then end of the lines, if I remember correctly, was explained with this is how you tell the computer in this language we're done with a statement. No different then us using periods in English at the end of a sentence, its just the rules of this language. As an aside, I really liked the Stanford CS106a course videos. I think the instructor did a very good job introducing Java and programing in general.