13

I am currently teaching at a local college an Introduction to programming using C#. Most of these students have never had any programming experience. The only prerequisite is an ICT course that teaches basics of computing.

I am finding that the students are facing issues with comprehending the concept of program structure and execution. I tried explaining with flow charts however they still face issues linking the flow of the code to the flow of the solution of to the problem being solved.

Those who are more experienced probably know of techniques or ways to structure the lesson or even curriculum to teach programming in a much better way (I am even guessing there might have even been studies about teaching programming).

What known techniques are there for teaching students at a college level programming? Especially those who have had no prior experience before?

  • 1
    To be taken with a metric ton of salt, but here is an interesting view on the subject: blog.codinghorror.com/… – Federico Poloni Mar 27 '14 at 14:07
  • 3
    What is the rationale for your college's intro programming class using C#? (Just curious) – ff524 Mar 27 '14 at 15:52
  • 1
    @FedericoPoloni: There appears to have been a rebuttal, "Johnny can so program," which was at news.com.com, but the link news.com.com/2010-1007-5700858.html?tag=tb doesn't work for me. It would be interesting to be able to see it if it's been preserved somewhere. – Ben Crowell Mar 27 '14 at 22:16
  • @ff524 This is part of the IT/CNS curriculum at the college and all these students have to take it. This course is a prerequisite to Object Oriented Programming (with Java). So the students will take another programming course after this one. This is supposed to be an introduction to programming. – user6740 Mar 28 '14 at 14:41
  • @user6740 I understand that, I'm wondering why the dept chose that language for the intro course (it's not a conventional choice) – ff524 Mar 28 '14 at 14:46
4

We've had pretty good success through the Software Carpentry initiative.

There are software carpentry bootcamps happening around the world: I'd advise going on one yourself, before hosting them.

They offer a well-rehearsed pattern of training, with lots of hands-on exercises, using open-source training materials.

You can mix and match bits of the syllabus to suit: databases, particular languages, using the shell command line, source-code version control, OOP, and so on.

Once you've put one cohort through a Software Carpentry bootcamp, get them to be the helpers on the next software carpentry bootcamp, for the next cohort of students. That way, they get to copy the successful "see one, do one, teach one" method used in medical training: they learn at least as much again when they're teaching the material, as they did when being taught it.

2

I am inexperienced in teaching people with no prior knowledge to coding, though the subjects I have taught were relatively new to most of them. (Reactive Programming/Asynchronous). I usually start off by telling them the importance of the lesson, in your case you could say. "The concept we are handling today is the basis of Object-Oriented programming, this is widely used and so important, the windows kernel even got a complete rewrite to accommodate this.")

Furthermore, it's important to note that not every student comprehends this as quickly as others, programming is a different way of thinking about a problem than they are used to. Just like they probably had trouble understanding mathematics when they first got that in primary school. You have to keep in mind that because a part of the class understands it, that's no assurance everyone will.

Programming in general should be thought in a "New way to think" manner, you don't teach them literal code, but rather you should teach them "How can I explain to this stupid machine, what it has to do?"

I'd start off with teaching them about the primitives, then the arrays. Maybe as an assignment, let them figure out how to code 10 numbers of the fibonacci sequence? Just make sure they get enough coding done, books and lectures help, but eventually they'll need the experience in writing the code.

Only once they understand how they can explain to a computer what they want it to do, you can start teaching them about object-oriented programming and patterns, but they first have to understand algorithms.

I do look forward to answers of people whom have experience teaching the inexperienced, as I might end up doing so one day myself :)

Anyway, I hope this helped a bit :)

0

I agree with much of what's already been said. What I would add is that you have to make it matter to the student. Teaching programming as an abstraction -- which is the way many of us learned -- makes it harder to learn. I will often give a good sized project to first semester students where I'll say, "Solve a problem that interests you!" Even if I don't always get the best results that will always be the project the students enjoy the most and put the most work into.

  • 1
    EXTRA: Check out Khan Academy link for an example of teaching beginning programming. A little more rudimentary than what you're doing but starting with animation helps the students master the code concepts without realizing it. Their interactive platforms and hinting system are helpful too. – Dave Kanter Mar 27 '14 at 15:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.