The geek gene is dead. Long live the geek gene.

“No-one I know seriously believes in a geek gene,” is a line I hear a lot.

Perhaps this means that he (it’s usually a he) thinks that no-one truly attributes programming ability to genetics. But when we talk about a geek gene, we’re talking about the pervasive and horribly persistent belief that some people just can’t be taught to program. More than that, the belief that we’re wasting our time even trying.

There are so many problems with this theory that I hardly know where to start. One way or another I’ve been teaching people to program since 1993. In that time I’ve never dealt with anyone who was incapable of learning to program. Note that I’m not claiming that every one of them was destined to be a software engineer. I’m not saying every one of them could write 10,000 lines of bug free code (mind you I’m not sure I’ve ever encountered 10,000 lines of bug free code, but that’s another blog).

But anyone who can think logically can learn the basics of programming. Ok, we’ve probably just ruled out One Nation senators, and Donald Trump. But other than that, I am perfectly serious: Anyone who can tell someone how to do something – give directions to their house, or explain a recipe, for example – can learn to program. Because programming is simply telling the computer how to do something, in terms it can understand.

Why do I care? Why does it matter? People who are interested in coding will learn to code, and surely those are the people we want to go into technical fields anyway? The people who are interested?

The problem with that is that the world is full of talented people who have no idea what programming is. Who have no interest in technical fields because they have no real idea what goes on in there. It’s a closed book.

Yet we have a world full of problems – serious, threatening problems. Climate change. Disease. Poverty. And more. Solving them will be crucial to our survival, and technology is going to be integral to those solutions. So we undoubtedly need talented people to go into technology – as many of them as possible.

We need to open that book.

The other problem with that (or one of the other problems, for there are many!) is that a shallow understanding of technology is becoming increasingly debilitating. If we fail to equip our students with decent technological skills, we are increasingly failing to equip them for life.

Because while many of the kids we teach to code will not go on to become programmers, they will have a better understanding of the way computers work – and their limitations. They’ll be much more able to understand and manipulate the technology that runs our lives, and they’ll be much less afraid of it. Anyone who says technology is a closed book to them is going to find that a lot of doors are closed too.

The world is not divided into people who are capable of programming and people who aren’t. It’s divided into people who have access to programming education that works for them, and people who don’t.

We can fix that! And we must.

Posted in Uncategorized | Tagged , , , | Leave a comment

Demystifying the Dig Tech Curriculum – Part 3

It has taken me rather a while to get around to the final part of my Demystifying the Digital Technologies Curriculum posts, but yesterday I received an email from someone who is actually using the posts in her work, eagerly hoping to see part 3. So thanks for the prompt, Kris! Here it is. ūüôā

It is definitely best to read Part 1 and Part 2 first.

   F-2 3-4 5-6
Evaluating Explore how people safely use common information systems to meet information, communication and recreation needs (ACTDIP005) Explain how student solutions and existing information systems meet common personal, school or community needs (ACTDIP012) Explain how student solutions and existing information systems are sustainable and meet current and future local community needs (ACTDIP021)
F-2: Explore how people safely use common information systems to meet information, communication and recreation needs (ACTDIP005)
This one gives you carte blanche to talk about the impact of computer systems in our lives – from communicating with friends and relatives far away, to playing games, learning, and finding out practical information like when the next train to the city leaves. It also covers cyber safety – again, something you’re almost certainly already covering in class. Things like not giving out your home address or phone number online, or telling people which school you go to. It also covers ergonomic issues like sitting sensibly while using computers, and taking regular breaks to avoid eye strain and RSI type issues. The kind of messages that kids pay so much attention to. ūüôā
This section also includes talking about accessibility features – like text-to-speech – and how they impact on people with vision problems. You can explore all kinds of ways computers can increase the independence and quality of life of people with disabilities, and consider how computers and the internet have changed over the last 20 years.
3-4: Explain how student solutions and existing information systems meet common personal, school or community needs (ACTDIP012)
This is an opportunity to consider how information systems meet the needs of people in different demographics Рfor example how much is online bill paying used by people over 70? You could have students design an online survey, using google forms or survey monkey, to ask the school community about who pays bills online. This can lead to a class discussion about whether the people who are likely to fill out a form might be a biased sample Рie those not using online bill paying might also be unlikely to fill out an online form.
You can talk about how people’s needs are met – for example being able to find out which branch of the local library has the book you want to borrow – and how they are not, for example local council websites that have a lot of text-based information might be harder for people with dyslexia to access.
This is also a place to imagine bigger possibilities – for example asking your class what they would like to see online that they can’t see in person. They might come up with the surface or Mars or the Moon, or distant galaxies, or maybe their friend who moved to China last year, and what her house in Beijing looks like. You could prompt them to think about the opportunities in relation to STEM – like being able to explore¬†the inside of the heart¬†through a recording of a heart operation, or being able to plan trips to Mars using simulations of the conditions there.
You can talk about the different ways particular people use computer systems to support their everyday life – like using google maps to find a cafe nearby, or using google translate to help you understand the school newsletter if English isn’t your first language.
In discussing these things it’s important to look at the ways they could improve, as well as the ways they are great now. For example,¬†if you have any kids who speak another language fluently, ask them if they can find any phrases or words that google translate gets a little bit wrong.
In this context, students can also review each other’s sketched designs and provide feedback on whether the design is easy to understand, and whether the different interface elements (like buttons and menus) are well placed.
5-6: Explain how student solutions and existing information systems are sustainable and meet current and future local community needs (ACTDIP021)
I have to admit I am struggling with this one. Student solutions are incredibly unlikely to have a sustainability aspect. I can’t think of a credible example.
Acara’s description says “for example personal data are secured (social) and the solution can only be viewed on screen to avoid printing (environmental).”
Now, students don’t have the skills to secure personal data – it’s difficult even for skilled programmers to create a secure system. Grade 5-6s just aren’t even going to be using systems that give them the option, except in very rare cases. It makes no sense at this level.
However, it’s perfectly possible to talk about the sustainability of the systems they use – for example whether the computers they use are set to go to sleep after a certain amount of time, and whether computers that are asleep overnight rather than off use significant amounts of energy. (The answer to that one is worth researching, as it is changing all the time. The first google hit I got¬†when I searched for “laptop sleep energy use” was written in 2010 and is almost certainly now wildly out of date, so there are some interesting conversations to be had there.)
You can also talk about sustainability in terms of printing rather than emailing resources, and even in the context of whether the information in a system will still be accurate in a couple of years’ time. For example, as I write this,¬†Mem Fox’s wikipedia page is missing her latest book, because no-one has got around to updating it. So you can’t simply put up a list of all of a living author’s books without needing to update¬†it from time to time.
There’s also scope here to talk about different types of interaction and how they work for different sections of the community – for example touch interfaces in the form of tablets, ipads, and smartphones, and icons vs text labels on buttons.
Who uses which systems, and why are icons considered easier for people to understand than text? (and is that always true?!)
The key point in this section is about meeting user and community needs, so it’s great to look at how different systems, like WhatsApp groups, or Facebook communities, can grow communities and help them communicate, and also to talk about how that might evolve in the future.
Although the ACARA notes mention Aboriginal and Torres Strait Islander peoples in terms of how information technology meets their needs, it doesn’t give any hints as to how you might explore that, and to be honest I have very little idea myself. I know more examples of ICT use in remote parts of Africa than I do for¬†Indigenous Australian communities, which I suspect is an indictment of me, but also of our cultural focus.
Given the emphasis here on sustainability, I’d take the opportunity to talk¬†about the rapid churn of mobile phones and laptops – most adults expect to get a new phone every two years – and the subsequent impact on the environment of both the resulting ewaste and the mining of the necessary precious metals. You can look into the recycling of ewaste and explore the percentage of people who take advantage of recycling opportunities (at my council waste transfer station you can drop off ewaste for recycling for free) – perhaps another opportunity for students to survey the population and raise awareness of the issue.
   F-2 3-4 5-6
Collaborating and managing Create and organise ideas and information using information systems independently and with others, and share these with known people in safe online environments (ACTDIP006) Plan, create and communicate ideas and information independently and with others, applying agreed ethical and social protocols (ACTDIP013) Plan, create and communicate ideas and information, including collaboratively online, applying agreed ethical, social and technical protocols (ACTDIP022)

Ok. Finally we’re onto the last row. This section has been much wordier than the others, despite being fewer dot points, because it is largely based around complex social, environmental, and ethical considerations, rather than the relatively straightforward teaching of algorithmic thinking and coding.

F-2: Create and organise ideas and information using information systems independently and with others, and share these with known people in safe online environments (ACTDIP006)

Ironically the ACARA materials for this section repeatedly use examples of creating ICT artifacts “to share online”. Only the last line discusses privacy and cyber safety around sharing information online. When they say “share online” at this level, it’s safe to assume they mean on an intranet, or via email to individuals, but a lot of schools don’t have or use an intranet, or don’t have clear ideas around what is shared publicly and what is private.

So this is a great opportunity to talk about the safety of sharing things online, and who can see what, depending on where you share it. One of the key issues in cyber-safety is that once you have emailed someone a photo, or document, you have no control over what they do with it (whether deliberately or accidentally), so it’s crucial to talk about only putting things online that you don’t mind going public. I would argue that there really isn’t any such thing as a safe online environment. Even emailing pictures to your grandparents can lead to them being made available publicly online, if your grandparents don’t clearly understand the sharing settings on systems like Google Drive or Dropbox.

That also leads to conversations around what you can or should ethically do with things other people send to you. When is it ok to share them, and with whom? If someone chats with you online and says things about someone else, should you pass those comments on?

The technical content in this section is all around creation of things like presentations, documents, and movies – the kinds of activities you are probably already covering in class.

3-4: Plan, create and communicate ideas and information independently and with others, applying agreed ethical and social protocols (ACTDIP013)

The Acara explanations of this point are quite long, but they boil down to behaving in a polite and civilized fashion online – for example, by not writing all in caps, and reading all emails in a thread before replying, and treating other people the way you would want to be treated yourself – and exploring different ways of collaborating online.

Some examples of online collaboration might be using online document editing like Google Docs or MS Onedrive, or simply emailing versions of a document back and forth.

This section also includes an exploration of privacy settings, which is challenging to do in real online environments as most of them have an age restriction of 13+, meaning kids in grade 3/4 should not have these accounts. Social media platforms for younger kids typically have very restricted privacy by default.

5-6: Plan, create and communicate ideas and information, including collaboratively online, applying agreed ethical, social and technical protocols (ACTDIP022)

This is so close to the 3-4 version, only including the word “technical”. For the most part it is simply a deeper exploration of the same issues – online collaboration, and how you can make it work by setting up meeting times (in some cases considering timezones) and planning out the project so that different people contribute different parts.

Many classes these days derive their own set of Classroom behaviour rules, or Classroom Norms as my daughter’s school calls them. They are pretty much “how I want to be treated and how I think others should treat me” lists, and this is a perfect context¬†for the class to create a list of “online norms” to match their classroom ones. How do they think people should behave online? What kind of behaviour makes online collaboration work and what makes it hard? How should they talk to people online, and is it any different to the way they should talk face to face?

There’s also a section in here about using web based systems – such as WordPress, Tumblr, or Blogger – to create and share information. I’m not sure how this is supposed to work, though, because once again the minimum age on these sites is 13. I did find one blogging site specifically for kids,, but it’s not clear how much you can do¬†without paying for access to the site.

So there you have it. That’s the F-6 Dig Tech curriculum in an overlarge, but hopefully comprehensible nutshell. I hope you find it useful.

Feel free to share! And don’t forget, if you are looking for experts to help your teachers come to grips with the curriculum and how to incorporate it into your classroom work, head on over to Code Breaker Education and book an after-school or planning day workshop with former John Monash Science School Computer Science students. Hand picked for their teaching skills and empathy, Code Breakers make teaching programming easy.


Posted in Uncategorized | Tagged , , , | 2 Comments

So angry about girls in STEM right now

Yesterday I wrote about girls in STEM on my other blog. I was angry. I still am.

If you think girls are under represented in STEM…

If you think girls aren’t good at techy stuff or “hard” sciences like Physics…

If you think girls are just naturally more into biology…

GO read it!

Posted in Uncategorized | Leave a comment

Introducing my Code Breakers

Teachers! Want to learn about the Digital Technologies Curriculum? Need someone to teach you all about code? Code Breaker Education is ready to teach you, and support you along the way.

I have been worried for a long time about how Victorian schools can possibly skill themselves up to deal with the new Digital Technologies Curriculum. I know the idea of code is daunting for many people, but the new curriculum means teachers need to be able to program, but also to teach programming.

The most important thing in teaching programming, especially at Primary School level is not to know everything (who does??), it’s to be enthusiastic, and willing to experiment. So the key thing is to show teachers that it can be fun, and that it’s not scary.

I would like to introduce you to Code Breaker Education – a joint enterprise between me and alumni of the John Monash Science School Computer Science Programme. I have collected a group of my former students who know all about code, but more importantly are passionate about Digital Technologies Education. They know that programming is challenging to start with. They know where you’ll get stuck and how to help you get over that learning curve.

They are educators, communicators, and programmers, and they can help get you ready, and confident, to teach the Digital Technologies Curriculum.

I’ve watched them teach and I am so proud of their teaching skills, their passion, and their professionalism. This is the Professional Development you need.

Check out Code Breakers Education on Facebook, or on our website, and give us a call today to schedule your workshop.


Posted in Uncategorized | Tagged , , , | Leave a comment

Hidden Figures, Rewritten History

I’ve just come back from seeing Hidden Figures. My brain is on fire.

The film tells the story of the first Computers Рblack women! Рwho performed the calculations that enabled the US to send men into space. Who not only performed those calculations, but invented them. Who solved fiendishly difficult problems that had never been solved before. It is a masterpiece of story telling, of film making, and of setting history right. Because these are stories we cannot tell often enough.

Despite the realities of history, we have allowed that¬†story to be rewritten. We continue to believe¬†a story that says that the colour of your skin, and the number of your X chromosomes, dictates what you can and can’t do. What you are, and aren’t, good at.

We have allowed the history of computing to become overwhelmingly white, overwhelmingly male, and overwhelmingly false. We have allowed the history of space to become the history of a few white men.

Hidden Figures shocked me in its all-too-accurate depiction of overt racism and sexism – and it didn’t even deal much with¬†the violence, or the hatred. It made me realise how far we have come. But it also made me realise how far we still have to go.

We still have politicians telling us that your worth is dictated by your race. Or your religion. Or your clothes.

We still have teachers telling girls that computing isn’t really for them. That maths isn’t for them. That science is for boys. Most of them don’t say it outright now. But in a hundred tiny ways, girls are steered away from the “hard stuff”. In the questions directed to the boys, because the girls might not know the answer. In the career suggestions. In the level of support and encouragement.

But we know that women were central in the start of computing. From Ada Lovelace to Grace Hopper. From Mary Johnson to Anita Borg. Women have figured in computing every step of the way Рand they have frequently had to overcome extreme obstacles to do so, while all white men had to do was pick up the opportunities strewn at their feet.

I still get shocked looks when I tell people I am a Computer Scientist. A PhD in Computer Science is still something women aren’t expected to have. And the numbers of women going into technical fields remain¬†horrifically low, because we are constantly told it’s not really our kind of thing. And too many of us believe it.

So go see Hidden Figures. Take your kids. Take your students. Take your friends. And tell your students, your children, and everyone you meet, that the colour of their skin and the arrangement of their chromosomes tells them ABSOLUTELY NOTHING about who they are and what they can become.

The sky isn’t the limit anymore. We’re aiming for the stars.


Posted in Uncategorized | Tagged , , | 3 Comments

Demystifying the Digital Technologies Curriculum, F-6 (Part 2)

Now that it’s school holidays I finally have time to think. Part 1 of my “Demystifying the dig tech curriculum” post went a little viral – as much as a post on a niche Computer Science Education blog can – and there were a lot of requests for Part 2, so here it is. Once again, all constructive feedback gratefully received!

It’s probably best to read Part 1 first, as I’m starting where I left off. This is the beginning of the next strand: Processes and production skills.

F-2 3-4 5-6
Collecting, managing and analysing data Collect, explore and sort data, and use digital systems to present the data creatively (ACTDIP003) Collect, access and present different types of data using simple software to create information and solve problems (ACTDIP009) Acquire, store and validate different types of data, and use a range of software to interpret and visualise data to create information (ACTDIP016)

“F-2 Collect, explore and sort data, and use digital systems to present the data creatively”

This is another simple one, that F-2 teachers are¬†already doing: Collect some data, like the hair¬†colour¬†of everyone in the class, or everyone’s favourite fruit. Then you can either graph it (simple pi charts, bar graphs etc), or draw infographic style pictures to represent it, like this (although you would, of course, include better labelling than this lazy Computer Scientist has! :):


This one explicitly says use digital systems to do it, so you would probably use a spreadsheet package like Excel or Google sheets.

“3-4:¬†Collect, access and present different types of data using simple software to create information and solve problems.”

Another thing you’re already doing: collect some data, graph it using a spreadsheet program or some online tool, and try to answer questions like: What is the most popular fruit in class JB? Or better yet, incorporate it with some environmental sustainability and graph which class collected the most rubbish on Clean Up Australia day. And that’s a good one because you can graph it by weight or by piece count, or by rubbish type: wrappers vs bottles vs cans, for example. And you can then try to graph which class has made the most improvement to the environment – which type of rubbish is worst, and who has collected the most of it? Ok, I might be getting carried away here, but you can see how this goes. These types of activities always work best when they’re tied in with other things the kids are already doing, so that they can see the point.

“5-6:¬†Acquire, store and validate different types of data, and use a range of software to interpret and visualise data to create information”

This is really the same as the examples above, but ramped up a little. The data above was all discrete, simple values that you can aggregate: 5 blondes, 4 brunettes, 1 redhead. Or 6 prefer strawberries, 3 prefer apples, and 1 prefers oranges. For 5-6 you could start collecting continuous data like heights that is a bit more complicated. If you graphed the heights of everyone in the class as a bar chart you would likely wind up with 25 different entries on the graph, so you need to aggregate them somehow, like 100-110cm, 111-120, etc. This is a frequency graph or histogram. You can still use a spreadsheet to graph this, or you can make it an art and communication lesson by getting them to draw pictures in drawing software like Paint on a pc, or drawing or whiteboard apps on tablets, that are creative but accurate Рfor example using relative size, or number of items to represent the different values.

Creating Digital Solutions by:

F-2 3-4 5-6
Investigating and defining Follow, describe and represent a sequence of steps and decisions (algorithms)
needed to solve simple problems (ACTDIP004)
Define simple problems, and describe and follow a sequence of steps and decisions (algorithms) needed to solve them (ACTDIP010) Define problems in terms of data and functional requirements drawing on previously solved problems (ACTDIP017)


F-2: Follow, describe and represent a sequence of steps and decisions (algorithms)
needed to solve simple problems”

This is our first encounter with the dreaded A word: Algorithms. You’ve actually already met algorithms in the form of recipes, LEGO instructions (which are particularly interesting because they are largely visual, not text based), and any set of instructions you’ve ever followed. Kids will be familiar with these too, so you have a starting point. Next time you do a cooking activity, talk about the steps you follow, the decisions you have to make – like: is the chocolate¬†melted yet? If so move on to the next step, if not, heat it some more. Introduce the word “algorithm” for the recipe, and boom! – This line in the curriculum is nailed.

3-4:¬†Define simple problems, and describe and follow a sequence of steps and decisions (algorithms) needed to solve them”

Here the kids need to define a¬†problem, like “how can someone find my desk from the door of the room?” and then specify the set of steps that someone would need to solve that problem. Then they can follow each other’s steps and see if they work. This is a fun one because you tell the kids to follow the instructions as dumbly as possible, to find problems with the algorithm. For example, if the instructions say “Walk towards the back of the room until you get to my desk” they will¬†walk into any furniture that happens to be between them and the desk if they are really following the instructions blindly, the way a robot would. Similarly, if the instructions say “walk through the door” and the door is closed, there is a step missing that could result in a very sore nose!

“5-6:¬†Define problems in terms of data and functional requirements drawing on previously solved problems”

To be honest, this one seems a bit strange in this context. To me it makes sense in terms of software design, but for Grade 5/6 kids it seems a bit of a reach. For kids programming in Scratch, Snap, or other visual programming languages, you can only really skim the surface of an instruction like this.

So I take it to mean that you need to lay out the problem clearly before you start to write a program to solve it. Spell out what you are going to do, and what data you are going to do it with – for example if a student is writing a program to draw a spiral, they might ask for user input for the colour and size of the spiral. This is their data. And functional requirements simply mean defining exactly what the program is going to do – in the above example, the functional requirements might be “draw a spiral in a colour specified by the user, with as many layers¬†as the user asks for.”

The other part of this one is to relate the new problem to previous problems. How is this problem similar to something you have solved before?  eg drawing a spiral is like drawing a circle, but your line has to move outwards each time rather than finishing where it started.

The next row in the table has to come as something of a relief to lower primary teachers. ūüôā The good news is that it’s actually not hard for 5-6 teachers either.

F-2 3-4 5-6
Generating and designing Design a user interface for a digital system (ACTDIP018)

Design, modify and follow simple algorithms involving sequences of steps, branching, and iteration (repetition) (ACTDIP019)

5-6: Design a user interface for a digital system

This step is not nearly as daunting as it sounds. In a Scratch program it simply means laying out how a user will¬†use the program. So if it’s a game where you have to click on, say, balloons, in order to pop them, the user interface will be the start button, maybe a speed selector, and using the mouse to click on the balloons. Any interaction the program makes possible – any way the user can¬†do something to change something in the program – is part of the user interface. So anything¬†the user will be able to do – choose a pen colour, change the speed or size of an object, click on something to make it react – is part of the user interface and can be described before the program is actually written.

These¬†goals¬†are all aimed at teaching planning, as well as tech stuff. It’s really easy, even for experts, to just sit down and start¬†doing stuff before they think about what it is they are trying to do. So here the curriculum is saying “let’s think about what we’re going to do, and even write it down, before we actually try to do it.”

5-6: Design, modify and follow simple algorithms involving sequences of steps, branching, and iteration (repetition) 

Here we’re talking about algorithms, or¬†recipes,¬†not code. So this one is about being able to lay out the steps involved in solving a problem, using repeated steps (iteration – for example “keep beating until the egg whites are stiff”, “keep walking until you reach the stairs”, or “while there’s still LEGO on the floor, pick up a piece and put it in the box”), branching (testing to see if something is true, for example “if it’s dark, turn on the light”, or “if the cake is ¬†a chocolate cake, add cocoa, otherwise add vanilla essence.”)

 F-2  3-4  5-6
Producing and implementing Implement simple digital solutions as visual programs with algorithms involving branching (decisions) and user input (ACTDIP011) Implement digital solutions as simple visual programs involving branching, iteration (repetition), and user input (ACTDIP020)

3-4: Implement simple digital solutions as visual programs with algorithms involving branching (decisions) and user input 

Write a program in a visual programming language such as Scratch, Snap, or Blockly that has decision points (if statements, also referred to in the curriculum as “branching”), and user input. An example might be a program that asks the user¬†if they want to draw a square. If they answer yes then it draws a square, otherwise it says “Bye Bye then!”


5-6: Implement digital solutions as simple visual programs involving branching, iteration (repetition), and user input 

This is the same as the 3-4 version except now we’re including iteration (loops, or repetition). So the simple square program above can be rewritten to make the repeated bits simpler and just say “do the line and the turn 4 times” instead of spelling out 4 sets of lines and turns:

Screen Shot 2017-01-18 at 7.55.29 am.png

Once again this has become¬†a little long and I’m not finished yet! So in the best entertainment¬†traditions I am going to¬†end on a cliffhanger (ok, maybe it’s less of a cliff and more of a small step, but work with me here!) and leave you keen for part 3 (I hope!). The good news is that Part 3 will be much shorter. If you find this useful, please share it widely.

These posts are also going to form the basis of a series of Professional Development workshops run by former students of mine (only for Victoria at this stage, but there’s hope for online workshops in the future), so if you’re interested in those, and/or coding workshops that are directly tied to your existing curriculum, please fill out the poll below (purely to gauge interest levels, no names or contact details will be recorded) and watch this space!

Posted in Uncategorized | Tagged , , , | 2 Comments

Deep Learning Demystified

Just went to an awesome talk by Nvidia’s Will Ramey called Deep Learning Demystified. These are my notes – raw, stream of consciousness, and unedited. But interesting! (I hope)
Algorithms that learn have in the past used experts writing programs¬† with classifiers to eg edge detect or look for particular features. First programmer has to conceive of classifiers and then connect them together in some kind of logic tree and characterise the features sought – eg wheels are round… so you get a system for distinguishing between cars/trucks/buses but it doesn’t cope with changes such as a rainy day or a foggy day. So you have to manually create new classifiers and work out how to make it work. Doesn’t scale/translate to new problems.
New approach of deep learning uses neural networks to learn from the examples that you give it. You don’t have to manually create classifiers, you can use examples in the data itself so that the network creates the classifiers. The major advantage is that it’s really easy to extend. If you train it on cars in the daytime and then want to use it on a foggy day you just provide more foggy pictures and retrain the network. You don’t have to create new hypotheses for what might work, you leave that to the network.
With GPU accelerators the process of training and retraining the networks as you expand the amount of data is relatively fast and doesn’t require a lot of manual effort.
Stunningly effective for internet services, medicine, media, security, autonomous machines etc
Deep learning is also being applied as a tool to understand and learn from massive amounts of data.
NASA uses deep learning to better understand the content of satellite images and provide feedback to farmers and scientists studying the ecosystem about how to manage their work and increase crop productivity etc.
How do you do deep learning?
Start with an untrained neural network. Deep neural networks have a large number of layers, but might not be well connected. There are known topologies of nns that are known to be good at image classification, or object recognition, or signals analysis, etc.
In its untrained state the network is just a bunch of math functions and weights that determine how the outputs of those functions are communicated to the next level. It can’t do anything. To train a NN to distinguish between dogs and cats we assemble a training set of images. We use a deep learning framework to feed the images through the NN one at a time and check the output. If we’re only trying to distinguish between cats and dogs there will be two output nodes with confidence levels – how confident is the nn that it might be a dog, and how confident that it might be a cat? The framework already knows the answer and will evaluate whether the NN infers the correct answer, and if so it will reward the neural net by strengthening the weights of those nodes that contributed most to the correct answer, and reducing the weights of the nodes that didn’t contribute. When the nn infers the incorrect answer it will decrease the weights that contributed most. etc. You keep showing the same collection of images over and over, continuing the training. Then the NN gets very good at it. It’s almost a skinnerian psychology experiment, but without electric shocks. Showing the dataset once is called an “epoch”. It takes many many epochs to train the network properly, and that’s the job of the deep learning framework.
This is supervised learning.
Now you have a trained network that can distinguish between dogs and cats. But nothing else. If you were to show it a raccoon it would probably give you a low probability value for both dogs and cats.¬† The trained network still has all the flexibility you need for it to learn. But in most cases once you deploy it it doesn’t need to be able to learn anymore.
Colleague at Nvidia trained a neural net to recognise cats from a usb camera and setup a system to turn on the sprinkler system when there’s a cat on his lawn, to scare them away.
In some cases in the trained network there may be nodes that don’t contribute to the answer. The framework can pay attention to that and automatically remove nodes that don’t make a difference either way, or sometimes fuse layers to save time. And now you can integrate your optimised model into your application.
Deep Learning algorithms are evolving very rapidly, and it is challenging to keep up with them. Training NNs is incredibly computationally expensive, and you don’t necessarily know what the correct topology is at the start. So you might need to tweak it many times and train one, learn from that, and then explore different possibilities, which increases the computational needs and makes it more expensive.

You can check out nvidia deep learning resources online:

Posted in Uncategorized | Leave a comment