This semester my students had to submit a project. Small, yet rich in functionality console application written in C++. They had 8 weeks during which I was always available for consultations. In addition to that, I have scheduled some extra time for students to consult their ideas, implementation and ponder over some of their problems.
Majority of the submitted projects were of a quite high quality. However, some of them used tools that were neither covered nor are particularly advised by the external sources. On the contrary, actually.
For example, one of the students (out of ~1000) used a bunch of
gotos. We are teaching Modern C++ and we have never covered
gotos during the laboratories. They were briefly mentioned during lectures, but it was more of a "we don't do that here" comment.
Another submitted project was covered with
#regions. As far as I am aware, even in C# it's no longer a practice.
During the course we have frequently commented on the importance of code quality, not merely the solution being functional. During the defense of the project I took my time explaining why such approaches are undesirable, but I was not convinced about the course of action regarding the grade. A part of the grade was being dedicated to code quality and usage of proper tools. The students knew it the whole time. While I could see some negative points being assigned for using
goto since it was mentioned in the lectures that students should not use that unless there really is no better way of achieving the desired goal, I am really unsure what to do about
#regions or other obscure approaches that do not apply to C++.
Are there preferred way to approach problems like this?