Here are my comments on the programming assignments and the last two homework assignments. Greetings, Thijs Java, first part: - release_writelock() in ReadProcess should be release_readlock() - && in get_writelock() should be || - writer does only a simple notify() when releasing its lock, while there might be many readers waiting that could go in at the same time Java, second part: - writerequest should be an int, not a boolean, as there can be many writers waiting to get a lock (you identified this problem in your report) - both notify()'s should now be notifyAll()'s: currently, a if either notify() happens to wake up a reader while a writer is also waiting for a lock, your program freezes Prolog, part 1c: - your paths don't include the first and last points, which do belong to it - path(a,c,[[a,b],[b,c],[c,b]],[b,c,b]) is satisfied, but the path clearly isn't semi-acyclic Prolog, part 2: - comparisons should be strict - "min/max" constants limit functionality Scheme: GRADE 7,5 - late - you don't relate the difference in programs to a possible difference in paradigms - substitute doesn't handle the empty list as its first parameter - while you treat the strings recursively, they don't fully reflect the nature of recursive lists, being stored linearly