Mastering (programming) skills

Paul Curzon, Queen Mary University of London

Here is the next in our series of tips about learning to learn (to program).

TIP 3: Master skills a small step at a time

Working hard, putting in the time and effort is important … but it is NOT enough. You could jog every day for years and NOT get any faster or be able to run ever further. Similarly, you could spend hours trying to write programs but not get any better.  It isn’t just putting in the hours. You have to put in the right kind of hours.

You need to do the right kind of practice. The ideas behind deliberate practice suggest you should aim to master skills a small step at a time – but make sure you do master them before moving on.

(Sometimes you also need help to correct misunderstandings or just help you understand something critical. We will look in more detail at that in a later tip.)

Hours of jogging won’t improve your speed because you are not stretching yourself.  Switch to interval training where you run as fast as you can for a short distance and then recover for a short time, then do that again and again and again. Each session you are pushing yourself to your current limit… and you will improve. You are pushing your muscles and your brain just beyond what they can comfortably do at the moment. That’s the secret to improving.

Programming is the same. If you just spend hour after hour writing similar programs that you already know how to do, and never anything new, then again you won’t improve even if you do it for 10,000 hours. You need to practice what you are already capable of, but also push yourself to the things that you just can’t comfortably do (yet), programs you can’t comfortably write (yet). However this comes with a big BUT!

Don’t push too far beyond what you can do to quickly or you will just get hopelessly stuck and dispirited (the equivalent of collapsing on a run when you are a long way from home).

This is a mistake many students learning to program make. They are so keen to learn,  that having written a program that works, they rush straight on to the next concept. They are trying new things before they have actually mastered the current ones. You do need to write lots of programs with the simpler concepts to master them. If you move on too quickly you will start to struggle as you get more and more out of your depth, and the practice you do will be less and less effective.

There is no point trying to write programs that use while loops if you have not mastered the simpler if statements and so understand boolean expressions. And don’t move on to boolean expressions before you have mastered simple integer expressions and variables…

If you are told to try harder, don’t. Instead try smarter. That might mean stepping back to something simpler and make sure you have mastered it.

We will look in more detail what the right kind of practice is in future tips.

If you are a:

  • student
    • Practice lots, but master simple things before you move on to harder ones.
    • Do push just out of your comfort zone in your practice once you have mastered something.
    • Identify something just beyond what you can currently do and practice that until you can do it easily. Only then move on to the next thing. 
    • Don’t think that doing it once means you have mastered it!
  • teacher:
    • Set activities that gradually increase in difficulty with lots of exercises to practice at each stage.
    • Identify a progression in concepts to introduce.
    • Don’t let students rush on to writing ever more difficult programs to write before they have fully mastered the concepts in the previous ones.

More on Learning to Learn (to program)


IoC logo on white

 

 

“DELIBERATE” PRACTICE

Paul Curzon, Queen Mary University of London

Here is the next in our series of tips about learning to learn (to program).

TIP 2: THE RIGHT KIND OF PRACTICE IS “DELIBERATE” PRACTICE

10,000 hours of practice is often given as a rule of thumb to become an expert. However, if it is the wrong kind of practice then all those hours may not help. An effective kind of practice is “deliberate practice”. This is one of the top 10 or so educational approaches known to be effective as a way to improve learning, and is based on research in a lot of areas from elite sportspeople, virtuoso violinists, top medics and more. It is what elite people do to become one of the elite. It can help with learning to program too.

Some skills are more appropriate to apply deliberate practice to than others. However, even an incomplete version may make practice more effective.

Deliberate practice involves:

  • Identify the sub-skills that experts have; the ones that make them better than everyone else and practice those skills.
  • Aim to build accurate versions of the same “mental models” as the experts have for those sub-skills (early).

  • Practice doing things just beyond your current comfort zone until you have mastered them. Then move on.
  • Practice in a way that gives you immediate feedback on whether you are doing it right or wrong.
  • If you get it wrong (that’s good, its a chance to improve), focus on why you got it wrong (based on that accurate mental model) and practice until you can do it.

We will look at the separate elements of this in subsequent tips.

To learn to program you need not just to write program, but to do deliberate practice of the sub-skills.

If you are a:

  • student
    • Learn about deliberate practice and put it into practice when you learn, including as you learn to program.
  • teacher:
    • Set up learning resources and situations to support deliberate practice of programming skills.

Further reading: Ericsson, A & Pool, R, 2016, Peak: Secrets from the new science of expertise. The Bodley Head.


More on Learning to Learn (to program)


IoC logo on white

Learning to learn: Anyone can learn to …(program)

Paul Curzon, Queen Mary University of London

Tip 1: It is about effort not talent

So you want to learn (to program). The first and most important thing to realise is that with enough of the right kind of practice anyone can improve (and keep improving) at any skill (including programming). Our brains are amazing, they can just keep getting better if we do the right things.

Learning to program is not about talent. It is about effort and practicing enough in the right way.

There has been lots of research across lots of skills whether chess, violin playing, football, maths, english, swimming, memorising lots of random numbers… and the same result is found. Improving is not about innate talent. We all have wonderful brains. Genetics doesn’t stop anyone learning to be better. You can learn to program and you can get better and better.

Understanding this and putting it in to practice is called having a growth mind-set. Once you truly believe this and shake off the idea that some people are more talented than you, you have the keys to a new world of learning.

There is a rough rule. If you put in 10,000 hours of the right kind of practice then you too will be an expert – a wizard programmer. That is a lot, but then do that and people will call you a genius. Take it a step at a time. Practice for 10 hours and you will get better. Put in 10 more hours and you can improve more. Then put in 10 more and you can improve again. And so on. Put in 100 hours and you can be noticeably better. Then put in 100 more.

Shaking off the idea that other people are more talented is hard, especially when the person next to you seems to find it so much easier. Ignore them. They may have started before you; or done something previously that gave them a head start; or done more practice that you don’t know about, or have been practicing learning for longer, or … Don’t let them put you off. What they can do has no bearing on what you can do.

Also if other people tell you you have no talent, don’t let it get to you. They are just ignorant.  One day you can be great at it if you want to be badly enough and practice in the right way.

As a teacher, instilling a growth mind set in those you teach can help them do better too. Believe in every last student and research has shown they will do better, and improve more than if you don’t.

Learning is a skill to – so you can get better at it too with practice.

However, while working hard, putting in the time and effort matters, it is not enough. You need the right kind of practice. We will talk more about that in later tips.

If you are a:

  • student
    • Get in to the habit of whenever you find yourself saying “I cant …” or “I don’t understand…”, add on the end “…yet”. Practice doing it…
    • Constantly remind yourself that with practice you can get better, however hard it is now.
  • teacher:
    • Every time a student says “I cant …” or “I don’t understand…”, add on the end “…yet”.
    • Constantly remind your students: “It is not about talent. Anyone can learn to program. You can get better with practice.”

Further reading: Dweck, C, 2006, Mindset: How you can fulfil your potential: Constable & Robinson Ltd London


Watch out for more blog tips or …

get ahead with more on Learning to Learn (to program)


IoC logo on white

Learning to learn (to program)

Paul Curzon, Queen Mary University of London

We all learn naturally but some ways of learning are more effective than others. Whether it is a skill or knowledge you want to learn there are good ways and bad ways. This blog series is about how to learn effectively.

Programming is a skill based on knowledge. Everyone in the digital age needs to learn at least a little of how to program. (If you want to you can learn a lot.) We will therefore use it as a source of examples, but the tips here are also about learning in general.

Learn to learn and you can be more effective at anything you put your mind to.

If you are a:

  • student: learn more effectively
  • teacher: help ensure you get the best of your students

TLC Newsletter – Nov / Dec 2018

An early merry Christmas from Teaching London Computing (TLC) with our second newsletter (previous newsletters can be found here). There are more details of the free Christmas talk taking place on Wednesday 5 December 2018 and plenty of festive resources for your classroom.

Table of Contents

  1. Free Christmas evening lecture on Game AI for schools and families
  2. New issue of CS4FN – out now!
  3. Christmas classroom resources
  4. E4L2C – Exercises for Learning to Code, new from TLC / CAS London Master Teachers – an online course
  5. NCCE – National Centre for Computing Education
  6. Free course from CAS and Microsoft on Creative Computing
  7. iDEA – the Inspiring Digital Enterprise Award – online learning supported by the Duke of York
  8. Rocket Fund – £5,000 match funding available for projects starting after 2 Dec 2018

1. FREE schools talk – Game AI Unleashed! IET / QMUL Christmas talk – 5 Dec


Next Wednesday (5 December 2018) we have a free family-friendly twilight talk on Game AI, aimed at secondary-aged kids but all welcome. There will be free mince pies afterwards too. The talk will be held at QMUL in the People’s Palace’s Great Hall (this building is next to the main Queen’s Building, on Mile End Road). Nearest tube station is Stepney Green (buses 25/205), talk starts at 5.30pm. Bring your class!
[Register for free tickets][Full details][Flyer]

2. CS4FN issue 25 on wearable computing is here


The magazines have been printed and subscribers should be receiving copies this week so keep an eye out for them. You can also download free PDF copies (and sign up to be on the mailing list) here. We are grateful to the Institute of Coding and to King’s College London for their support for this issue. Let us know the articles you like most and share some pics with us on Twitter @cs4fn / #cs4fn

3. TLC Christmas classroom resources – download and print, and adapt for your classroom

We have Christmas pixel puzzles, Doodle art algorithms to draw a Christmas tree, or get your class to edit a Christmas greeting program in Python. We also have some computing-themed cracker mottos and are always on the lookout for more… have a look at our ‘at a glance’ Christmas computing for more.

4. E4L2C – Exercises for Learning to Code – free on Teaching London Computing

CAS London Master Teachers have created E4L2C (Exercises for Learning to Code) a range of free exercises to help people gain skills and confidence in using Python. There are beginners, intermediate and advanced exercises – Beginner exercises (Sequence, Selection, Iteration), Intermediate exercises (Arrays, Functions, File Handling), Advanced exercises (Databases). All are free to access but in order to get feedback and find out how people are using them we are asking people to contact Trevor Bragg for a password.

5. New NCCE website – National Centre for Computing Education

https://teachcomputing.org/ – scroll down the page to find out how you can sign up to hear more and get involved.

“The Centre will start working with schools across England later this year, improving teaching and driving up participation in computer science at GCSE and A-Level.

The Centre will operate virtually through a national network of up to 40 school-led computing hubs to provide training and resources to primary and secondary schools, and an intensive training programme for secondary teachers without a post A-Level qualification in computer science.” [Press release]

6. Creative Computing for KS3 – courses in London and elsewhere

Computing At School, in association with Microsoft UK, is delighted to announce a two-day funded* course which will enable new and aspiring Heads of Computing in secondary schools to develop the skills and techniques to build a creative and innovative curriculum accessible for all and to lead a thriving subject in their school.

*Teachers in Category 5 and Category 6 opportunity areas qualify for FREE places, including cover.  To apply for one of these places please use the registration form here. Funding is only available for state-funded schools. For teachers applying from outside these areas the cost will be £200 (plus booking fee) for both days of the course.

The London course starts on Friday 11 January 2019 and takes place at BCS offices in Southampton Street.

A little more detail is at the end of this email [full details on CAS website]

7. iDEA – Inspiring Digital Enterprise Award

https://idea.org.uk/  – the free scheme, supported by the Duke of York, helps people enhance their chances in the job market with digital and enterprise skills. Online challenges are split into four main categories, each with its own series of badges to be won – citizen, worker, maker, entrepreneur and gamer.

8. Rocket Fund – £5,000 available for IT projects launched this half-term

A match funding pot is available from Rocket Fund for ICT related projects this term – with 20x £250 boost available.

Rocket Fund is a free fundraising platform for schools. So far they have helped 250 schools raise over £200,000. They have just launched a new campaign with 20x £250 boosts available for tech projects launched after 3rd December. Is there any tech you’d like to buy? See Rocket Fund’s website for more details.

More detail on the Creative Computing courses

“We all want our pupils to experience an aspirational curriculum for computing that develops their knowledge, their skills and above all their interest in the subject but this can be hard when we’re struggling to keep abreast of the subject ourselves! This two-day course will help to plug some of those gaps and will help teachers who are in the early days of establishing the subject in their school to encounter engaging lessons and how they can be integrated into an inspirational scheme of work.

The course will be delivered across two days (the first in the early Spring term; the second in the Summer term) in a number of locations in England.”

If you’d like to receive a copy of the newsletter in future please use the orange form on this page.

 

 

TLC newsletter – October 2018

We’re trialling a newsletter for those who’ve signed up to be kept informed of Teaching London Computing’s activities and resources. This is sent to our subscribers* and added to the website for everyone.

*To subscribe, use the orange form here.

1. Black History Month

Screenshot 2018-10-29 09.20.11

Our current resource celebrates Black History Month with information about several black computer scientists. You might also like this infographic – 7 Black Pioneers in Computer Science, by Jordan Streeter. Find out more about diversity in computing.

2a. Hallowe’en fun
There are lots of free activities to download on our site with new ones being added every month as time permits. From the Hallowe’en vaults we have some slightly spooky puzzles for younger children including a colour-in pumpkin (a Pixel Puzzle) and a word puzzle (Kriss-Kross).

Screenshot 2018-10-29 09.22.06

2b. Other resources

Maths Kriss-Kross puzzles involve multiplication to get the answer – “Solve these maths puzzles as a way to develop logical thinking and pattern matching skills needed to enjoy both computing and maths, while practising maths too.

3. New issue of CS4FN – out soon
The latest issue of CS4FN magazine (issue 25) will be on Wearable Computing and should be out next month. PDF copies of the magazine will be posted online soon.

Currently you can catch up with issue 24 (and all our back issues) here.

If you’re not already receiving FREE copies of CS4FN at your school please sign up here (UK schools only), and pass on the info to a colleague. We have a few back issues too (you can use the same page to request them) and we’re happy to send some out while stocks last.

For primary-aged pupils (~9-12) we also have copies to give away to UK schools of issues 1, 2 and 3 of A Bit of CS4FN.

4. New computing courses from King’s College London
The BlueJ outreach team based at Kings College, London (run by Michael Kolling and Neil Brown) is offering FREE CPD workshops to teachers of KS3 and KS4 and KS5 pupils. These need a minimum of six teachers to run and require a venue with computers / laptops, internet connection and a projector / screen.

Summary
There are 3 Workshops available and they require a minimum of 6 attendees:
• Teaching Greenfoot with Stride – Programming after Blocks (KS3)
• Teaching Java with Greenfoot (KS4)
• Teaching Java with BlueJ (KS4/5)

More details about each workshop and what Greenfoot, Stride and BlueJ are available here. To book a workshop please email team@bluej.org with three dates/times.

5. Christmas Lecture – save the date: 5 December 2018
Each year the Computer Science department at Queen Mary University of London has a celebratory free (Eventbrite ticketed for catering purposes) Christmas Lecture for schools and families, with mince pies. This year the topic will be Game AI – we’ll add a link to this page when the tickets go live and there’s more information.

Game AI Unleashed!
Wed 5 Dec 2018
FREE (attendance is free but please register in advance)
Doors: 5pm, lecture 5:30-6:30pm, drinks and mince pies afterwards
More info and tickets: http://www.eecs.qmul.ac.uk/news-and-events/events/items/game-ai-unleashed.html

Flyer (PDF): IET-QMUL Christmas Lecture 2018

Information about our previous Christmas lectures: 2017, 2015