Programming assignments in Spring semesters are typically inspired by a real-life task that students might encounter, or a real-life computational application outside computer science. This does mean that the assignment descriptions can be involved, because that's how realistic tasks often present themselves.
Advice
(See also the
The CS 1110 Declassified Survival Guide
, by Will Xiao.)
Programming is like a martial art. You can't just read about it or listen to lectures about it; you have to practice it frequently to achieve the right "muscle memory". And, you have to get hit in the face enough times to learn the right ways to "duck" and avoid that problem happening again.
Starting an assignment
Skim the assignment description
as soon as it is released
just to understand how the document is organized.
As soon as you can, read the assignment a few times. Don't expect to absorb it all at once. While reading the assignment, look for clues on what you need to do. When you've figured out the larger tasks, break those large problems into smaller and smaller tasks. Eventually, you can program those smaller tasks.
Start early, and try to do a little programming every day. It's remarkable how often you can spend a day working on something, and then the next day realize how to solve the problem! But
you need to leave yourself that next day
for this to happen.
Working with a partner
Want to work with a partner on a given assignment?
-
Try to choose one at about the same level as you. If your partner does all the work, you learn nothing. If you know more than your partner, you can't learn from them. If you're at the same level, you learn from each other and share the work equally.
-
We strongly advise
against
splitting the work; rather, the two of you should make sure both of you could, by the end, be able to do the assignment individually. Otherwise, you won't get all the practice the assignment is meant to provide.
Archive
Folder notation for objects, call frames.
- Eathiopia, spring 2022:
pdf
,
solution
-
Books, spring 2021:
pdf
,
solution
-
Payment services, spring 2020:
pdf
,
html
,
solution
-
Public goods games, spring 2018:
pdf
,
solution
-
Bank accounts, spring 2017:
pdf
(uses Python
2
),
solution
Lists, for-loops.
- Textual complexity of U.S. State of the Union addresses, Spring 2022: pdf, optional extension, solutions
-
Harvard beats Yale, 29-29: Spring 2021:
pdf
,
solutions
-
Tre1110, spring 2020:
pdf
,
html
,
a3_todo.py solution
-
Topic tracking in political speeches, spring 2018:
pdf
,
Supplement 1
,
Supplement 2
,
solution
-
Text analysis, ngrams, US State of the Union addresses, spring 2017:
pdf
(Note: download files are probably in Python
2
),
Python 3 solution
Recursion.
- Nick and Norah’s Recursive Playlist, Spring 2022:
pdf
,
solutions
-
Change My View, spring 2021:
pdf
,
solutions
-
Tre1110, redux, spring 2020:
pdf
,
html
,
solution
-
Org charts, spring 2018
pdf
,
page hosting file downloads
,
solution
-
Tournaments, spring 2017
pdf
,
solution
(Note: download files and solution files are probably in Python
2
)
Classes, while-loops.
- A4 (Playlists) ReMixed, spring 2022: pdf, solution
-
Looping Back to A3 [Harvard Beats Yale, 29-29]: A Class Act, spring 2021:
pdf
,
solution
-
Tre1110, third time's the charm, spring 2020:
pdf
,
html
,
solution
Subclasses.