Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I may slowly be getting into teaching an Object-Orientated Programming class at my school in a year or two. I just graduated and work at my school as an Application Programmer. I'd first start off as a TA/grader and then slowly move into the Professor role.

The class would be in Java.

I always see resources on this fine site about HOW to program, but does anyone know any tips/tricks/resources on how to TEACH a programming class?

It would be full of all different skills levels(but still semi-technical) so it would have to be a little more understandable than if it was just CS kids.

share|improve this question

closed as off topic by Robert Harvey, Caleb, Walter, Thomas Owens Oct 11 '12 at 19:18

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here. If this question can be reworded to fit the rules in the help center, please edit the question.

It's probably too much to ask of early students, but if you get a chance introduce them to Generics. I recently got out of college having barely touched them, and I seem to find a lot of other programmers that know nothing about them. And they can be an extremely powerful piece of OOP that helps show people how properly crafted inheritance can be worthwhile (as opposed to the typical animal->mammal->dog|cat example that explains what inheritance is, but not why we use it) –  KChaloux Oct 11 '12 at 18:06
Have a look at this book for specific teaching techniques. –  Robert Harvey Oct 11 '12 at 18:39
once you have provided the basics of OOP teach them some of the common patterns –  ratchet freak Oct 11 '12 at 18:50
Use the car metaphor. Every professor of programming uses the car metaphore. :) –  BBlake Oct 11 '12 at 18:50
@KChaloux one model that I've seen used is a theoretical home automation for heating and AC. Furnaces, AC, fans (not just the fan for the furnace, but a room fan should spin differently in summer vs winter), heat pumps, etc... These objects implementing different interfaces and having various levels of abstraction. Its more been a concept so far, but implementing a virtual house where one could visualize what it means to turn the heat on. –  MichaelT Oct 11 '12 at 18:51

3 Answers 3

There's a whole host of resources out there for Object-Oriented Programming Pedagogy. Pedagogy is the science of Teaching (as much as it is a science, it's more of an art). I'd look for things like "For adult learners" or "practical pedagogy".

share|improve this answer
Thanks! Yea, there is a difference between knowing something/knowing how to do something and knowing how to TEACH something. Of coruse it would be a year or two before I start teaching so I'd have time to get my actual skills even more advanced so I could brush up on teaching too. –  Sempus Oct 11 '12 at 18:20

It really will depend on your audience level.

Depending on the technical level of audience you may start from ground zero, with the programming language basics and then advance it into OOP.

In addition, to the "to know how to teach", you will definitely need to set prerequisites to the OOP classes. Thus, I would recommend to put a prerequisite of courses (like Java language fundamentals) that you would require before allowing the registration of attendees to OOP class.

share|improve this answer
For the school I'd be teaching in, each student would have to have taking an intro to computers and programming class. –  Sempus Oct 11 '12 at 18:46
Yes, that we(programmers) call prerequisite. In addition, you may wanna show an example why OOP has advantages, what problem(s) it is supposed to solve? –  Yusubov Oct 11 '12 at 19:01

I use to be a university hired tutor for a few of the first year programming courses for Math and CS majors. I was responsible for marking assignments and exams, as well as running labs and being available after lectures to answer questions. Near the end of my employment, I was also a substitute lecturer for when a professor couldn't make it for whatever reason. I did this for nearly 3 years. So my advice is from personal experience.

If you are starting off as a marker and TA, then you can get a feel for the course. You'll get to see where the students are struggling. Get a copy of the course notes and read them before you mark anything. Take some time to do the assignments as well. It will give you a better understanding of what they are doing and how to better help students understand the concepts.

If you can, attend the lectures. Again, knowing how and what they are being taught will help you understand how it is being presented, and also allow you to come up with your own teaching style of the material.

Before you are given a class, hold office hours. Teaching students in small numbers when they have direct questions is easier than teaching a room of students with varying degrees of understanding and motivation. This will also help you practice presenting the material in a way that students will understand.

Doing it this way will provide you with a solid foundation of the course material and give you your teaching tools for properly teaching it. Take note of the questions students are asking in office hours or at the end of lectures. If there are a lot of questions on something, be sure to revisit it next time and to change how you present it in the future.

It's a learning experience for you as much as the students.

I know, I didn't really cover much of the what to teach/how to teach it concepts that you're looking for. But, if you follow these tips, I feel that you'll be able to teach a CS course no matter the topic (provided you have experience with said topic).

share|improve this answer

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