1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Hi Guest, welcome to the TES Community!

    Connect with like-minded education professionals and have your say on the issues that matter to you.

    Don't forget to look at the how to guide.

    Dismiss Notice

Teaching programming - getting across the fundamentals

Discussion in 'Computing and ICT' started by ictLad, Jan 12, 2012.

  1. ictLad

    ictLad New commenter

    I'm having a bit of a problem with a few of my gcse computing class. Some of them three months in are just not getting the fundamentals of programming, now admittedly they are the lazier ones and never seek extra help outside of the classroom, but still I want to get them to that eureka moment when coding starts to make sense.

    Does anyone have interesting ways of teaching the fundamentals as I'm really struggling with these guys. I have even tried likening variables to cups that hold a liquid forever until you replace it with another liquid and when you want some of the liquid you ask for the cup rather than the specific liquid, but that didn't work at all :-(
  2. djphillips1408

    djphillips1408 New commenter

    I am going to be the realist here, and you won't like it. The kids are not interested (as many are not interested in options that they take - they choose sometimes because mates are doing it or parental pressure), and they chose a subject that is hard. Bad choice on their part, but perhaps bad choice by your school to let them choose it. There won't be a euraka moment because they are not interested. Do what you can the best way you can, but this is the way it is with computing, some kids are just not going to get there and you have to accept some bad grades, just like it has always been at A level. The only card you have to play is contact the parents, explain the problem and get them in to work one to one, then you have a chance as you can "read" them individually, you also have your **** covered early doors if they never get it.
  3. You may (or may not) want to have a skim of the blog on the programming tab here.It's about experiences teaching computing to grammar school pupils.
    Although I really wanted Java to work for the pupils, it proved too hard after you get past the basics, despite the Greenfoot team doing a great job making it easy for pupils to get started. They were very good at copying but not very good at extending their work on their own (what's new?) I reverted to of all things, BBCBASIC and they loved it. The tutorials that come with it are superb and are pitched at the perfect level for 14 - 16 year olds, and they lasted just over half a term, so are the perfect length to instill the basics before moving on. BBCBASIC is very good because it's forgiving and is very close to pseudo-code. Also, just make sure that sound and colour are introduced early on - they like that!
    From BBCBASIC, the next step is Pascal, or rather console programming using Lazarus, and from there, it will be using the forms interface for full blown Delphi OO prgramming. By this time, they will have met three different but similar languages, and hopefully the ideas will be sinking in. I did like the idea of going over the same stuff with different languages.
    What I'm finding is that they need lots of formal, very short exercises, and then these need to be extended for the better ones - nothing earth shattering about that. I also found that by having a lesson in a non-computer room every week, everyone is forced to talk about code, practise dry-running code and generally get on top of the theory side of programming, which they can then use in their next lesson.
    What I found very useful as well was to get lots of Pascal books for myself, so that I have plenty of ideas for teaching.
    Watch this space, as I will be bringing out a programming book for pupils very shortly! Good luck.

  4. This is exactly how I believe it needs to be done. Pupils need to learn the basic concepts before they move on. Lots of enthusiasm on here Greenfoot, Scratch, Java etc but I believe that the pupils are not going to benefit from this enthusiasm if they are sat down typing blobs of code that they do not understand. They may get the code to work and produce output but do they understand why. I really believe it is vital to get the pupils in a class room away from the computer to discuss what they are learning. Basic is the language written for beginners, I think this should be taught way before pupils even touch scratch.
  5. Good God!
    Are all your kids high ability?
    If they aren't keep them well away from nonsense like Java/Greenfoot or Python.
    If they are, then subject them to the horribleness of these languages but watch them fail to extend beyond following the basics from a book as described by another contributor.
    Teaching programming can be very painful and you need to be patient and painstaking in doing so.
    Differentiation will be horrid - I have one kid in my class using easyPHP and getting all Ajax and others who can't understand variables in VB6.
    All this 'get kids programming it's better than boring old MS Office' really is very silly indeed for the majority of kids.
  6. Couldn't agree more - but remember programming does't start with sitting down and writing code. It starts with asking questions:-
    "What do we want to do?"
    "What do we need for ach step?"
    "How do we get what we need?"
    ...and so on. In short, the basics (the very basics) of analysing a problem. Then, you go on to solve it in code with them.
    Again - could not agree more! That is exactly why breaking the coding down first by working out a design is so important - they start the code already understanding it.
    But here I could not disagree more. The whole point of teaching coding is to show learners how to analyse a simple problem and break it down into component parts, to devise a method those parts can each be achieved and then to write software to achieve it. It is an entire and complete process in which learners should grow able to organise themselves and operate in teams and in an ordered way - such as in the classroom and it is there that discussion should take place.
    As for Basic, your history may be correct but - like Basic - it is far too ancient for the computer world of today. You are correct in that it was designed to be easy and why, but this should indicate that we look for languages with just those feaures today but that are appropriate for the computing of today.
    Java, I'm afraid, simply does not come into that "easy" category, so you should avod that along with Greenfoot but Scratch does have many good points. If you prefer the strictly hand-written type of language that Basic offers then Smalltalk has held up well and is widely available.
  7. Sigh - I don't even have the strength to argue any more*.

    Is it so impossible that Python or Java are accessible to students? I understand that some people prefer VB. And that's fine, it really is. But perhaps, just perhaps, there's an element of teacher bias here. Something along the lines of 'I prefer VB and can't get to grips with Java or Python so I'm going to declare them unteachable!'? Maybe it's a conscious thing, maybe it's a sub-conscious thing, maybe I'm just talking out of my backside.

    I just feel fed up that some people will try to support the argument that programming is not about syntax, not about the platform (in the same way that writing a report is not about Word, modelling is not about Excel, presenting information is not about PowerPoint) and is something that students should get a chance at trying (I consider it akin to music in many ways). Then others will come along and attempt to crush any suggestion that differs from their own narrow view of the world.

    Having done a fair bit of VB at uni and no Python at uni - I can honestly say that the kids in my class who are doing well in Python would do well in VB. And the kids who are struggling in Python are struggling in VB. Why? Because their weakness is in problem solving, breaking down the steps involved and being willing to try, fail, and try again. Nothing to do with remembering whether or not there's a semi-colon at the start of a loop or where the brackets go.

    And maddeningly, it's the same people who whinge about the negativity on the forum that are causing most of my frustration.

    * Addendum: Clearly I do...
  8. autismuk

    autismuk New commenter

    The problem with VB (apart from all the obvious stuff like the rubbish object design) is that you can't do anything else with it. If you want stuff on forms that responds to windows messages, fine (and in commercial packages a lot of stuff IS that !) but anything else is a non-starter.
    Do you want to experiment with sound, graphics, games etc etc. You can do these on VB6 but it's horrible.
    (One of my regrets is that MS do not seem keen on providing a VB.Net interface for DirectX/XNA)
    There's also an issue here of teaching a package versus teaching a concept. One of my favourite programming tools on the BBC was a version of what was effectively a Galaxians game where the bad guys were programmable objects - in a language not dissimilar to Logo. (Also useful for doing multitasking/semaphore stuff at A-Level). It's the same stuff presented differently.
    I'm not sure. When I did an MS course on dev. the interesting thing was the strugglers were all VB6 programmers. Those of us on .NET didn't mind VB.Net or C# (the course switched between the two), it's just syntactic sugar, but the VB6 lot just couldn't handle it.
    It's rather like some here who question the move from LEFT$() etc. to Strings as immutable objects. If you don't understand why that's been done you don't understand very much.
    Whereas VB6 is undoubtedly better if you want to create a Windows App to fool a gullible examiner, it's a poor foundation for programming.
    Mind you, real Windows applications can be horribly complex because of the event interaction ...

  9. autismuk

    autismuk New commenter

    I've often thought of writing a sort of "STOS with objects" (if you remember STOS ?) which kept the interactivity of BASIC but added proper structures (probably keeping GOTO as an option :)) where you could interactively create objects and order them about. Bit like BlueJ but more fun :)

  10. Focus on the teaching methods that you are using and not just the technology or the projet content. I have a core programming environment that I return to again and again and other environments that help to illustrate key concepts. I use VBA in Excel as my core ennvironment so they can build up fluency in that environment and fluency with the VBA syntax.
    Obviously if you just bang on with one development environment all the time that will effect motivation and it also allows the pupils a fresh view of programming concepts if you add breadth to your curricullum. I used Mediator for if structures, Gamemaker for the concepts of object orientated event driven development and I also use Lego Robots so the pupils can also see their programming in action.
    I find the Formative Assessment approaches to teaching and learning particularly useful when having classroom discussions about a programming project. Don't take hands up, pick on people at randon, congratulate good thinking even if its not the exact answer that's required, give clues and pointers, give the pupil time to answer and by the time you have finished your discussion you will have a clear idea of what your pupils understand so you'll know how to pitch your lesson and your pupils will be focussed in on the basic concepts that they need.
    Also the group based learning in Formative Assessment is absolutley perfect for IT teaching so encourage peer to peer teaching and learning.
    IT and programming in particular is absolutely brilliant for differentiation. When you plan your projects think about differentiation from the very start so your less able pupils can motor on maybe only understanding variables and if structures while your more able students are doing the same project but they will be using code in much more complex ways.
  11. Oh dear,
    I feel I have been obliquely referred to.
    I shouldn't have written
    'If they aren't keep them well away from nonsense like Java/Greenfoot or Python.
    they are, then subject them to the horribleness of these languages but
    watch them fail to extend beyond following the basics from a book as
    described by another contributor.'
    Sure, Java and Greenfoot are perfectly valid, widely used, versatile languages and a lot more contemporary than VB6. They are not 'nonsense' and that '..other contributor' deserves respect and applause for what he tried to do with his high ability kids with Greenfoot.
    But I'm sorry, the unfriendliness of their development environments, relative syntactic complexity and lack of the 'rubbish' objects that VB6 has, make them far less useful to me as a teacher and I would say any teacher who wishes to teach programmming.
    The kids I teach need those fundamentals; loops, iteration, selection etc and VB6 gives you and them all of those without the added complexity inherent in the use of the aforementioned alternatives. Yup 'programming is not about syntax' it is about those concepts mentioned in the previous sentence. Why add more difficulty into the process? Getting the basic concepts into their heads is hard enough a task as it is.
    If kids can use those concepts then they can use any language.
    The kids I teach who 'get' loops etc are very grateful when they get to university for that and fly with the Java / Javascript they have to use there.
    For the record, I can use Java fine and also Greenfoot - this doesn't hide the unattractive nature of Java sufficently for me. And doesn't it just add objects into the equation really - although much more entertaining ones than present in VB6? I was shown BlueJ by Kolling himself (brilliant man, not the best teacher) and while I'm sure it is the biz for those who really want to teach OO concepts, it's a crappy IDE otherwise.
    Python, no, I hardly know it at all but I know enough about it to say that it is not the best solution to teaching programming for me but I am trying it out with my daughter at the moment.
    I don't think the perfect language is out there yet, particularly where your students are lower ability like mine generally are.
    I envy those that teach higher ability kids - I think the situation is very different for you. I'm looking to move to a school with a few more of them (at a cost of £1000s in lost salary).
    I have worn myself out trying to get ****wits to programme over the years and yeah, if I get the chance, I'll have a go with other languages.

  12. autismuk

    autismuk New commenter

    I think the idea is sound that you can create objects and do things with them interactively, but I think it's just unfriendly.


  13. Here is a question that will throw a spanner in the works.

    When exactly did you understand how a computer works and how you can program it? I don't mean following a textbook either. I'm talking fluency. Did it take you 1 year? 5 years? Are you still trying to understand? When it comes to Windows programming I'm damn sure I am.

    I should post this one on to the CAS website just to annoy a few people. Which would be a nice because their endless rambling about this topic never ceases to annoy me lately.

    The fact is that CS has always been taught pre-16 under the guise of Maths -> Algebra/ trig. English -> Semantics. Physics/ Technology -> you get the picture.

    As a few people have alluded to, the kids aren't interested. Don't be offended, most aren't interested in maths or English either, hence the difficulties you are experiencing. My gripe then, is that for some insane reason, IT departments up and down the country have a sudden panic attack and feel that they must "entertain" the kids. Now that hasn't worked some other bright spark thinks "hey, they'll find the fetch execute cycle entertaining, I do". Come again?

    Since when is learning about entertainment? I can quite honestly say that nothing I have ever learnt to a high standard was entertaining. Not playing the guitar or coding or anything. Satisfying once the hard work and commitment loosens up and you're competent, yes. Entertaining, no.

    If you want to run a programming club then I genuinely think that's great. You must be an excellent, caring teacher and your kids are very lucky. However, can we get back to basics by sharing good TEACHING resources (i.e. not YouTube videos about CS topics that even people of my age that can program find dull as dishwater) and stop harping on about getting 14 year olds to become proficient programmers in the space of three weeks.

  14. autismuk

    autismuk New commenter

    Well, it depends on the computer. Understanding my first machine (SC/MP Introkit, predecessor of the MK14) was fairly easy :)
    I shouldn't worry about Windows ; Microsoft don't know how it works either.

  15. Nobody knows all of it. Just like noone knows all of maths, or all literature. I learned the basics at university - too late IMO.
    i disagree. In Maths we don't teach any discrete maths pre a-level, it isn't on the syllabus. It should be taught so prehaps in computing lessons would be appropriate as there's no room to add more to Maths, and nothing I'd remove. ICT on the otherhand I can think of plenty to remove.
    The problem is that with the current system kids who might be interested in programming aren't exposed to it. We'll never be able to teach programming to a high standard, but exposure to it at school may encourage more students to pick it up in thier spare time.
    Given how important it is to the future (most future scientists (even biologists!) will need to do it to some level, all businesses will need software engineers to some extent) I can't see how people argue that it is a small scale subject any more.
  16. Strangely I haven't seen anyone mention attempting to use .NET (either VB.NET or C#) - is this purely because it is unaffordable or purely because it is Microsoft are there any other reasons?

    I'm sure this will get shot down, but how about a progression such as Scratch -> VB6 (not sure) -> C / PASCAL -> C++ or C# or VB.NET ?

    Why all the fuss about Java anyway? The last I heard of it, it was in decline.

    And btw, is no-one using Game Maker?
  17. The reason is that .NET is being quietly killed off by Microsoft so it is a dead duck as far as teaching is concerned. C# is fine - or would be if it wasn't such a bad language.
    Java is fast becoming locked-in Oracle-only dead loss but is still the most in-demand language in the real world.
    Pascal is wonderful - comprehensive, expansible and easy to start. But it is also not an in-demand language. Fortunately it could lead to C and so to C++ but I would not expect to teach these two to the average school learner.
    Just find a simple language - even an old one like Smalltalk - and stick with it. You are supposed to be teaching the how and why computer programming (from analysis up) is used and not any specific languages.

  18. autismuk

    autismuk New commenter

    Is it ? Where d'you get this from ?
  19. "When exactly did you understand how a computer works and how you can program it?"
    The honest answer is never. I always find new things to learn, either about the hardware I've used for 30 years, or new hardware using new technology, or new software techniques using old languages, or new languages, or new angles to old topics.
    Isn't the subject of computing ever fascinating and rewarding?
  20. Strange you say that, it feels the complete opposite - that Java is dying. I think you are getting confused when I say .NET - as .NET can include both Visual Basic.NET and C# - as it was put in a previous post, it's all "syntactic sugar" :) Apart from that, why's C# so bad? It's similar to C++ which is years old and yet it still gets used to build software, even now. On the other hand... Java? Ugh. Shoot me now.

Share This Page