Showing posts with label Code. Show all posts
Showing posts with label Code. Show all posts

Wednesday, 26 September 2012

The Revolution Will Be Home-Made

An interesting BBC article about how the second industrial revolution with be a creative one brought about by grassroots makers, hobbyists, hackers and tinkerers out of sheds and garages.

The availability of cheap components, from microcontrollers such as Arduino and Raspberry Pi, coupled with the plethora of crowdsourcing models to allow the sharing of everything from ideas to funding, means that production can move out of the factory and into the home.
If the garages in which the computer revolution was born were all about computers and code then the makers' garages are filled with laser cutters and 3D printers.
And this time you don't need a computer science or business degree. 

Friday, 25 May 2012

Cargo-Bot - Programming game for iPad


I should probably stop surfing the net today, but I keep finding cool things. This is Cargo-Bot, a game that encourages the player to think like a programmer should. The player is given a stack of blocks, a grabber arm and a image of how the blocks should be stacked. 
The player then needs to drag and drop a series of commands that when executed, controls the arm so it stacks the blocks to match the image given. This is a perfect representation of Papert's constructionist ideas of learning theory.

I want to get this but I dont have an iPad :(

On a separate but just as interesting note, this is the first ever app to be made entirely on an iPad. Done with an app called Codea.

A programming book for bed-time stories

Imagine reading lines of code to a child every night while in bed? That would certainly send them to sleep, I dont think it would teach them much about programming.

Luckily, a real book has the same goal (teaching programming, not making kids fall asleep), but with a different approach. Lauren Ipsum is a story book aimed at young kids that embeds logical programming scenarios into children's stories. The stories seem cute, and the pictures look awesome. I've just bought one.

The book uses metaphors within a fairytale story to convey concepts that would be encountered in a programming environment, and is actually written by one of Facebook's engineers responsible for maintaining the programs which runs on their servers. He wife does the illustrations.

With each copy bought, the creators will donate a copy to a library or school.

Tuesday, 22 May 2012

People Shouldn't Learn To Code

A debate has come about recently, spawned firstly from a tweet by the major of New York City, Mike Bloomberg, and then a response by a guy called Jeff Atwood. The original tweet is below:


Great, the guy wants to learn code, lets leave it at that. But Jeff Atwood thinks not. Jeff is a bit of a superstar in the coding community, and on his blog he posted a piece called Please Don't Learn to Code.

His points seem to mainly revolve around his dislike for inexperienced programmers being employed and messing it up for the rest of them.



True, its not good to dilute the skill level of a workforce by flooding the sector with unqualified workers, but that might be more a problem with employers not hiring the right staff. Or if it is about there being too many under-qualified coders, surely that will mean there will be an increase in perfectly good coders who will no doubt float to the top.  Jeff seems to be inferring that if more people learn to code casually, everyone will want to be a professional coder.

Some people in the comments of this article can see his point and attributes this to the Dunning-Kruger effect, whereby incompetent people have a tendency to overestimate the level of their skill, and fail to realise where they fall short. This could well be true, but I digress.

What Jeff only touches on however, is the move to push programming into the forefront of education, and making it as an important as Maths, English and Science, something that Papert would advocate. Jeff says this wrong, as well as 'learning to code for the sake of learning how to code'.

As the writer of this post points out, learning to code is does not mean seeking to become a professional programmer, but is about gaining a better understanding of the technology that we use, and by gaining a whole host of transferrable skills that are applicable to thinking and solving all sorts of problems and as a way of approaching learning itself.

So, while I highly doubt Mike Bloomberg is really ever going to learn how to code, the question is should he? Yes, I think he should. I think many of us could do with understanding more of the basics of what makes the things we hold in our hands, the displays we read off every day, work (and also not work).

esmoove puts it well:
Learning new skills opens up new perceptual avenues and cognitive spaces. I'm learning to sew right now, not because the world needs another tailor but because I want to be able to recognize quality in clothing and create pieces that I can't find. Novice coders feel the same way about their digital goods and should be encouraged to continue. Learn to program.

Monday, 9 January 2012

Pinguino


Pin-goo-ee-no, Ping-wee-no, I'm not sure how to pronounce it. But this is a project that been developing since 2008, with the purpose of designing an Arduino that can be built on the cheap by anyone at home. It mostly supports Arduino code, and this is getting improved on. As for other hardware, for the next release they they are working on supporting Zigbee, OTG and CDC, which makes it a hell of a lot easier to plug things in and get them working. Also whats interesting is that they are working on getting Android support, so effectively turning this into an ADK board as well.

What caught my eye though is that the guy who developed it, Jean-Pierre Mandon, is a teacher at the robotic lab at the Aix en Provence School of Art in Southern France. Why an art school needs a robotics lab I'm not yet sure, but initially this project was meant as a tool for his students. This guy might be useful to talk to.

Ultimately, it looks like they are saying this board exists to build more features into the existing Arduino platform, while making it more widely compatible and cheaper to make. I think its worth giving this a look at, at least after the next version.

More info and an interesting interview at MAKE and the original site here.

Tuesday, 15 November 2011

Bridging The Gap

So far with my studies I'm finding an inherent problem with trying to teach, and I'm sure its something that anyone who has ever attempted to teach multiple people - especially in a group - has encountered. The problem is that everyone is different. Particularly for teaching, everyone has different skill levels, ability to learn, willingness to learn, and also different levels of interest in the taught subject. This makes it very hard to fit the curriculum around a group of people, because some will excel and some will struggle, and some just wont care.

You even see this in everyday life. Computer programs often have a 'quick-start guide' to explain the basics to the people who don't have a clue. Video games have easy, medium and hard settings to suit the n00bs up to the hardcore players, and mobile phones will have an 'Advanced Settings' menu that only the brave should dare to venture.

The reason I type this is because while I am researching easy ways for people to prototype, and entry level routes into coding and App building, I cant help but think about 2 things;

One, are these basic introductions applicable in industry? Would you let a brick layer build a house if all you've taught him is Lego?

Two, what if some of the people this is teaching are far beyond this - find it child's play, or simply want to investigate further in their own time?

These resources should open up as many doors as possible and not restrict people to only the basics. They should encourage curiosity and let imaginations a skills flourish, prepare them for the real world but still not forget about the people who just want to complete the task so they can pass their degree module.

So this is why bridging the gap is so important, and why I'm looking at services like App Inventor as good examples. Just the other day I found out about the App Inventor to Java bridge, which is doing a great job at flattening the learning curve between simple block-interface coding and Java, the primary protocol used for coding Android applications. But not only that, it introduces the concept of having an Interface Builder separate from the code writing elements, and how they interact with each other. This is the same as in xCode when writing iPhone applications. So along with a few other parallels between the two approaches, students can relate what they learnt with the basic system to what they would encounter when tackling the more advanced tools.

On the ladder of learning, there should be many rungs so students of different skill sets and abilities can jump on when they want. The resources should be there to support this.

Monday, 7 November 2011

App inventor > Java Bridge

I've been using app inventor on and off for a few weeks now, and its pretty good. As a graphical way of realising code blocks, it does a great job, while still retaining the logical thinking required in real code writing. But, as an educational tool, is it the best way? Surely it isn't very applicable to the real world, and not good for people who actually want to learn to code?

Some developers in the AppInventor forum have created an AppInventor to Java bridge. This means that students who start with App Inventor can use these graphic block components in the Java-based Android SDK. The student can use as many or as few as they like until they start feeling more comfortable with the Java environment, thus graduating the transition. An ongoing project.

More can be found here

Monday, 17 October 2011

EOTW

This is going to be the first of many 'end of the week' posts, covering what I've been up to in the past 7 days. Except this one is covering the last 2 weeks, and I'm writing it on the Monday of my third week. I'll get better at this blogging progress thing eventually!

The things that have been taking up my attention has been starting with the research and learning new skills.

The research I've been starting with is focusing directly at Problem Based Learning and Design Based Learning, both separate things, but sharing a lot in common.
Most of the PBL material I've been reading has been related to the medical industry, but there is also much written about PBL being applied to engineering disciplines. Both subjects are of interest, but interestingly, the medical papers touch a lot on PBL being used to teach ethics and morality; an interesting concept when applied to design, as you start to think about the ethical decisions a designer must face when designing a product. Is it something that would be thought about while hardware or interface prototyping? A medical product perhaps?

I haven't covered what Design Based Learning is on here yet, but I'll do a little post at some point explaining both PBL and DBL. There seems to be less written on DBL, but theres many sources of information I haven't tapped into yet. The most interesting paper I've found so far is entitled "Designing Learning through Learning to Design" (Mishra, Girod, 2006) which documents what a teacher witnessed when DBL was applied to her class, and an academic's interpretation of these observations.
It basically showed how an otherwise mundane subject can be turned into a very interesting and productive one when the tasks were to design and build models representing the core principles.


While researching different ways of teaching, I've also been teaching myself some new stuff.
In order to build learning environments around interfaces, it would probably be a good idea to learn how to create some interfaces to teach. So I've started with touch interfaces, and had my first play with Android App inventor.



Android App inventor is a very useful tool for people like me who are (at the moment) new to building apps. On top of that, it's also a very good example of the kind of stuff that would be good to put into the classroom, because of its very shallow learning curve. It works in two parts, like many app dev kits; It has a 'Designer' window and a 'Blocks Editer' window. Within the 'Designer' window, you layout the content of the app, buttons, images, sounds, moving elements and so on. But its in the Blocks Editor where you assign functions to each of these parts.
The 'Blocks Editor' function is the most interesting to me, because it is a good example of graphic-based code writing. In this, not a single line of code is actually written by the user. Instead, the logic of the program is in the form of blocks which the user drags into the main window. There, other blocks are attached to build up the code.
It is just the kind of thing I am looking for to introduce code to students who have never coded before.

One of the first apps I was able to create (thanks to the easy tutorials on the site), was a simple painting app.


OK, so maybe I was never good at finger painting at school...

Moving on from that, I've been diving into learning how to code with Objective C, which is what is needed to code iPhone and iPad apps. This is a little more challenging and is taking quite a lot of time to do. Thankfully, there are loads of resources on the web to help with this, the best so far being The New Boston on Youtube, who does a whole host of tutorials from C++ to 3Ds Max. I'm still at the early stages of this, no shiny apps to show yet!



This next week is going to be focused on progressing with very much the same things. Until next time...