In that case, the “good” lecturer would explicitly suggest that the students try ramping up to 1000 threads, and would then followup with an explanation (next tutorial, perhaps) of why it died AND have a tutorial outlining what you should do.
And if they don’t have time to do that / don’t want to cover it, the least they could do is add a note: “Although threads work well for a few fishes, this is not how threads are supposed to be used in general, and they wouldn’t work properly with more than perhaps 10 fishes. The techniques for that are too advanced to cover here”.
The whole point of this exercise is to teach good practice (OOP). Surely, to simultaneously teach bad practice is to undermine the core learning-objectives?
* blahblahblahh has had plenty of bad teachers in the past, as well as the good ones, and is fed up of the appallingly low quality of teaching some people get away with year after year.
There’s no real excuse for bad teaching, e.g. if the teacher fails to spend even the 30 seconds it took me to type the above warning. Obviously, we don’t have access to the follow-on assignments, but a moderately good teacher (not especially great, just “normal”) would at least drop in the implication that too many fish was going to cause some fundamental problem that would be covered later.
PS: other than that, the assignment looks really good to me, much better than most undergrad examples of trying to teach OOP than I’ve seen (as a tutor).