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 professionals and have your say on the issues that matter to you.

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

    Dismiss Notice

How on Earth are you supposed to teach programming?

Discussion in 'Computing and ICT' started by cezalinho, Aug 22, 2011.

  1. I have been teaching programming at a FE college and at A level for many years now. I must say I am quite good at programming and the students say that I can teach it better than the other teachers in my department. So for that reason my manager makes me teach all the programming units.

    However the problem we have is that it?s so difficult for people to pick it up. I personally picked it up almost straight away and some of my students are like that but most are not. Has anyone come across methods which help people learn programming more effectively? Has research on this subject been done?

    If I had years with the weaker students (most of the students I have can?t program) then I am sure I could get them to become experts but it seems like some people just find it too difficult to get their heads around programming within a few weeks.


    Does anyone have tips on how to teach programming?
     
  2. I have been teaching programming at a FE college and at A level for many years now. I must say I am quite good at programming and the students say that I can teach it better than the other teachers in my department. So for that reason my manager makes me teach all the programming units.

    However the problem we have is that it?s so difficult for people to pick it up. I personally picked it up almost straight away and some of my students are like that but most are not. Has anyone come across methods which help people learn programming more effectively? Has research on this subject been done?

    If I had years with the weaker students (most of the students I have can?t program) then I am sure I could get them to become experts but it seems like some people just find it too difficult to get their heads around programming within a few weeks.


    Does anyone have tips on how to teach programming?
     
  3. Come at it from lots of angles - the instructions following angle, the modification and extension of working code angle, the construction from objects angle and make the examples as concrete as possible. Most people can get the idea of the computer following a list of instructions

    My experience is some cannot do the abstract thinking part of it, at core the concept count := count + 1 is difficult. Some people never get it. But then it is difficult.
     
  4. Many students doing Computing and Software Engineering degrees never learn to program in any meaningful way so tere's obviously a problem. Part of it is that students never 'program in anger', they don't have a job or contract that depends on it. It's very different when you have to write a piece of code for a real project.The other thing is that programming is often a team affair where a course often leaves you on your own to solve it.I prefer Count:=Count+Increment. It makes your balls bounce better.
     
  5. It really is difficult when students just don't "get" it. One answer might be to look at developing macros in, say, spreadsheets or WordProc. Starting by recording keystrokes is easy. Editing the procedure code then gives more insights, and then hopefully coding from scratch once they have the idea of working out the steps, iteratively. The key is to link teaching of difficult concepts to what they already know.
     
  6. In my opinion It's the abstract thinking part that causes most of the problems along with trying to understand the flow of the program. I try to deal with it by getting them to visualise what is happening, especially with regards to how the values of the variables change. I find that dry running really helps.

    In the example you have given I tell them to imagine that the equal sign is an arrow pointing left because they normally confuse the = sign for how it is used in maths. That does help but .... they keep forgetting! It's like writing on water! I work in an FE college so I don't have the most able students but what gets me is how they forget certain concepts quicker than others.
     
  7. You don't think that having to submit coursework is enough reason to put a lot of effort into programming?
     
  8. I would keep away from that because then they will just say "what is the point of programming if you can use a macro?". I reckon they need to start from the ground up and understand the very basics and build upon it.
     
  9. Yep. There seems to be this little bit of abstract thought that just escapes some pupils though.
    One problem is, apparently, it is now possible to get a Comp.Sci degree with very little programming, let alone any stuff about programming theory - and many of teachers of ICT especially don't have programming qualifications.
     
  10. I think the biggest problem is that students often believe computer programming is complicated before they even start because society says it is compliated. It is difficult for many people to understand that everything in a modern computer language comes from human readable code.
    Perhaps the first lessons in programming would be to demonstrate the uses of "human algorithms" first.
    Perhaps look at making a cup of tea. With examples such as "Wait for the kettle to boil" to introduce the while loop, and "Does the person you are making tea for take sugar?" for an IF clause.
    Following GPS instructions could be a good example that could include a FOR loop.
    As for the x:=X+1 . Take this as looking at "newValue := oldValue +1, explain that anything after the equals is the old value for x and what you are trying to find is the new value.
    Example: myNewSalary := myOldSalary + 1000
    (I Wish!)
    (Both are my salary, but the command shows how to calculate the new value for the existing entity, or "variable").
    Then hopefully mySalary := mySalary + 1000
    It is just a matter of translating human to computer. Pseudo code to computer language.
    It may also be worth gathering together some really neat example programs that they will be capable of programming by the end of the course in order to motivate them.
     
  11. It's like Maths - some people just don't 'get' that abstract thought required. Call me old fashioned, but I think there are some things that just can't be taught, otherwise we'd all be brilliant at everything!
     
  12. I don't 'teach' programming these days but do cover some of the basics for ks3 purposes.
    I agree with doing it as human modelling to develop concepts and detailing and breaking down what happens in familiar situations that they generally don't even think about/take for granted.
    I do a 'human' vending machine and get the kids to explain what happens when they try to buy something. You can cover a great deal and its something familiar to all. Lots of levels to drill down to too.
    Some will still never get it though, just like algebra let alone calculus or trig!!! Then again, I'm totally useless at MFL and music........
     
  13. rubikwizard

    rubikwizard New commenter

    I totally agree. My degree was maths and I taught it for many years. Some students just never get past working with numbers and be able to move into algebra.
    I have been teaching A level Computing (and GCSE next year) for a couple of years and I see the same problem: those that understand programming and those that never will, with very few in the middle. I have had very bright students getting A's and B's on theory papers but struggle to get Cs and Ds when it comes to programming - and it is not through lack of effort on their part.
    Obviously I don't have a computer science degree but my maths degree (late 80s) included a lot of programming modules (Pascal) and I am a hobbyist programmer with a few commercial titles under my belt (including games) so I don't think it is due to my lack of knowledge.
    I have tried everything I can think of to get concepts across but it does seem that some students (whatever their intelligence) just don't get programming.
     
  14. A couple of scholars have done a bit of novel research into this subject and have found a method of working out if someone will be able to program: http://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf


    I have actually seen the test that they used and one of my colleagues used it to test my one of my classes. It really did show up those who could and could not program.


    Also have a look at this link: http://forums.macrumors.com/showthread.php?t=110945


    I have noticed that a lot of you have talked about the importance of abstract and symbolic thinking, especially the sort which is required in maths. I however think the problem is more than a lack abstract thinking. I have had good A Level maths students who struggled to program. I believe you need to think abstractly and also think like a mechanic. Too many people look at a piece of code and think it's just a piece of code. When programmers look at it we see something that not only represents what is going on inside a computer but we see it as something dynamic and flowing. In other words we are able to visualise and use our imaginations to understand the code in the same way that a physicist does with equations.

    When I was doing A level physics I was getting U grades for almost a year. At that time we got a new teacher and during one lesson he sat down next to me for 5 minutes and drew this diagram to explain what an equation was demonstrating. After that moment by thinking completely changed and within a few months I was getting A and B grades. There was another boy in my class and he experienced something similar when his personal tutor told him to stop thinking of physics questions as an exercise in rearranging equations, rather he needed to visualise things. He and I both came to the realisation that the other people in our class who were still struggling were not visualising what the equations meant.
     
  15. I have no idea why my line breaks did not some out properly.
     
  16. It depends on the browser you use. I'm using Chrome here and have to insert lessthanpgreaterthan to force line feeds. It doesn't work on the iphone though.
     
  17. The Javascript is Browser detecting not feature detecting I think and it's only testing for Exploder and Firefox. So Safari, Chrome, Opera and other browsers 'don't work', even though I'm pretty sure if the code runs on Firefox it'll run on those three, or if it doesn't it should !
    Because it doesn't know the browser it chickens out of the rich text editor (why not just use YUIs or something ?) and you type in raw HTML. Hence no formatting.
     
  18. Let me try again:




    A couple of scholars have done a bit of novel research into this subject and have found a method of working out if someone will be able to program: http://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf




    I have actually seen the test that they used and one of my colleagues used it to test my one of my classes. It really did show up those who could and could not program.




    Also have a look at this link: http://forums.macrumors.com/showthread.php?t=110945




    I have noticed that a lot of you have talked about the importance of abstract and symbolic thinking, especially the sort which is required in maths. I however think the problem is more than a lack abstract thinking. I have had good A Level maths students who struggled to program. I believe you need to think abstractly and also think like a mechanic. Too many people look at a piece of code and think it's just a piece of code. When programmers look at it we see something that not only represents what is going on inside a computer but we see it as something dynamic and flowing. In other words we are able to visualise and use our imaginations to understand the code in the same way that a physicist does with equations.




    When I was doing A level physics I was getting U grades for almost a year. At that time we got a new teacher and during one lesson he sat down next to me for 5 minutes and drew this diagram to explain what an equation was demonstrating. After that moment by thinking completely changed and within a few months I was getting A and B grades. There was another boy in my class and he experienced something similar when his personal tutor told him to stop thinking of physics questions as an exercise in rearranging equations, rather he needed to visualise things. He and I both came to the realisation that the other people in our class who were still struggling were not visualising what the equations meant.



    That worked, thanks for the info.
     
  19. The making the tea example is a great teaching aid - I've used it. I've programmed extensively in High (pascal, Fortran, Algol) and Low (8086, Assembly) - the newer object orientated stuff can actually be easier with Controls and Events as they can compare to analogy more easily - 'if I hit a dog with a stick he will bite'.
    I learn't not by lecture but by copying programs from a book - and sending the corrections to the errors/misprints I found, to the author.
    I taught a load of Chem' undergraduates how to program as part of their Uni' degrees they all got there eventually sometimes it takes longer for the neural pathways to build up but they all managed it.
    Provide sections of code to copy and enter into a compiler; then run under a observational environment - I learnt on card readers so the ';' and')' quickly became very important. Also checkpoints or variable views can be used so students can see what happens to all variables and counters as the program runs/loops etc.
    Some people are better at attention to detail (count number of windows; railway carriages; seats in a plane etc) and patterns {very important funnily enough} which suits modular programming; iteration and recursion.. Others are more creative thinkers and can come up with novel solutions less elegant but equally valid programming solutions.
     

Share This Page