How to improve your programming skills?
This is something we get asked a lot.
For me, being so busy running workshops for schools and completing the other tidbits that come with running a social enterprise, finding the most efficient way to improve my programming skills is always at the front of my mind.
You may recall from my earlier articles the ’10 minute a day rule’.
I have always recommended to busy people, who want to learn to code, to find 10 minutes per day to learn and practice new concepts.
This is great for when you are just starting out, but what about when you get past the basics? Or when you want to learn a new language but already know what variables and if statements are and you just want to practice doing them in java, say, instead of python.
This is the time - and a sign- that you are ready to start delving into projects!
Completing a project is the best way to improve your skills, and a great way to solve the problem of not knowing what you don’t know.
It is not enough to complete dry exercises from textbooks - whether you are a parent, school student or home educating - nor to look at other people’s code and work out what it does. Although both of these are good things to do and will bring some benefits, to really become a good programmer you must complete projects by yourself.
So where do you start?
Find something of interest and don’t worry if it seems simple or hugely complex.
It could be an Arduino controlled led lamp, or it might be a map making drone that learns how to plan the most efficient route to places.
Whatever you decide, choose something that you find interesting and that you want to complete.
For example, I would absolutely love a lamp that follows my hands around on my long workbench, particularly when I am soldering and doing electronics and switching between tasks.
When you have your idea, break it down into steps.
Make a list of the components that you need - make a note of any that you have used/programmed before and those which are completely new.
Start with the simplest part of your project - making a motor move, turning on a light, reacting to a sensor etc. then build up and start adding in the more complex parts.
As you go you will learn so much!
When you’ve finished, go back and research ways to do things more efficiently, see if someone has done what you have done and how they solved the same problems that you had.
Keep going until you know that the methods you have used are the most efficient/best solution for your project.
Because this is your project, it does not matter how long it takes you to complete. Although, depending on how busy you are, you may find it useful and motivating to have a deadline and work out how much you want to achieve by the end of each day or week.
Remember to keep it enjoyable and don’t pressure yourself too much.
Whatever you are doing, there is very likely to be some example code available online. This code might be exactly the solution you need or something that is similar and easy to adapt.
Whilst you are learning, I recommend staying away from such example code.
I find that you don’t learn a lot and there is hardly any satisfaction on completing a project this way.
This is one of the dangers of using Arduino or other popular micro controller boards, sometimes - and I never thought I’d say this - there is too much help available on line which can ruin the thrill and challenge of the project you are doing. It also means that an 8 year old can do what you just did with added quirks that you probably didn’t even think of! Hmmmm….
So I hope that helps, if you are stuck for ideas or want to share yours please do get in touch.
I am currently working with the Grandad of all micro controller boards - An ARM development board- and a few weeks back, when I was just getting started with it, I took this very satisfying picture!
There were a few issues that I couldn't get my head round, but after hours of battling I finally I got it to say "Hello World!!"
That indescribable feeling...
So, it has been a busy term.
The launch of our online learning platform has been very successful and a massive thanks to everyone who has signed up and also provided us with feedback.
We are continuing to make improvements and will adding in more audio and visual descriptions.
As always, we have been delivering a number of robot workshops for schools across the region. Including Bristol, London, Swindon and also Cornwall and other places in Somerset.
We ended the term on a high with one of our favourite events so far, a partnership event with a few schools down in Truro, Cornwall.
The kids were amazing and robot wars went down brilliantly!
So, after all that excitement I thought it would be best to wind down with something therepuetic, but also with some purpose.
I finally got round to building our very own Robomech kit:
(video will be uploaded shortly).
It was a little bit fiddly, some parts certainly need a bit of a rethink, but at the price it is - and you can grab a robot kit here - it is a very cool desktop toy for any age!
I will of course be getting back to 'proper robotics' very soon. That's the one thing I really like about half term holidays, plenty of time to catch up with machine learning and mathematical models for self driving cars that I'm looking into at the moment.
Though I really want to put and arduino rucksack on this guy with a distance sensor... it would make a very cool miniature Nao robot wouldn't it...
So one of my current projects is a mapping robot that sends its sensor info over RF. I haven't messed around with wireless communication for a while so thought it would be fun to see what I can't remember.
I'm starting off with some cheap RF modules I have lying around in my robotics lab.
It all started off very well, I love these modules because they are so simple to connect and code that you can finish a decent project in about half a day or so - perfect as I rarely seem to get more than a few hours to do my own robotics projects.
To ensure the modules still work, I hooked them up to a couple of Arduino boards and downloaded some example code that flashes LEDs in turn on each of the boards to show successful transmit and receive. Honestly it looked like it was working fine - though the flashing did seem a little bit off when compared to the example.
Anyway, seeing as the modules both work I began to integrate them into my project, however found that the sending my own data, just wasn't working.
On closer inspection I realise I had wired up VCC and GND the wrong way round - Facepalm!!
How I did this I am not sure - I blame the fact that it is a gloriously sunny Sunday afternoon and I am tired after a long week of teaching - but what puzzles me more is the fact that something must have been working earlier for the LEDs to flash...hmmmm...
These kind of moments remind me of some great times at university during the robotics assignments and project work.
It would be great to hear about some of yours!
We get asked this question a lot. By kids who want to learn to make robots and parents who are looking for robotics activities for their kids.
Something my lecturer used to say to us at university comes to mind 'To learn programming, you have to actually program'.
It's true. A bit like learning how to play football. You can read some tips on how to control the ball better, you can watch other players and see what they do well, but ultimately the only way to be a real football player is to play the game. And to become a really good footballer, you have to play often and practice the right skills when you're playing. i.e. just shooting penalties will not make you a good footballer.
The same is true for programming, engineering, electronics and robotics. To be good at these subjects you need to be doing them on a regular basis, but also approach them correctly.
For example most of the books on programming have the same format and are exceptionally dull.
They take you through variables, If statements, while loops and so on but using really dull, lifeless and pointless examples.
No wonder people get put off. I recently enrolled on a java course and one of the main projects and examples used to teach the more difficult concepts was creating bank accounts! How many people is that relevant or interesting to?
So my approach, when I am learning and teaching, is now much different.
Instead of trying to get through books and pointless exercises I set myself a task or project which I find interesting and that will make use of hardware or software that I have not had much experience with - teaching kids is great but constantly teaching the basics can have the side effect of forgetting the advanced stuff!
Some of my current ones are:
Make a game using a touchscreen - this way I will learn to use new hardware with a purpose
Refresh on machine learning and neural networks - but do it in a language that I don't know and learn that at the same time
Build & program a drone - this will involve combining a lot of the skills and knowledge I already have but in a new way.
Learning like that is much more fun and rewarding.
When you've set yourself a project, you will likely have to go and research and learn specific topics. But because it is all relevant to a project you have chosen, you are much more likely to stay motivated.
So if you are new to programming, I am slightly biased, but I think the most enjoyable way to learn is to make something physical. This could be a robot, a bluetooth controlled lamp, a safe with a keypad lock etc.
Or, second to this, a game, app or website. Something that has a useful output which you can use and other people, like your family and employers, will understand and see the effort that has gone into it.
So once you know what it is that you want to make how do you actually start?
Sometimes there are books available that work through a specific project that might be very similar to yours. I have a Make: Bluetooth book which is brilliant. The only downside to this is they tend to give you all of the code, so you may find that whilst you have a working project, you didn't really learn or do much to achieve the end result.
Similarly, doing an online search for your project title will likely bring up some how-to websites that could be a good place to start.
Contact some local companies and tell them what you are trying to do. They may offer you a range of things from a helpful email to some free kit.
There may be some workshops running local to you. If you are in Bristol, Bath, Gloucester or anywhere near the South west, drop us a line and we'll give you the dates for our next iLearning robot workshop.
Get in touch
If you're starting a project or want to learn programming, or robotics or anything similar you are welcome to drop us a line and we'll be happy to help out.
Also take a look at our online course, it takes you from beginner level to being able to make a robot using arduino.
Another half term comes to an end and we have another teaching packed term coming up.
Before it starts, I want to share a few things with you.
We get asked by a lot of teachers which robotics kits are worth investing in?
I have promised information to lots of you, so here is a snapshot, and we will be putting more detail in some explainer videos on our website very soon.
A couple of things to note: This is a short guide, there is probably lots more to say about each kit, but I don’t think an essay would be ideal - if you have questions or comments, let me know.
I’ve picked the kits that I am experienced in teaching with, I know there are lots of others available, please use this as some additional info, not an exhaustive list.
I won't be discussing the micro:bit here, schools are all different in terms of how/when they are planning to use them, and as they have been freely available there isn't much risk for you in testing them etc.
So the kits I will be covering are those that will need to be purchased and this will help you in deciding which ones are worth your money.
We evaluate kits with the following criteria:
1: Ease/speed of use - not to be confused with a kit that only covers simple topics. What we mean by this, is: Is it easy to install? Does it work straight away? Is the interface easy to understand??
2: Breadth and depth: How advanced can student projects be? Which age groups can use them?
3: Shelf life: Are they durable, or will you be forever getting parts fixed and replaced?
Lego Mindstorms NXT - our all time favourite
We have used these with Year 3 students through to year 12 students, with enough breadth of activities to challenge all age groups.
The software interface is gorgeous and intuitive, kids and teachers pick it up very quickly and its easy to remember how to change speed of the robot or where to find a particular sensor block.In terms of depth, you can do data types, use variables and constants, and use several sensors at once which requires nested IFs and functions.
In all the years that we have used them, we have had very few technical issues.
They are built well, ours have survived thousands of robot wars matches, if that’s anything to go by and a good few falls from tables and other crazy obstacles that students have built.
So our ratings:
Ease of use: 4/5
Not 5 because some of the pictures are a little confusing and its not always obvious to younger students how to download a file and find it on the robot itself.
Because there’s always something new that can be done and is great for all ages, you can also progress onto using robot c (a typed programming language).
Shelf life: 4.5/5
Not 5 because sometimes the chargers randomly stop working, but normal AA batteries can be used instead.Cost: 4/5 They are a little on the pricey side when bought new - have a look on eBay for a deal - but this is offset by the amount of time they last for.
Overall a very good kit!
2. Lego Mindstorms EV3
This is the newer version of the Lego Mindstorms … sadly we feel that this new revision has lost its charm.
The software has had a complete overhaul and as a result it looks cleaner and more slick, but it is now much less intuitive. Students both in Primary and Secondary - from our teaching experience - find it much harder to use. The symbols used to represent ‘change robot speed’ , ‘change length of time’ etc. are all a bit confusing.
I’m not saying the older version is perfect, there are still things like the download button and the image for the move block that could be improved.
But after running the same 6 week project with the old mindstorms and then with the EV3s, I found students found the EV3 frustrating to use and they made less progress.
I have also had students who have used the newer version first, at home for example, then used the older version and have said they prefer the older version as they find it easier to use!
The smart bricks in each kit have also had a complete overhaul, with the EV3 its now very easy to continue to run a demo program instead of your own and its very difficult to actually find your downloaded file and run that one. This means students are often debugging when its not necessary because they have been testing the wrong file! It also takes about a minute to start up, which is a pain.
We wish lego had simply updated the looks of the previous software and kept most of it the same, with a few tweaks to some of the symbols and the download process.If so, it would have been the perfect kit.
Ease of use: 2/5
For reasons explained above
Once you get past the usability, it still has all the great components and features that let your students continue to learn and experiment as the old version.
Shelf life: 4.5/5
We’ve not used this as much as the older lego, but the quality seems just as good.
Cost: 3/5At just over £300 per kit, ex vat (£400 inc VAT) its pricey.
3. VEX IQ - relatively new to the market
We like this a lot - not as much as the old lego mindstorms of course, but it is a very good competitor.
There is no software to download for this kit, the software is used online and is, in fact, a modified version of scratch, which is great for progression as lots of schools already use scratch.
You will need to install a small application on to the device you are using - by the way the new lego and the VEX IQ all work from tablets which is really handy - the application is called modkit link and this is what creates the link from the software to the hardware. Its easy to install and runs quietly in the background.You then simply navigate to the website www.modkit.com/vexiq, it recognises the device you have plugged in, and you’re ready to go!
The kit comes packed with sensors, including a gyro and colour sensor - 2 more when compared to the lego kits.The smart brick is quite nice, though it does lack some of the features of the lego bricks. For example there is no option to program the robot without the software, which is something we miss. It’s also a bit grey, a brighter colour would have been nice - though recently they have released an array of coloured building parts for it which we’re very excited about!
Ease of use: 4/5
Most people are familiar with scratch, so the interface is good. However when the battery gets too low, it doesn’t charge and has to be jump started with a power supply, there is no option to use standard AA batteries.
You can do lots with the scratch like interface there is also an option to use Python with this, which we’ll be looking into very soon, and you can also use Robot C.
Shelf life: 4/5So far the rating is based on my personal use of the kit, around March/April we will be taking these into classrooms and I shall update my verdict then if necessary.
At just over £200 per kit, around £260 including VAT (that’s for the starter kit) this is much more affordable than other similar kits, and all of the software options are FREE!
If you would like a demo of this kit, drop me a line and I’ll see if I can pop in to show you, if you would like a vex IQ robotics workshop for your students, book one in for April onwards.
This is very different to the above kits, and much, much cheaper.
Originally I would have only recommended this for Year 7 upwards, but there is now a scratch type, drag and drop programming software available for it, so might be possible to use with younger years.
The arduino board was designed with non-tecchies in mind, so it is generally quite easy to download and install the software etc. (which is also free by the way!)
There is an annoying issue in that now and again it seems to lose the USB connection and won’t download the program. Its not clear for a newbie on how to solve this either - sometimes a replug in and reset of the software still doesn’t eliminate the problem.
Apart from that it is a nice, fairly gentle way, of introducing script based programming to students.You will need some components: LEDs, push buttons, motors etc. and these are usually cheaper to buy separately then with the arduino starter kits.
I am conscious, whilst writing this, that many of you are probably thinking about the micro:bit as a better alternative to the arduino, which is absolutely fine.
I myself haven’t had much time yet to play around with the micro:bit, but perhaps in the future a side by side comparison would be useful…
Ease of use: 3/5
The arduino board itself is easy to use, but you will need to understand how to use a breadboard and basic electronics knowledge to do something useful
Although its a good way to teach kids scripted programming, once your students are comfortable with coding, it does tend to hide a lot of the complicated stuff. So, for example, A -level students will enjoy using it but may find it easier then the requirements for their course.
Shelf life: 3.5/5
The board itself is pretty good, I’ve not had a student produce the magic smoke yet.. but components will disappear and LEDs will blow…
An official Arduino board is around £15 - £20, with some unofficial ones starting at around £5.