My professor constantly avoids any and all questions that involve anything beyond the simplistic. For example, one time he tells me:
I feel really bad because if this is your last term as a programmer, then you should have been through 3 courses in either VB or Java here. Which means then you really should already have the knowledge base for this course – you just don’t have the C# syntax (which is nearly identical to Java). Honestly, you’re the bulk of the reason why I’ve added in these ‘extra’ programs – because I think everyone else is going to be having a tough enough time with the regular projects. Hopefully I’ll be wrong about that, but having taught this course more than a few times, that’s just been my experience.
Yeah, you heard that right. He feels bad because I should have had previous programming classes to prepare me for this course. Granted, I did have an Introduction to Programming about a year ago, but it was basically a “how to use Visio” course. It didn’t teach anything worthwhile (unless you consider Visio that worthwhile).
So, I decide to continue to push my understanding of the language and ask about assemblies, specifically this (in a discussion board thread that he previously ignored):
ME
I didn’t see a necessity to pollute the global namespace with a using directive for one qualification.
And I’ll be honest, I have no absolute clue that it would pollute the “global namespace.” That is basically a carry-over from my work in client-side programming and memory resident applications that would normally suffer greatly the more you “polluted” the memory allocation.
Well, PROFESSOR? Does it increase memory whatsoever? I’m going to say, “No.” It probably doesn’t because this is a compiled language, then again, I’ve no clue how it may poll the framework. It might request that System be looked up each and every time the program runs or it may statically link in some information pertaining to the specific calls it requires. I have ZERO clue how assemblies are resolved.
PROFESSOR
For this course, it’s quite appropriate to have a ‘using statement’ even if you only use that reference one time – in fact, it’s nearly expected. For example, it’s fine to have:
using System;
public class TestMe {
public static void Main() {
Console.WriteLine("hello");
}
}
The rest of the discussion here is well beyond the scope of this course.
Say what?! How in the world did that answer ANYTHING I said?! In fact, the response didn’t even make sense.
And if that simple bit of information is outside of the scope of this course, yet it is supposed to be the 4th in a series of programming courses offered — WHEN exactly would it be in scope?
I am convinced my professor is an idiot.
Oops, almost forgot the nitpicking. I purposely did the wrong exercise to see how it would be handled (it was an extra, nothing against my grade) and this was his response:
PROFESSOR
The problem that I see in the text says:
“Show the output for each of the following data types: …”
The program code that I see here has 3 ints, a float and a double. It does some math and then outputs a single value (the double).
~~~~~~~~~~~~~~~~~~~~~~~
Now, was this first problem a real-world problem? Certainly not. It was quite abstract – BUT – it does bring up a great point. And this was something that I mentioned near the end of our first meeting together:
“The thing that folks tend to lose the most points for in this class is for not following directions.”
And while the problem itself might not be ‘real world’, following directions is definitely something that’s about as real world as it gets. I have this long, drawn out story that I tell to seated students about working your first job.
The short version is that your boss says they have a big client who wants a spreadsheet program. You want to impress your boss so you add all these extra features. At the end, you have a program that’s the best word processor EVER. It’s going to put Word out of business. The problem is – your client wanted a spreadsheet and you end up getting fired.
Ok… a little unrealistic, but the point is that reading and following directions is critical for a programmer. After all, what does a programmer do for a living? They write instructions for a machine.
Again, I feel bad posting this here — hey, you’ve taken the time out of your life to write an extra program. However, this is really part of the reason why I’ve created these ‘extras’. Because there’s so much to learn and really the best way to find out is to actually write a program and then get feedback on it.
Overall, I think it’s wonderful that you were able to get this program working — but I’ll challenge you to try to slow down a bit and pay close attention to what the problem is stating. This is going to be critical in your Projects this term as I’ll always grade based on the Project specs.
Thanks!
ME
Thanks for that lengthy response — I think.
I am worried about something small — I’m not sure if it was the fact that I did the wrong exercise, or the fact that you didn’t catch it.
PROFESSOR
Well, to be fair to myself, I do not have 100% complete knowledge of every single problem that is written in this textbook.
I sincerely apologize for not being better at catching the fact that you did a different problem.
All of my comments still apply to everyone though. Reading and following directions is critical.
Um… to be fair to me should I not have a competent professor in the field I’m studying? Why do I have to have the Gomer Pyle of C#?
So, I post the right exercise:
…
2. “Initialize each variable with an appropriate test value.”
I figured this meant no values outside of the types natural range. So I pushed the limit and casted a float value to my integer variable. (Just because I wanted to use 12345.12345 in each example. I know… silly…)
namespace IT254_01_Unit2_Extra
{
class Program
{
static void Main()
{
int varInteger = (int) 12345.12345; // casting so I can use 12345.12345
float varFloat = 12345.12345F; // no implicit conversions
double varDouble = 12345.12345;
decimal varDecimal = 12345.12345M; // no implicit conversions
Console.WriteLine("\r\nFormatted with 0 digits:");
Console.WriteLine("varInteger:\t{0:C0}", varInteger);
Console.WriteLine("varFloat:\t{0:C0}", varFloat);
Console.WriteLine("varDouble:\t{0:C0}", varDouble);
Console.WriteLine("varDecimal:\t{0:C0}", varDecimal);
Console.WriteLine("\r\nFormatted with 2 digits:");
Console.WriteLine("varInteger:\t{0:C2}", varInteger);
Console.WriteLine("varFloat:\t{0:C2}", varFloat);
Console.WriteLine("varDouble:\t{0:C2}", varDouble);
Console.WriteLine("varDecimal:\t{0:C2}", varDecimal);
Console.WriteLine("\r\nFormatted with 5 digits:");
Console.WriteLine("varInteger:\t{0:C5}", varInteger);
Console.WriteLine("varFloat:\t{0:C5}", varFloat);
Console.WriteLine("varDouble:\t{0:C5}", varDouble);
Console.WriteLine("varDecimal:\t{0:C5}", varDecimal);
Console.WriteLine();
Console.Write("Press any key to continue... ");
Console.ReadKey();
}
}
}
He responds with:
Sounds fine. I'm not sure that I totally understand why you cast a double into an int, instead of just storing the int. Yes, I see your explanation there, but I think that was part of the deal with having 4 different variables and was probably an extra line of text that wasn't necessary.
Oh, and keep in mind that often times with these textbooks, the author writes the text and someone else (maybe multiple someone elses) write the problems, summaries, student materials, etc, etc, etc. Not really that big of a deal, but its more than likely true. (See you never know what you might learn here)
So of course, why the heck are we learning from this 5 year old book in the first place — you know, the one my PROFESSOR told me was not really all that old and was a great book to learn C# from?
And of course that brings me to my final and most important point of my post — why can he not stop nitpicking? I mean, I explained that OCD frequently makes me do neurotic things and I've explained inline and in comments that I just wanted to, for no reason whatsoever. The only thing this moron can do is try and justify it in his own mind?
He cannot answer a simple question about C# coding conventions, but he can nitpick every moot point he sees fit?
I think my professor is an idiot.
You know what? Since I am rambling... let me tell you this final story. It relates to him saying that I should have had more programming classes before this one, but offers nothing in the way of actual assistance or guidance — and coding conventions just reminded me of it.
I asked if he had any C# design patterns or specifically a way to lay out my projects in a way that made sense and were easy to revisit after months or years of not perusing the code.
His response:
Are there any design patterns that I recommend? Yes, I'd recommend that you learn the different patterns and choose the most appropriate for the situation at hand. A good text to use when learning these is "Design Patterns" (Gamma, Helm, Johnson, Vlissides) ISBN 0-201-63361-2.
I am so letdown at my college's offerings and staff at this point, I feel as if I have wasted an entire 2 years of my life and over $30,000 USD in tuition.
Did I mention I think my professor is an idiot?