The America Can Code Act has been recently introduced to the US House of Representatives. It is said that it will add computer science to the list of foreign languages that are useful for US students to learn, including (I think) Spanish and French. There will be some sort of incentive for schools to teach computer science all the way through school.
What they're trying to accomplish is great! In a world full of advanced technology, most of which contains advanced programmable processors, almost anyone can benefit from knowing how it works. Of course, educators will have to choose a good learning tool to introduce the concepts - hopefully not the disaster that is Scratch. (More on that and other gripes with CS education in "Teach Real Programming, Please.") With the sudden interest in having kids learn programming, a well-thought-out curriculum will probably be developed.
I'm not sure how I would feel about the Common Core assimilating computer science into their collective. They would probably find some way to make it apply to somewhat-immediate life, but CS is such a quickly-growing field that almost any use for the things the kids are learning would be slippery. Therefore, the CC might try to teach concepts, like data hiding, polymorphism, and type systems that can't do anything on their own.
Also, nobody speaks programming. There is no level of geekness that could prompt someone to use any scripting language for verbal communication. Why did the proposers of the ACCA try to merge it with real language education? In my opinion, the education system could definitely benefit from being poked by the creation of a new subject.
Thursday, December 12, 2013
Tuesday, December 10, 2013
Composing Songs in Nonfluent Language
I was just messing around with Lojban words and some basic tones, trying to make a coherent song when I noticed that composing in another language is a lot harder than just speaking in it. Of course, composing rhythmic lyrics in one's one native language is more difficult than just speaking, but it appeared that the two difficulties - meter and syntax - were more than summed. That is because, when speaking a language in which one is fluent, words can just be shoved together and permuted a little bit. However, when trying to write a song or poem in a different language, the text must first be translated. Especially in Lojban, translations can have wildly different syllable counts than in the native language. So, it's necessary to keep trying different ways of expressing a similar idea, selbri if you will, and translating it to see if it fits. It's a little bit easier in languages that use cmavo - particles - for grammar structure because a lot of them can be elided. However, that leads to some inconsistency in formality when trying to pack utterances of different lengths into a uniform meter. Of course, if writing for a language most people don't know, it's OK if it's not fully valid grammar!
Monday, December 9, 2013
Skill Trees in Education
I looked over some of the programming tutorials recommended by Hour of Code and found that they taught the material very linearly, even if the subject material was very divergent. I thought of the "skill trees" that some games have and imagined how they might be applied to education. Instead of having to go through every detail that the writer of the course thought was interesting, the student could start with the critical infrastructure and then get presented with an array of paths from which to choose.
Suppose a student just finished learning the syntax of a programming language and how to make it do basic IO. He should then get to choose which to pursue first: file handles, rendering, classes, or whatever else you can do with basic understanding of programming. Even better, for a computer science course, things like binary and networking could be unlocked in parallel to programming.
With skill trees, students could see their progress split into a huge sprawl of new things to learn and see how all these interesting skills work together. Perhaps some experimentation or studies are in order?
Sunday, December 8, 2013
Bankruptcy is Theft
In today's culture, when people get so insanely far into debt that they have no hope of ever repaying their loans, they are encouraged to file for bankruptcy. When one succeeds in doing so, all debts and contracts are destroying, producing a new credit score. That sounds pretty nice, but...
It is, essentially, theft. The process of bankruptcy causes the money that the creditors gave to be simply destroyed. Nobody will ever give that money again. The money that would eventually be passed around, or used as interest to pay for the user of money, is withheld from whoever economics would eventually give it to. So, bankruptcy is theft from not only the creditors, but from inventors who could have used it to better the world.
Wednesday, December 4, 2013
Teach Real Programming, Please
Maybe this belongs at Fleex's Lab, but it seems that's a place for technical documentation; things pertaining to computers that are nontechnical can be here.
I'm all for the Week of Computer Science and the Hour of Code and all manner of other in-school programs that teach kids basic coding and computer science skills. In fact, I've done some teaching on it myself from time to time.
I'm a little bit lukewarm as to "programming languages" designed to help people learn to code. Stop: Yes, the B in BASIC stands for Beginner's. Microsoft just keeps the name because it's catchy; VB is far beyond beginner's tinkering. Things like Scratch are kind of programming in that they require you to think about program flow. However, these usually - still looking at you, Scratch - are fully visual and are a pretty bad example of pretty much any modern programming style. In Scratch, you're presented with tools that are better suited for silly slideshows. Variables are considered advanced. No. Scalar variables are some of the first things students should be learning, right after the obligatory console-outputting one-liners.
Slideshow programming is not programming at all. Get the kids into an IDE with a debugger, a compiler, and some syntax highlighting. (IntelliSense wouldn't hurt either.) The main issue is that it associates action with visual change, which is not usually how stuff works in the real world. When there's an error in the program logic, visual symptoms will usually happen considerably later in execution. We need to see the state of all the variables at each stage to really understand what's happening.
Code Academy does it very well. They use a real language, JavaScript, and provide easy-to-follow instructions. It might be a little too restrictive for those who want to jump ahead, but it's amazing for beginners. It would be great if it was offline-capable and taught OOP sooner.
Other things, like that one that lets beginners "code their own games" online, are not so good. First, it overwhelms the newbies with all manner of infrastructure that will cause scary errors if accidentally perturbed. Then, it doesn't explain what all this fancy stuff is - it just orders them to place a mysterious line in some special place that will cause awesome stuff to happen. If I had started programming with this, I never would have made it to where I am.
So, to all the lower school teachers and CS-spreading enthusiasts, please, please take the time to understand what the kids are going to learn. Teach them binary if it will help. Teach them how networks work when you start teaching how to create networked programs. Teach them, at every stage, why what they're doing works. This is what we need for a bright, technology-integrated future.
I'm all for the Week of Computer Science and the Hour of Code and all manner of other in-school programs that teach kids basic coding and computer science skills. In fact, I've done some teaching on it myself from time to time.
I'm a little bit lukewarm as to "programming languages" designed to help people learn to code. Stop: Yes, the B in BASIC stands for Beginner's. Microsoft just keeps the name because it's catchy; VB is far beyond beginner's tinkering. Things like Scratch are kind of programming in that they require you to think about program flow. However, these usually - still looking at you, Scratch - are fully visual and are a pretty bad example of pretty much any modern programming style. In Scratch, you're presented with tools that are better suited for silly slideshows. Variables are considered advanced. No. Scalar variables are some of the first things students should be learning, right after the obligatory console-outputting one-liners.
Slideshow programming is not programming at all. Get the kids into an IDE with a debugger, a compiler, and some syntax highlighting. (IntelliSense wouldn't hurt either.) The main issue is that it associates action with visual change, which is not usually how stuff works in the real world. When there's an error in the program logic, visual symptoms will usually happen considerably later in execution. We need to see the state of all the variables at each stage to really understand what's happening.
Code Academy does it very well. They use a real language, JavaScript, and provide easy-to-follow instructions. It might be a little too restrictive for those who want to jump ahead, but it's amazing for beginners. It would be great if it was offline-capable and taught OOP sooner.
Other things, like that one that lets beginners "code their own games" online, are not so good. First, it overwhelms the newbies with all manner of infrastructure that will cause scary errors if accidentally perturbed. Then, it doesn't explain what all this fancy stuff is - it just orders them to place a mysterious line in some special place that will cause awesome stuff to happen. If I had started programming with this, I never would have made it to where I am.
So, to all the lower school teachers and CS-spreading enthusiasts, please, please take the time to understand what the kids are going to learn. Teach them binary if it will help. Teach them how networks work when you start teaching how to create networked programs. Teach them, at every stage, why what they're doing works. This is what we need for a bright, technology-integrated future.
Saturday, November 30, 2013
Uneducational "Educational" Games
I was recently asked to put in the Cool Math Games web site into the list of sites my younger sister can view in her white-list browser. Now, before adding a site to the list (which is kind of a pain due to the brokenness of that particular browser), I went to inspect it. The first thing I said to myself was, "woah, I'm glad she doesn't have epilepsy." The color scheme is just so abhorrent and psychedelic that I can't believe it's actually recommended or allowed by any education professionals. It could at least have semi-readable text. Also, I'm probably banging my head against a wall on this one, but I think it's a terrible idea for kid/educational web sites to have ads.
Next up, I checked out some of the games. One advertising itself as "the world's hardest game" caught my attention. It is indeed difficult, but there is a distinct lack of mathematics or science of any kind. (To be honest, the only reason it's hard at all is that the controls are really unresponsive.) Continuing my quest for legitimate education, I found some racing game allegedly about multiples. I guess it kind of did; you're supposed to jump (yes jump, cars can do that, you know) over the other vehicles that bear numbers that are multiples of a given number. It's a pretty dull game with essentially no learning or even testing going on.
On and on, I found totally pointless games that are not much better than just watching some video (and throw a whole lot more script errors, thank you, webmaster and browser developer). Now, just one web site with this kind of junk wouldn't be too shocking. However, this has been the case all over the internet. Everywhere I go, I find web sites with "learning" "games" for kids. Nine out of ten are pointless. The rare one that actually puts some effort into teaching/assessing has ads plastered all over the place. The only good one I've found so far is Starfall, which teaches language and a little math to kindergarten children.
Is there hope for our children? Maybe. We just have to get them away from mindless alpha-wave entertainment and into engaging educational environments. There aren't a lot of good games available for free, but YouTube and a few good sites have some awesome resources for mathematics and other important skills.
Next up, I checked out some of the games. One advertising itself as "the world's hardest game" caught my attention. It is indeed difficult, but there is a distinct lack of mathematics or science of any kind. (To be honest, the only reason it's hard at all is that the controls are really unresponsive.) Continuing my quest for legitimate education, I found some racing game allegedly about multiples. I guess it kind of did; you're supposed to jump (yes jump, cars can do that, you know) over the other vehicles that bear numbers that are multiples of a given number. It's a pretty dull game with essentially no learning or even testing going on.
On and on, I found totally pointless games that are not much better than just watching some video (and throw a whole lot more script errors, thank you, webmaster and browser developer). Now, just one web site with this kind of junk wouldn't be too shocking. However, this has been the case all over the internet. Everywhere I go, I find web sites with "learning" "games" for kids. Nine out of ten are pointless. The rare one that actually puts some effort into teaching/assessing has ads plastered all over the place. The only good one I've found so far is Starfall, which teaches language and a little math to kindergarten children.
Is there hope for our children? Maybe. We just have to get them away from mindless alpha-wave entertainment and into engaging educational environments. There aren't a lot of good games available for free, but YouTube and a few good sites have some awesome resources for mathematics and other important skills.
Thursday, November 28, 2013
Table Manners
Tonight I was eating an amazingly delicious Thanksgiving dinner when I was gently reminded to use the appropriate methods of cutting/moving food. Usually, I would just stab the entire turkey segment with a fork and bite off fragments of it. However, it's apparently more polite to do some gymnastics involving a knife being supported by the fork cutting the meat like a hacksaw. It seems very much more difficult than just moving the food into my mouth in the easiest way. Similarly, placing utensils on the sides of the plate always facing a certain relative direction might look nice, but it's simpler to place all of them contiguously (in a napkin if you want) on the plate. I guess these customs just developed over time in Western civilization. Nevertheless, taking in nutrients would be far simpler if we were to abandon them.
Subscribe to:
Posts (Atom)