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.

This is related to my C++ teacher of semester one and, unfortunately, the coming second semester as well. I have already completed the first assignment; needless to say, it's horrible.

How can I gently tell my professor that the homework he is forcing us to do is giving us a bad example of good OOP as well as bad OOP practice in C++.

For example, he is forcing us to class all of our functions, use get/set methods for all members and painstakingly horrible functions to call our data.

This is an example of the homework project we have to do:

AuctionApplication aA;
Auction *auction = aA.CreateAuction("Hello");
Bidder *bidder   = aA.CreateBidder(", World");
Bid *bid         = aA.bid(bidder, auction, 0);

std::cout << "Auction:  "  << aA.GetLatestBid(auction)->GetAuction()->GetName()
          << "\nBidder:  " << aA.GetLatestBid(auction)->GetBidder()->GetName()
          << "\nPrice:  "  << aA.GetLatestBid(auction)->GetPrice() << "\n\n";

std::cout << "Auction:  "  << bid->GetAuction()->GetName()
          << "\nBidder:  " << bid->GetBidder()->GetName()
          << "\nPrice:  "  << bid->GetPrice();

Every single function must have a non-void return type, I cannot simply retrieve any data whatsoever without jumping through hoops. Above that, it's not even encapsulated properly, as I can easily get a bid member and then, if I was an unknowing programmer, continue programming with said value.

There is no const-correctness, there is no efficiency (everything is pass by value, even vectors and lists), there is no exception safety, nothing whatsoever.

The homework assignments are bug-ridden and goes against the nature of C++, which is, in my opinion, OOP in moderation, as it demands.

I'm not sure if it's me, and how my other classmates feel about it. I know my friend feels the same way, but most of the class is struggling as it is with a fail-rate of 60% on exams.

Is there any way I can tell my teacher to try and give better assignments in a more C++ style environment without possibly raising his ire?

Posting this in Programmers as opposed to SO since the question deals with how to talk to programming professors, not write actual code :)

share|improve this question

closed as not constructive by Mark Trapp Nov 23 '11 at 4:53

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

    
Why does the bid need to know of the bidder and auction? not that its bad, i just prefer as close as real life examples. Does he at least use STL? –  acidzombie24 Sep 23 '10 at 13:35
    
Specific implementations of the STL are not discussed; we are supposed to learn core programming/OOP principles. That's why we get to use a C++ reference book during exams. –  IAE Sep 23 '10 at 13:39
6  
In an introductory programming course most professors will never touch efficiency issues. This is what algorithm courses are for and is not needed for a student to understand/grasp OOP. Also, from my undergraduate studies I can vouch for the 60% failure rate. I have taken classes which are much higher failure rate, thats what a curve or grade inflation/adjustment is for at the end of the quarter/semester. Lastly, it depends on the professor. Some will take this kindly and appreciate the extra thought/effort, others will take this negatively and flag you as an annoyance to them. –  Chris Sep 23 '10 at 14:11
    
I didnt mean implementations discussions. I mean are you using a deque instead of a char array? are maps used? things like that. If so then it cant be that bad. Anyways other then too many -> i didnt think that code was bad. –  acidzombie24 Sep 23 '10 at 15:20

11 Answers 11

up vote 10 down vote accepted

If its anything I learned in the world of academics, you really can't judge a professor until the class has ended.

Theres usually a reason he makes you work within confined rules whether it is to teach you something specific or it is to make grading easier, either way, no class is as straight forward as you think it should be.

I had a professor, by law they have to give you a grading scale and a syllabus. But this professor had no intension of sticking to it. He created his test as hard and as long as possible and let the chips fall where they may.

Averages were 30 on his exams out of 100. He adjusted the grading scales to fit those averages but I learned the most from this professor. It doesn't do much for your self esteem but I took two classes with him and he made me a much better programmer.

What is the full working name of this class your taking and what degree does this fall under?

share|improve this answer
    
The course is called Programming Algorithms/Data Structures. It is a two-semester course and our only real programming class. All other courses build from these two semesters; for example Operating Systems, Microprocessors, Java programming later on, etc. It's for Computer Science. –  IAE Sep 23 '10 at 20:35
    
I would try to stay positive and maintain an open mind about it. I know we all wanted to get knee-deep in programming but Computer Science is trying to teach you much more =) –  Bryan Harrington Sep 23 '10 at 20:57
1  
+1 For comment about not judging professors until the class is over. –  Macneil Oct 27 '10 at 0:59

You can certainly ask him in class specific questions about your assignments like 'do you have to return a value there? Can we instead pass by reference?', etc. That might get him thinking about future assignments. But I would never, ever tell him 'you're teaching things wrong'. For two reasons.

One, he's the teacher, and he may actually know and understand a whole lot more about what he's teaching than you, the student, knows and understands. As someone else pointed out, he may be teaching along a progression and have purposes beyond what the young padawan can see.

Two, if you already 'know' whats 'correct' OOP, then what purpose does it serve to 'correct' the instructor other than to appear pedantic?

If you really think he's teaching wrong, then you're appearently a C++ expert already who doesnt need that class, so take the easy A and move on.

share|improve this answer
    
I didn't mean to say that I know everything about OOP. Quite from the contrary. But I do want to at least have the credit to know the difference between OOP in Java and OOP in C++. They are two different styles, and I feel he is teaching us the wrong type of OOP in C++. Besides, I wasn't going to be crass enough to flat out call him wrong; I disagree with his teaching style, not his knowledge or wisdom in the field. Important difference. –  IAE Sep 23 '10 at 20:37
6  
Who are you to decide what the 'right' and 'wrong' styles for him to teach are? There are no concrete 'rights' or 'wrongs' in programming methologies, just opinions. And as they say, 'everyone has one'. You dont like what he's teaching. Join the club. I could say the same for half the classes I took. After college, code however you want. For now, take the easy A. –  GrandmasterB Sep 24 '10 at 4:13
1  
It's been some time, but I have to say that you are right. I shouldn't have been that arrogant to assume I know what correct OOP is. I've been working with this teacher in my Master's project and it's quite clear that his experience and knowledge in larger-scale applications dwarfs whatever I thought I knew. I apologize for my hubris and would like to say thanks Grandmaster, you were exactly right :) –  IAE Dec 12 '12 at 19:29

Talk with him about how you feel after class and see if you can find out why he's giving such homework assignments. It could be that he thinks some concepts are too advanced for his students, or that he has to stick with some school-mandated program. Try to use terms such as "I feel..." or "I think ..." rather then "You are..." or "This is..."

I've had both cases in the past... some assignments were because the teacher was just trying to get his entire class to pass and some where just following the program guide they were given. By talking to him you can let him know that some of his students are intelligent enough to grasp more advanced concepts, and that they want to learn them.

I'm not sure if you're attending a for-profit or non-profit school but that also matters. From my experience, for-profit schools will generally do more to make sure their students are happy and if the majority of the class feels he is a bad teacher and not listening to what you're saying, you can file a complaint with the school about it.

share|improve this answer

Is there any way I can tell my teacher to try and give better assignments in a more C++ style environment without possibly raising his ire?

What do you hope to achieve from doing this? Do you expect him to say "Whoa, you're right, SoulBeaver, I don't know what I'm doing, I'll change my curriculum?"

Your actual goal here if "How do I make my prof be better?" is not a realistic one.

share|improve this answer
    
Thanks Andy, my thoughts exactly. –  Macneil Oct 27 '10 at 1:01

Actually, as involved in teaching myself, I do appreciate it when students add some extra comments at the end of their homework, explaining why they would approach the problem in a different way than asked. Although it's more about statistics in my case, the reasoning is the same: we often give them a very specific task that might be not optimal given the data. Most of the time we indicate that ourselves, but students that realize this gain some points.

Hence, I'd just add a remark to your homework describing how you would approach the problem different and why you would do it that way.

share|improve this answer

Write a well worded email. The email aspect will keep you from having to confront him in person, and will also allow him more time to think about it. Keep the tone honest and present it as "I'm concerned about it because..." and "this is what I think it should be like". Your professor should be open for a debate and be academically honest with himself. If he's not, then there isn't much you can do, except maybe contact the other faculty members, maybe even the person in charge of it.

share|improve this answer

I'll give my take on that one even though it's a bit late, considering I've been accustomed to both sides of the issue, really.

First of all, I will disagree with comments suggest to write an e-mail with a statement like "this is what I think it should be like". That's a backfire waiting to happen. Present it more like "from what I have read about on , shouldn't it be more like ?". It might be useless as he/she can just discard it, but you don't try to impose your opinion.

Remember that as long as you don't have a PhD or something, you're worth nothing to a lot of lecturers. Shocking, but true.

Plus, it's better to be very humble: what you consider bad practices may not look like it to others, and your lecturers might have their reasons for it.

Finally... preparing a class is extremely hard and takes a LOT of work and time. Yes, there are some crappy lecturers out there. And yes there even are some lecturers that don't even like teaching and for whom it's just a job. But you also have some that are just not good at it but still love it. Take that into consideration. These guys, with all their flaws, are still dedicating a lot of time and effort to try to contribute to your development. Preparing a good syllabus is an awful lot of effort, and I don't even talk about preparing papers, marking them, etc...

The same way that it is very hard to come up with a research method that doesn't have any bias, it's not so easy to come up with an assessment scheme that doesn't leave room for mistakes and unfair treatment, and can accommodate the Very different levels of skills and adaptability of the students. Sure, in a perfect world lecturers would come up with added difficulties for better students, and so on. But some of these better students might not want that (because it's, somehow, unfair: maybe they don't like the topic and just worked hard to get a good grade... and then you raise the level again just because they're performing better? argghhhh...).

You think it's easy to teach until:

  • you give a tutorial and a student happens to know more about a topic than you and either tricks you into a corner with a hard question, or genuinely asks about something you don't know (admit defeat and your ignorance bravely).
  • you talk in front of a 500 person amphitheater (don't forget to take water).
  • you have to grade the 500 papers. Or even just 20.
  • you have to seat through an academic review meeting,
  • you have to decide whether to fail or give a pass a student.
  • you have to decide whether a student's conduct is cause for eviction.

So in your case, I'd say:

  • do check with your classmates first to see what they think (if it's just you, then you're just more advanced. You can still discuss it with the lecturer, but it's unlikely he'll have the time to do anything special for you. He's not paid by the hour, you know)
  • write an e-mail stating that you would hope for more complexity, and maybe to have reasons given either to the class or you personally for the points you think aren't right. Why aren't they right? Why is it done the A-way and not the B-way?
  • follow-up with a private discussion with your teacher. The e-mail gives you a bit of distance, but coming to talk in person shows it matters and that you deal with things honestly and don't dice his class behind his back (too much).

Beware. In some cultures, teachers consider students (in university, at least) like peers already, as you may already have some very advanced knowledge in some areas. In others, not quite. They don't all expect the same level of politeness/respect/deference. Plus, some might be jerks, you never know :)

Be very humble.

share|improve this answer

It may be that he is teaching you through a progression and starting with something he thinks is understandable to the majority of the students and working up to the more advanced concepts where he can show you how much better they work. You can't evaluate after only one assignment. Sometimes the ones you dislike the most at first end up being the ones who push you the hardest to learn. Sometimes it is because of how bad they are, that you take the initiative and learn on your own (it is your future career after all) and sometimes they really are not as bad as it appears once you learn more.

Still if you feel the need to discuss his approach, by all means do so - just don't expect to be successful in getting him to change. And whatever you do, do not approach him in a public place. People don't care for being ambushed publicly. And he does still control your grade.

Keep the discussion professional not personal. Ask why he is approaching it this way rather than starting by immediately attacking his method.

And the truth is, you will have to put up with bad professors just as you will have to put up with bad co-workers, bad bosses and bad clients. Consider learning to cope with it as part of your education in how to get along in the workplace. There are no perfect workplaces either. Note I am not saying you shouldn't try to improve your workplace, but that there will always be colleagues whose approach you don't like or whose personality grates on your nerves. There will always be tasks that you would prefer to do differntly but sometimes what you want isn't what the organization wants no matter how good an organization is. And sometimes it is you that is the one in the wrong no matter how good you are. Everyone is wrong sometimes. Plus, studies have shown that most people overestimate how good they are. My personal experience backs this up as well. I've seen the worst employees I work with be furious when they don't get an outstanding appraisal even though everyone else is wondering why they didn't get fired.

share|improve this answer

Talk to him/her as if you discussed about the course and assignments with a buddy of yours in a different school and say your opinion as if it was from that imaginary buddy of yours ;)

share|improve this answer

I'll leave the "How do I approach the teacher" answers to the rest of the board. However I would like to say that if your discussions with your professor do fail, you should be able to have a discussion about the topic with the chair of the department. However, I would definitely wait on this as it is better to see if this assignment is a fluke or has some some sort of a means to an end that you may be missing.

share|improve this answer
    
That's a good idea. The only problem is, profs are loathe to criticize one another's teaching style, because they have to work with them, and it could boomerang. –  Mike Dunlavey Sep 23 '10 at 19:37
    
My point is that provided you approach the chair with a legitimate concern and have enough tact to make him realize that this is not just a personal grievance but something that could actually affect the department, then it is his job to address the situation. Now most likely this may just mean that he'll keep the situation in mind and do nothing more. However this is the type of thing that chairs need to be made aware of, especially with new professors where the department is still making decisions about tenure. –  Kavet Kerek Sep 24 '10 at 12:49

I was a professor, and I hated it when other professors would do things like that. The quality control in academia is pretty poor, and professors tend to assume they are "right" just because they are professors. There is precious little partnership with industry on how the graduates are doing as programmers.

Don't get me wrong. Many or most professors care very much about their students and about doing a quality job. That said, you don't have to look very far to find those with a "sink or swim" attitude, and nothing corrects them. The concept that behind each student are parents who are painfully paying for that student to be there is hardly ever considered.

I'm not sure what to recommend, but I wouldn't get into your position. Computer Science is one thing. Programming is another. The only programming course I ever took, I hated. I think it's better to "come from" another technical field. I was based in mechanical engineering, and then some electrical, before I got into CS.

share|improve this answer

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