Potentially Ignorant CompSci Professor Making Student's Life Miserable
However, my student is struggling and the nature of the professor's restrictions on how their projects are constructed as well as the strictly outlined structure of the code makes it impossible for them to: 1. Learn to write their code in a structured and safe fashion 2. Write code that doesn't develop subtle behaviors and problems due to a lack of understanding of pointers.
Amongst the sundry other restrictions choking off their ability to complete the coursework in a timely fashion is the inability to ever use global variables. They are outright banned. While I am fully aware of how those can turn ugly, utilizing extern + static properly largely invalidates these problems.
The exact structure of the functions and their arguments, prototypes, and definitions are outlined for the students and deviating from this poorly thought out structure leads to a reduction in grade much like if you were to use global variables.
I'm doing my best to help the student, but I cannot do their homework for them, and I'm having to remedially explain basic C programming concepts like how scanf works as well as how pointers && reference/dereference operators behave.
I sent an email to the professor mentioned above (with my name censored, as much as I trust you guys), and I'm including it below. Please do not castigate me over the email, I know it's likely inflammatory, but I spent from 8 pm to 6 am last night trying to give a crash course in C to a distressed and confused student who couldn't put together the homework assignment in a fashion that didn't develop bugs, or otherwise not function outright.
I'd like your guys thoughts, and if anyone wants more information I can provide it as I'll be eyeballing the comments.
BEGIN EMAIL
Hello, my name is C A and I'm tutoring one of your students who is taking a C Programming (200 something) class under you. The project that was due today (Wednesday), named Project 3, brought to my attention some concerns I had.
On the slightly more trivial side: While I've seen professors require that the code be no more 80 columns wide (fairly reasonable request since a lot of people still use vi/vim or pico/nano for code editing), Your request that the indentation be made out of spaces rather than proper tab characters was baffling. Not only does this break indentation control in a wide variety of IDEs and editors, it makes the indentation non-trivially mutable and otherwise static.
If it's your desire that the code have a certain appearance, I'm certain that whatever environment you observe code in is capable of setting the tab character size to any arbitrary size you prefer. As the case may be, 4 spaces if you like.
And then on the more serious side: You de facto disallow all use of global variables. I will for the sake of clarity assume that this means no use of extern to access external variables as well. This particular requirement (on penalty of a reduction in grade) left me quite speechless. Have you ever read K&R C? The very people behind the creation of C and Unix made use of global variables at will whenever it was appropriate, while using static for scope control.
My mention of static here is critical. If it's your concern that global variables can make a multi-file project develop unpredictable behavior, then I would point out static variables.
Your ban of global variables forces the students to (ab)use passing locals by reference and turn the program unnecessarily into a pointer filled mess. What compounds this problem is that some of your students are not computer science students and only have the faintest grasp of how pointers, reference/dereference operators and the like behave.
This turns a potentially useful project into a monster that takes a considerable amount of time. I spent from 8 pm until 6 am la...
9 comments
[ 3.3 ms ] story [ 11.3 ms ] threadIn spite of the difficulty, it sounds like you are offering a good resource for your student by fostering and supporting their passion for programming.
I've got only one student under me right now.
Frankly, part of what makes me do it is unemployment. It keeps my mind off of bills and the need to find a software gig.
The above email is already sent to the professor. I'm fully aware that there was a more diplomatic way of approaching the matter, but experience tells me that nothing I could've said would've changed anything.
Instead I'm opting for a direct and forceful approach in the hopes I shock them out of ignorance of what they're doing to their students.
I don't expect them to change the project requirements, but I hope this makes the professor realize how much their students are struggling and perhaps start explaining the language before slapping code on the projector.
Thanks for the advice and note of agreement.
He may believe that by giving students a strict outline for how they are supposed to write code, he is making it easy for them. More likely, he wants their code to be easier to grade. In the latter case, of course, he should just write a program to automatically evaluate their code, which would save everybody lots of time. (I think most of my CS teachers did this, although they also scanned code for comments and such.)
I'm aware the email was rude. Experience has taught me that diplomacy has no effect on the tenured.
She doesn't encourage commenting code, and I have to keep reminding my student to include comments to explain what a two-letter variable is doing.
Laziness abounds.
I'm trying to make them aware that some are struggling and that explanation is more important than slapping code up on an overhead.
Spaced formatting is fine, forcing it on your students is unconscionable and inexcusable. It wastes gobs of time in editing that should've been spent thinking about flow control.
This goes back to what I said about cargo cults. :(