Homework Assignments
| Date | Due date | Topic | Materials |
|---|---|---|---|
| Thu 01/26/2012 | Thu 02/02/2012 | Control flow, Lists, Dictionaries | |
| Fri 02/03/2012 | Thu 02/09/2012 | Strings, Files, IO, Functions, Generators | [homework2.pdf][markets.tsv] |
| Fri 02/10/2012 | Thu 02/16/2012 | Object Oriented Programming, Special Methods | [homework3.pdf][test_restaurants.py] |
| Fri 02/17/2012 | Thu 02/23/2012 | Exceptions, Serialization, File System | [homework4.pdf] [part1_test.tgz] |
| Sat 02/25/2012 | Thu 03/01/2012 | Make-up problems (Decorators, Regular Expressions) | [homework5.pdf] |
Project
Participants will work on a final project in self-formed teams of 2 or 3 (unless in exceptional cases). If you cannot find team-members, e-mail the instructor.Dates:
- Project proposals due: Thu 03/01/2012 (11:59pm EST)
- Project due:
Sun 04/01/2012Tue 04/10/2012 (11:59pm EST) <- EXTENDED DEADLINE
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. This is basically a precise description of possible types of input and output, including examples.
- A 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 libraries 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...).
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 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.
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 the directory for problem set X on the Courseworks page for this class.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 2.7 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.
