On this page:
5.1 Supplemental Homeworks for CSCI 0170
5.2 Homeworks for CSCI 0190
5.3 Clinics
5.4 Language Use

5 Assignments

All work will be due at 11:59pm of the indicated day.

5.1 Supplemental Homeworks for CSCI 0170

Before you can take this course, you must complete all the homeworks (until this course begins) of CSCI 0170 with high grades and all of the following supplemental homeworks with high grades. At the beginning you may find this especially difficult, but don’t despair! Keep at it! If, however, by the last of these you find the pace is still far too great for you, then you may find CSCI 0170 a better course for you than 0190 for the rest of the semester.

The supplemental assignments are due as follows:








Fri, 09/11


Thu, 09/17



Fri, 09/18


Sat, 09/26



Fri, 09/25


Thu, 10/01



Fri, 10/02


TUE, 10/06

5.2 Homeworks for CSCI 0190

The regular assignments for CSCI 0190 are as follows.





Sweep Due


Final Due

Talk Like a Pyret ‡


Thu, Oct 8




Tue, Oct 13



Wed, Oct 14




Sun, Oct 18



Mon, Oct 19


Wed, Oct 21


Sun, Oct 25



Mon, Oct 26




Thu, Oct 29

Brown Heaps


Fri, Oct 30


Sun, Nov 1


Tue, Nov 3

Lightning *


Mon, Nov 2




Mon, Nov 2



Wed, Nov 4




Tue, Nov 10

Join Lists +


Wed, Nov 11


Fri, Nov 13


Tue, Nov 17

Map Reduce +


Wed, Nov 11


Fri, Nov 13


Tue, Nov 17



Wed, Nov 18




Sun, Nov 22

Tour Guide


Mon, Nov 23




Tue, Dec 1

Fluid Images


Wed, Dec 2


Fri, Dec 4


Sun, Dec 6

* Lightning will effectively be an in-class assignment. We will not have class on this day; instead, you will have the hour to do the assignment (you don’t have to come to class; do it wherever you like). The entire assignment needs no more than two hours, and is a check that you can do straightforward programming tasks properly without spending too much time on them.

+ Join Lists and Map Reduce will be done in pairs. You will be given instructions on forming and joining pairs. Buddy up!

‡ Name credit to Juliet Norvig.

5.3 Clinics

Higher-Order Functions


5.4 Language Use

The course homeworks will be programmed in Pyret, which is a reasonably large language with many libraries, some of which reproduce functionality (like basic data structures) that we are asking you to create in this course. This can lead to some confusion about what you are and aren’t allowed to use from the language. Each assignment provides information about this when necessary, but in general, the following rules apply: