Question: Isn't this policy contrary to the principle of "code re-use", which is a pillar of modern software engineering?

Answer: The assignments in this class are small projects, meant to be completed in few hours from scratch. They deal with fundamental ideas, all of which have been programmed many times. The point of such projects is to learn how to implement these ideas yourself! not how to Google up someone else's solution and re-use it.

Question: I re-used a Java class that I wrote 100% by myself, for THIS course, THIS semester, which I think follows the *spirit* of the law, but technically it is in violation of the exact wording of rule #2 and #3. What about that?

Answer: Technically it would meet the rules,  if you typed it in,  rather than cut-and-pasted it. Now,  you would have had to modify EntryList so much to work for ListBigFib,  that you might as well have typed it in as started with a cut-and-paste and then edit,  so looking at your source code I would find nothing to complain about.

From a pedagogic point of view,  though, you'd be better off to start with a blank screen. The point of the ListBigFib exercise is to get more facility working with linked lists.  We studied IntList in class and had several examples of traversing one linked list.  Then, in ListBigFib,  you traverse TWO linked lists at once, and create a third at the same time. I'm hoping by now you can just rattle off:

  class IntList{ 
   int key;
   IntList next;
}

without even thinking about it
and write loops that look like
for(marker = this; marker != null ;marker=marker.next)
  { ...
  }
without much thought either. If you have to go back and look at something you did before, and cut and paste, and scratch your head,   you'd be better off to look at class notes.   With,  as far as I can think of now, just one exception (which will be re-use of BigMatrix in the Google  assignment),  the assignments in this course are short exercises,  which can be straightforwardly solved in a couple screenfuls of code relying on nothing but pseudocode from the book or code given in class.   And that's the best way to approach them,   i.e. students will learn the most from doing them that way, and moreover, probably get a working solution faster than by trying to "re-use"  some other code.