Today I begun my second programming course. The professor seemed a bit different from the others - we had some fun saying things like "he's probably a misunderstood genius".

He criticized some other (long gone) professors (with good reasons). Then it struck me to ask him "how do I know if you are a good professor?"

... but I decided to save it for later...

Now, however, such question has developed a lot in my mind. I'm very curious - how do I know if my programming professor is good?

Some observations:

Apparently, very few students do finish the course with him with aceptable scores - but it is possible it is the students' fault, not his.

From our brief first class, I understood very well whatever he said (he talked a bit about everything). But I feel it might be because I was already prepared and had good experience programming before, and not necessarily the fact that he's good at expressing his ideas.

He has a tendency to make jokes. Like most professors I've met. Unfortunately, he is the least funny.

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.
If this question can be reworded to fit the rules in the help center, please edit the question.

2

Couldnt this really apply to nearly any subject? Its not a bad question - its a good one, really - just dont know if its specific to programmers.
–
GrandmasterBMar 12 '13 at 3:05

How do you define "good"? Learning a lot? Getting good grades? Having fun?
–
CodesInChaosMar 12 '13 at 13:07

1

@CodesInChaos: I suppose that "learning a lot" would be the best case here. But learning a lot of the right things - like MainMa mentioned in his answer, you may learn a lot from a professor, but he might have been given you wrong info all the time (like the fact of having one and only one return statement etc). Having good grades or having fun is perhaps irrelevant.
–
OmegaMar 12 '13 at 17:08

1

I had a professor in intel assembly language. He didn't make the switch from 16 bit to 32 bit, and that was seven years ago. Then he reused old tests from former years and everybody knew that and learnt the stuff by rote. I even discovered a few factual errors in what he teached. I was happy when the term with him ended. Everybody got an A (by learning by rote) except me.
–
nalplyMar 14 '13 at 19:31

7 Answers
7

Most important question: Has he ever actually held a job for any substantial amount of time in the software industry? Before all of you pure computer science graduate students jump all over me, allow me to defend myself. Good code for research and numerical analysis and good code for business are usually two very different things. 99% of Comp Sci students are not going into research. Knowing how to simulate recursion with a stack in C for a tree traversal is one thing, knowing how to write production quality code that will not break when people other than computer scientists use it is another beast altogether. Or, explaining inheritance, polymorphism, and encapsulation is one thing; showing students how it is actually useful is another. I could go on and on, but I have had far too many professors that were just flat out useless. I went to my career, and years later I discovered what the heck the purpose was of some non-sense that my professor was talking about.

Another question, does more than 50% of the lecture time involve reading from a Power-Point slide? Then no--this goes for teachers in general.

In addition, if you ask him a technical question in the domain scope of the class that is worded accurately, and isn't just complete bullshit, he should be able to answer it without looking it up. He may need to clarify or something. After all, who doesn't forget minor details? However, they should know their field well enough to just talk about it without the text book.

Does he go off on wild tangents that are sort of irrelevant but full of evidence of experience? You know, things that just piss him off about this or that language or ways of doing things etc... That is usually a good sign: unless they do that all of the time.

If this is a C, Algol, Pascal, or C++ based course, low pass rates are to be expected. Pointers and recursion usually weed out the vast majority of want-to-be programmers. If this is JAVA or .NET or something like that, then the pass rates should be a good deal higher.

a few things you learnt from a person are not as objective as this person pretended to be. Those are just opinions, like any other opinion.

a few other things are plainly wrong. This can happen if the professor has no links with the software development industry or is not interested very much in software development in general.

You may find that by:

reading books written by skillful developers.

through Stack Exchange, blogs or anything you can find through internet. Be careful with that: you can find great content as you can find the most stupid nonsense written by people who don't know anything about programming.

listening to and interacting with other professors or fellow developers,

practicing.

Example: when I was in college, one of professors told us that one method which returns a value should always have one and one only return statement. No exceptions. Never.

Later, I learnt that having multiple return statements is not only allowed, but also a good practice in some cases. It's called guard clause and is one of the refactoring techniques aiming to improve code quality and readability, given that the risk to forget to clean up resources.

When I took Data Structures it was a brutal class. If I got a 40% on an assignment it may be an A (thankfully the grades were on a curve). The instructor was good, but he taught us as though we were graduate students, and the assignments were very challenging, but we learned a great deal, if you tried.

He was a good instructor as he was very willing to talk with us, which helped, as he was covering tough material.

So, can he explain in more than one way the material, or does he just go with the book's definition/explanation?

How available is he for additional help?

These are probably two of the most important issues for rating an instructor in my opinion, as the first shows how deep his knowledge on the material is and the second will show how dedicated he is to his students.

Ask around. Your classmates, especially the ones who have gone before you, know the stories, and can fill you in.

Thirty-plus years ago, I took the introductory EE semiconductor materials and devices class. I found out, much later, that the word was out on the professor I chose, basically for schedule reasons: You will work twice as hard for the same grade in his class, AND IT WILL BE WORTH IT. They were right. I came away with a far better understanding than I expected, and I would not trade that class for anything.

Not quite ten years ago, doing refresher work, I (re)took the introductory numerical methods class. I found out later that the word on THAT guy was "he tests hard, but he grades easy". The corollary was that, if you wanted an objectively good grade on his tests, you were going to work for it. And I did. And I came away with a FAR better understanding of the subject. Again, I would not trade that class for anything.

And then there was this one guy in the EE department. His superpower was that he could write a test that covered exactly the important material, no more no less, that threw NO curves, contained NO trick questions, and took me EXACTLY the allotted time to finish... and I walked out of his tests limp as a wet dishrag. Again, I would not trade the classes I took from him for anything.

Your instructor does not need to be an expert to teach, although it helps. As long as he is one step ahead of you, he can do a great job. If he is two steps ahead of you, he is probably not a great teacher. If he is more than two, hes a lousy teacher.

It sounds to me like this guy is not a great teacher - as most of his students tend to fail his courses. His one and only job is to get teach his students. If they are failing, he is... You comment about a "misunderstood genius" indicates his teaching style is less than ideal. Teaching is about teaching, not doing. Few can do both well.

If you can keep up, he may be great teacher for you......

It is also highly unprofessional (if not uncommon in academia) to criticize past professors - no matter how long gone they are, and how good the reasons might be. It might, in rare circumstances, be OK to criticize what they have done - this is quite different - provided is is done constructively.

On balance, you are there to learn and he is your teacher. If this works for you then its good.

IMHO there ain't such thing as a programming professor because programming is a skill that you learn by yourself by effectively writing code, reading code, reading articles/books/blogs/SO etc. Knowing this you shouldn't care how good is him because you already have all the resources you need to become a good programmer without him.

If you talk about computer science & engineering then there's another discussion.

There are a handful of professors that become such because they enjoy it in their free time (contributing to open-source projects, for example) and don't want to be held down by a full time 9-5 job. I had one; he was a very good professor.
–
IzkataMar 12 '13 at 2:24

2

Being able to learn a skill by my own doesn't imply there are no professors for that. I could learn to play a musical instrument by my own alright - and yet there are some professors for this. Good ones also.
–
OmegaMar 12 '13 at 2:57

You can learn from your own mistakes, or you can learn from someone else's mistakes. Sometimes (often) it's faster to learn by someone else's mistakes. A good professor can tell you what to do and what not to do, giving you learning that is built on the learning of others.
–
thursdaysgeekMar 12 '13 at 18:16

@Omega Yeah, but those professors won't make a good programmer.
–
m3th0dmanMar 13 '13 at 8:50