Assignments
Please make sure all submissions are anonymous.
We will use Gradescope for assignment submission and grading. We will post instructions on EdStem. Please make sure you follow those instructions!
All work will be due by 11:59pm US/Eastern of the indicated day.
Name
Group?
Late?
TA?
Published
Due
no
no
yes
Wed, Sep 6
Fri, Sep 8
no
yes
yes
Sat, Sep 9
Tue, Sep 12
no
no
yes
Wed, Sep 13
Sun, Sep 17
no
yes
no
Mon, Sep 18
Thu, Sep 21
yes
no
yes
Fri, Sep 22
Tue, Sep 26
no
yes
no
Wed, Sep 27
Thu, Sep 28
yes
no
yes
Fri, Sep 29
Wed, Oct 4
no
yes
yes
Thu, Oct 5
Thu, Oct 12
opt.
no
yes
Mon, Oct 16
Fri, Oct 20
no
yes
yes
Sat, Oct 21
Tue, Oct 24
no
yes
no
Wed, Oct 25
Sun, Oct 29
no
yes
yes
Mon, Oct 30
Sat, Nov 4
no
yes
no
Sun, Nov 5
Sat, Nov 11
yes
no
yes
Sun, Nov 12
Thu, Nov 16
no
yes
yes
Sun, Nov 19
Thu, Nov 30
no
no
no
Fri, Dec 1
Mon, Dec 4
All SRC tasks will be due two days after the corresponding assignment. The one exception is Contfracs, which will be due on Oct 16 (instead of Oct 14), to avoid being due during the mid-semester break.
The Group? column says whether you have to do that assignment solo or in a group. A group is two to three people. We will post instructions on group formation on EdStem. If it says that groups are optional, then you can form a group of one or two other people on your own, or work solo, whichever you prefer. You cannot repeat partners across group assignments. Please read and follow these rules and guidelines for all group assignments.
The Late? column says whether you are allowed to use late days for this assignment. Please see the Syllabus and Course Policies for information about late days.
The TA? column indicates whether you can get external (course
staff or EdStem) help for this assignment. For most assignments you
can. But for a handful (usually simpler) assignments, we want you to
work through them on your own and make sure you can do the work in
this class by yourself—
The course homeworks will be programmed in Pyret,Please program according to the Pyret Style Guide. unless indicated otherwise. Pyret 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:
You can always use the computational core of the language: basic constants, functions, higher-order functions, and composition.
You can always construct your own new data definitions, unless explicitly stated otherwise.
You are allowed to use builtin functions for the following datatypes unless explicitly stated otherwise:
Numbers (functions such as num-abs, num-max)
Strings (functions such as string-to-number, string-length)
Booleans (functions such as not)
You are allowed to use the following libraries unless explicitly stated otherwise:
lists
sets
pick
tables
option
either
You should not use any other built-in functions or libraries unless an assignment explicitly permits you to. When in doubt, ask.
You may not use variables (var) or mutate objects (!) unless explicitly permitted to by an assignment.