1. getting started
due Wed Feb 24
- Your main goal for this week is to be able to run python programs.
- Before Monday, please join our slack channel, introduce yourself, and ask a question.
- You should also
- explore this website and learn how it works,
- tell me about yourself (before Monday's class) by starting to submit work for this assignment, including what sort of computer you're used to (Mac, Window, ...), and what your interests are.
- read chapter 1 in the textbook,
- learn to use a unix command terminal (we'll work on this Monday in class),
- ask a question on the course's slack channel (and feel free to answer questions, too),
- run the "hello world" and "chaos" programs in the first chapter, several different ways, and
- tell me about the first week went.
- Here are all the specifics.
2. simple programs
due Thu Mar 4
3. objects & graphics
due Fri Mar 12
- Here is a longer description of the assignment.
- The short version is:
- Read chapter 4 in the text, and my notes & videos.
- Get Zelle's graphics.py working on your computer (or my drawing.py on jupyter.bennington)
- Do exercise 3 in chapter 4, drawing a face.
- Explain and give examples of "class", "instance", "method", "argument".
- Do the sol_lewitt_lab.
- Tell me how all this is going for you.
4. lists, strings, files
due Thu Mar 18
- Read chapter 5 in the text, and check out my notes & videos.
- Do these programming exercises from this chapter :
- 4 (acronyms) or 5 (name sum)
- 7 (on the Caesar cipher) - optional: 8 (continued; trickier)
- 12 (formatted numbers), and
- 14 (read and summarize a file)
- Here are some hints
- Connect with Jim or one of the tutors in an one of the online zoom sessions to explain what you did on one of these exercises, and to get some feedback. Tell me who you worked with and on which exercise.
- As always, be smart about the time and effort spent on this stuff. If it feels like too much, focus your attention on a few. If it's fast, turn up the juice on an aspect that you find interesting.
due Wed Mar 24
- Read chapter 6, my corresponding notes, and check out my videos.
- Describe briefly the following notions, and give a code example.
- return value
- local variable
- global variable
- Do programming exercise 2 from chapter 6, writing a program that prints (the ants song). (This is similar to the "happy birthday" example in my notes.)
- Do programming exercises 11 through 14 from chapter 6 (ending with the sum of squares of numbers from a file).
- Re-write any program you did in a previous assignment, modifying it to use functions and docstrings. Optionally, add doctests too. :)
6. decisions and loops
due Wed Mar 31
- Browse through the material in chapters 7 and 8, which is all related. You don't need to master all of it, but do make sure you understand at least "if" statements, comparisons, and while loops.
- Look at my corresponding notes and videos.
- Do the following two programming exercises :
- chapter 7, exercise 6 (the speeding ticket)
- chapter 7, exercise 12 (date validation)
- And do these two math-y exercises; both will need loops or loops-within-loops, if statements, and (probably) helper functions.
- Please do ask for clarification, hints and/or assistance from Jim or the tutors as needed.
7. start midterm project
due Thu Apr 8
- Start thinking about your midterm project, the STOP game. (I've also posted a video describing it.)
- Describe how you have organized the work for the project, what you personally are doing to start, and what you have done so far.
- Read chapter 9 in the textook, "simulation and design", and check out my notes. (The material in this chapter is about how to work on a project ... I'm assigning this now to give help you think about how to approach the "STOP game". )
- Do one coding exercise: chapter 9, programming exercise 7, simulating craps. (See the notes I mention above.)
8. midterm project - 1st draft
due Thu Apr 15
- Turn in a first draft of your midterm project.
- If you're working in a group, each person should still turn in everything.
- Explain what you have done, what is (and isn't) working, and show an example of whatever you have running so far.
- Read chapter 10 on writing classes (objects).
- Do exercise 11 from chapter 10, "implement a class to represent a playing card".
9. midterm project - final version
due Wed Apr 21
- Turn in the final draft of your midterm project.
- the code and its documentation (please use docstrings)
- an example showing what you see when you run it (copy and paste terminal text, or screenshots)
- a write-up describing how the whole things works and what your contributions are. Also include all your sources: what assistance you got from tutors or classmates, and what you found online that helped.
- Do look at my comments from the first draft, and try to incorporate those ideas.
- Read chapter 11, on using collections and objects.
- Do exercise 15 from chapter 11, "create a class that represents a deck of cards". (Or turn this in later.)
10. object design
due Thu May 6
- Read chapter 12 in our textbook.
- Use the Card and Deck objects from the previous assignments to simulate a blackjack game, without betting. Create a Hand object, and play a game between a dealer and player, asking for "hit" or "stand". The dealer keeps taking cards until they lose (over 21) or have more than 17. The player can stop at any time.
- Do at least one of the following two exercises from our textbook:
- chap 11, exercise 21 : "Extend the cannonball animation example to include target objects"
- chap 12, exercise 4 : "Write a program that simulates an ATM"
- Propose a final project.
11. recursion and algorithms
due Thu May 13
- Browse chapter 13, on algorithms and recursion. Very cool and profound stuff.
- Work on your final project.
- Do one of the following exercises:
- Do chapter 13, exercise 3 : write a function that returns True if a string is a palindrome . (The code for this can be very short. Hint: a palindrome has the same first letter and last letter ... and the rest of it is also a palindrome.)
- Draw a fractal tree using turtle graphics, drawing a Y shape with smaller Y's branching outward. You can use my related turtle_recursive_curve.py as a starting point. Here's a screenshot of that. There's a discussion of this at Abhinav Mahapatra's discussion.
12. final project - first draft
due Thu May 20
- Turn in a full first draft of your project - all the pieces including code, output, and discussion paper.
13. final project
due Thu May 27
- Turn in your final project.
- The project should illustrate your understanding of the material we've covered this semester: loops, conditionals, objects, documentation - the works.
- Your submission should include code, the results of running the code (screenshots for graphical programs; text files otherwise), documentation, and a discussion of how it works, a reflection on how you wrote it (what was easy, what was hard, what sources you used, who you talked to for help, ...), and a bibliography of sources.
- I would rather see something small done well than something big done badly. I encourage you to start with a minimal version and get that working before trying to add too many bells and whistles.
- Optional show-n-tell : for brownie points, do a class demo and show us what you did.
14. semester evaluation
due Fri May 28
- A place for Jim to give feedback for your work this semester.