Homework Assignments
Date | Due date | Topic | Materials | Solution |
---|---|---|---|---|
9/10 | 9/16 11:59pm | Variables, Control Flow, Sequences | homework1.py | solution_week1.tgz |
9/18 | 9/23 11:59pm | Lists, Dictionaries, Strings, Files, Functions | markets.tsv | solution_week2.tgz |
9/25 | 9/30 11:59pm | Functional Programming. Generators. | solution_week3.tgz | |
10/2 | 10/7 11:59pm | Object Oriented Programing | test_restaurant.py | solution_week4.tgz |
10/9 | 10/14 11:59pm | File Systems. Object Serialization. Exceptions. | ||
10/17 | 10/26 11:59pm | Make-up problems |
click on a topic to open the problem set PDF.
Project
In lieu of a final exam, participants will work on a final project in self-formed teams of 3 or 4 (exception for special cases). If you cannot find team-members, e-mail the instructor.Dates:
- Project proposals due: 10/19/2014 23:59pm EST
- Project due: 11/23/2014 - 11:59pm EST
Project Proposal
Each team must submit a project proposal of about 2 pages, containing
- A list of all team members and a catchy project name.
- A high level description of scope and purpose of the project (one paragraph)
- A functional specification of the desired system behavior, for instance a precise description of possible types of input and output, including examples.
- A first draft of how the project will be broken up into major components and functional blocks (packages, modules, important classes and functions and their purpose and functionality).
- If applicable, a list of standard library modules and 3rd party libraries that you are planning to use (check the Python Package Index .
- A short description how you are planning to organize work-flow in your team. Specifically this should explain how work will be divided, how individual components be combined and how you will go about maintaining quality (testing, mutual code review...). Note that all team members should participate in the project.
Choosing a Project
The project should be something that's interesting/relevant to you. It should be larger than the weekly homework problems and serve a specific (more or less useful) purpose. However, the main mistake in choosing a project is to select something that's too big or too challenging.Examples for possible projects are:
- A simple game (a text-adventure engine, connect four with AI, Tetris...).
- A tool that harvests information from the web and processes it (news headline aggregator, monitoring flight ticket prices...).
- Some very basic web-app (simple blogging platform, meeting scheduling site, basic online store...)
- Implementation of some interesting algorithm or a set of algorithms (machine learning, nlp, graphs, ...)
- A tool for analyzing a specific scientific data set.
Submitting the Project
The project code and documentation (a brief README that explains the project, the basic structure of the code, and how to run it) is due on the project deadline. After submitting the project, every group will schedule a short (10 min) demo with the instructor. The final grade for the project will be determined based on the quality of the code and documentation and on the ability to explain it. Every student should be able to explain all aspects of the project.Homework Submission Instructions
Place the files for all problems in a directory named [your_uni]_week[X] , where X is the number of the problem set. For instance if your uni is xy1234 and you are submitting the problem set for the first week, the directory should be called xy1234_week1. Either zip or tar and gzip the directory (using tar -c xy1234_week1 | gzip > xy1234_week1.tgz ) and upload it to your directory in the drop box for this class on Courseworks.General Homework Guidelines
- Late policy: Absolutely no late submissions will be allowed (unless in unusual circumstances with prior instructor approval).
- Your code should run on Python 3 interpreters (cPython).
- Document your code! Undocumented code will result in lower scores, as will code that does not follow style guidelines.
- Make sure your program implements any specific functionality asked for (input/output format etc.).
- Efficiency of your implementation matters unless specified otherwise.
- You should be able to solve all problems without using any modules other than those mentioned.