Feedback for the course.

Alessandro Vecchi (1870 points)
1 10 18
asked Nov 25, 2020 in Course info by Alessandro Vecchi (1,870 points)
Good afternoon to everybody,

I'm making this post in order to give my feedback about what happened with these two homework.

Before starting this degree course, I was completely a noob in programming. As many students of this course, I came from a scientific high school that doesn't have computer science as subject. Therefore I had to start from zero and I had to build my own study method for a subject that I never approached before. In this sense, the homework helped me a lot since they are a way to apply what we have learned so far with 'anti-conformist' exercises. I spend a lot of time doing them and I actually enjoy make my code better, trying to find a way to simplify the idea of the solution and get the result in a faster way. Therefore I'll say that from my perspective the idea of give bonuses to the cc and the efficiency of the code is great. Thanks to these bonuses I've learned:

 how to really understand a problem and how to solve it in different ways,

how to make it more efficient by simplifying the reasoning of the solution or by trying to implements other ways that actually reveals faster,

how to use methods and built-in functions like map, filter,any, sum, lambda etc... that we don't use in class but that are great ways to write the solution and that in the same moment simplifies the cyclomatic complexity(otherwise I surely wouldn't use them),

that there is always a way better than the mine to solve a problem, so if I see people on the leaderboard above me it means that there is a better way to arrive to the solution and so I start thinking to other 'anti-conformist' approaches.

Without the bonuses, I'm pretty confident that I wouldn't arrive to the level of knowledge and experience that I now have. Once I passed all the tests, I wouldn't have any motivation to implement it and make it better, right?. I found also great the idea of the peer assessment, this moment where we share our solutions and we try to understand and make the solution of our colleagues better. An anonymous way to help and being helped, even though the stars aren't objective. Now, my question is, why do we have to ruin everything with the secret tests? These tests weren't mentioned in the description of the course and we were informed of their existence thanks to the Italian forum no more than a week ago.  For me, they managed to ruin what was the great idea of the course. Me and the other colleagues spend a lot of time daily on these homework in order to make a great result. I manage to took 34 in both the previous homework and I was in top 3 for efficiency and cc in both of them and I managed also to do my first 1cc code on the last one. To earn this result I spent many hours on coding, trying to understand how to reason and how to make a better code. It was rough for a beginning programmer like me but I managed to do it and I was very proud of the results that I achieved in a little more than one month. Nevertheless, after the secret tests, many of us lost their votes and some of us got completely destroyed by them, but for very little edge cases that no-one told us to think about(for instance, only 4 people passed the secret tests of the hw4). For example, I failed 3 secret tests of the HW4 because I used rindex (that returns an error if the element is not found) instead of rfind(that doesn't return an error) to search the last syllable. For this little thing I got my vote passed from 34 to 25 and now I have to do the recovery and I assure you that many students are in the same situation. Therefore they are overriding not only the huge amount of work, effort and time we spent to do it and the peer assessment link to him, but also the will and the craves of do a code and make it better. What's the point of struggling to do an homework if I could not have the result expected because of an 'empty string'  not considered as a possible input? I know that the work that I did till now isn't useless, but I'm disappointed that the time spent on the homework got destroyed for a little thing that I wasn't told to consider. I'm not accusing anyone, I'm only displeased for the results of them as many other colleagues and I will suggest to review the idea of the secret test, because it's actually killing our desire to do better.

I didn't mean to offend anyone, I hope it will be a constructive comment.

Thanks if you read it all.

2 Answers

benjamin (2490 points)
0 6 21
answered Nov 25, 2020 by benjamin (2,490 points)
I agree with you in almost every point.

My biggest "problem" is with the bonuses and in particular with the run time. If it is true that that the leader board gives us an incentive to do better, it is also true that this very incentive might be misleading and get us a little bit out of track. I speak for myself when i say that i focused too much on getting down milliseconds instead of thinking every possible exception that might occur which is indeed better not only for the homework but also as a general rule when writing code.

Since i do not like to complain without giving feedback an idea that might be interesting to discuss is to remove the runtime bonus and revisit what secret tests are. By that i think it would be really interesting to have a general set of tests ( like the one we download ) and in addition some secret test  that we do not know what edge case might be testing and that are run on the vm, not after deadline but during the entire period available to us to do the homework. In this way we remove that uncertainty when the deadline expires, we have to analyze the problem more carefully and have an immediate feedback of whether we are doing good or not in the analysis of the problem.

hope i was clear :)
andrea.sterbini (172780 points)
514 935 1789
answered Nov 25, 2020 by andrea.sterbini (172,780 points)

Homework assignments are automatically tested on a sample data set via a test program that is delivered to you together with a description of the assignment. In addition to the provided tests, a number of additional hidden tests will be run to further check the provided solution and obtain the final score.

benjamin (2490 points)
0 6 21
commented Nov 25, 2020 by benjamin (2,490 points)
yes i understand but that was not what  i meant. At the moment the secret tests are ran after the deadline. I thought it would be interesting to discuss what are the advantages of having them run whenever we upload the program to the vm with us still not knowing what those edge cases are and maybe have bonuses delivered as we pass those tests of edge cases. Of course this would imply that that the edge cases tested are a little bit trickier to recognize thus forcing us to analyze in depth the problem.
andrea.sterbini (172780 points)
514 935 1789
commented Nov 25, 2020 by andrea.sterbini (172,780 points)
Yes, others have already commented that it would be better if edge cases were already part of the initial set of tests. I agree and we will do it in the following HWs.

BTW, secret tests have been introduced after  some students submitted code in the style of "if this is test 2 than answer 42" (instead than solving the problem).