1. A working Python program in the form of a .py file (or potentially a collection of
files which are collected together as a .zip). We will only be accepting projects
in Python 3 or above. It has to run on the university build machines. Please
test it there before submitting.
2. A short report (in .pdf format) of 1-2 pages in length, with the following format:
• Describe the goal and motivation behind your project.
• Cite your sources. Mention any external code used with clear URLs.
• Describe how you use the program (since it should be clear from the
game itself, this should be short).
• [very important] What were the design decisions? Why did you
choose this solution (e.g., this data structure, this module, etc.)?
• [very important] Challenges encountered and how you overcame
them (give us at least one example).
• Anything else you would like to highlight, and we should know to be
able to mark your submission fairly and correctly.
What should a good assignment do?
• Note that we want to assess your ability to use the learned concept to solve
• [A] Good programs should:
• Apply learned concept in a useful and interesting way (i.e., variables,
loops, conditions, functions, basic data structures, modules, user
• Include useful comments (describing functions, explains hard to read
• Use good variable names (self-explanatory names, CamelCase,
• Should be well-structured and therefore easy to understand
• Loops, functions and classes should be used where appropriate to
simplify the structure of the code and make it more taut, avoiding
• Should check for different inputs and provide appropriate feedback to
• [B] For higher marks:
• Have an original idea (i.e. beyond standard ideas we provide)
• Use a number of modules and combine them in an interesting way.
• Use external modules like Tkinter, PyGame, matplotlib, numpy, etc.
• Use data structures that go beyond built-in data structures
• Use a simple AI in case you make game
• Save and read relevant data to/from file (high scores, status of
program, last data points, etc.)
• Use a Graphical User Interface (GUI), e.g. with Tkinter
• [C] Exceptional submissions may include:
• Implementing an outstanding and original idea
• Have complex multiple files, your own classes,
• Use modules that haven’t been explicitly shown in the lecture, e.g.,
Pandas, PySpice, BeautifulSoup, etc.
• Use a more sophisticated Graphical User Interface (GUI)
Possible Python Projects
A simple text interaction game. Note that these are bare minimum and need to work
flawlessly to pass.
• Noughts and Crosses or Mastermind (but that is too simple – unless perhaps
you try to build intelligence into the game for the computer opponent).
• Maze solving (read different text-based mazes from a file, display it, and solve
it for the shortest way).
• Chess, Connect Four, or Drafts – or other board games – NB need to build in
the rules of the pieces etc. (Having a “computer player” is too hard.)
• Card games of various kinds (Poker, Solitary etc.).
• Scrabble – asking the player to find best scoring words from a randomly
NB you can database of words online.
More interesting projects (with higher marks) would be
• A physical simulator (using odeint for integration)
• A complex calculator capable of using statistics with a GUI
• Analysis and extracting data from data files and plotting them (with user
• A drawing application
• A game implemented with Pygame
NB you will be generally ok using modules which are built-in to Python 3.0 (the
standard library) and the ones that we present, i.e., PyGame, Tkinter, Numpy,
matplotlib. But for some more interesting tasks, you might want to experiment with
downloading 3rd party module. You can do that within PyCharm, see here for more