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:
u2022 Describe the goal and motivation behind your project.
u2022 Cite your sources. Mention any external code used with clear URLs.
u2022 Describe how you use the program (since it should be clear from the
game itself, this should be short).
u2022 [very important] What were the design decisions? Why did you
choose this solution (e.g., this data structure, this module, etc.)?
u2022 [very important] Challenges encountered and how you overcame
them (give us at least one example).
u2022 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?
u2022 Note that we want to assess your ability to use the learned concept to solve
u2022 [A] Good programs should:
u2022 Apply learned concept in a useful and interesting way (i.e., variables,
loops, conditions, functions, basic data structures, modules, user
u2022 Include useful comments (describing functions, explains hard to read
u2022 Use good variable names (self-explanatory names, CamelCase,
u2022 Should be well-structured and therefore easy to understand
u2022 Loops, functions and classes should be used where appropriate to
simplify the structure of the code and make it more taut, avoiding
u2022 Should check for different inputs and provide appropriate feedback to
u2022 [B] For higher marks:
u2022 Have an original idea (i.e. beyond standard ideas we provide)
u2022 Use a number of modules and combine them in an interesting way.
u2022 Use external modules like Tkinter, PyGame, matplotlib, numpy, etc.
u2022 Use data structures that go beyond built-in data structures
u2022 Use a simple AI in case you make game
u2022 Save and read relevant data to/from file (high scores, status of
program, last data points, etc.)
u2022 Use a Graphical User Interface (GUI), e.g. with Tkinter
u2022 [C] Exceptional submissions may include:
u2022 Implementing an outstanding and original idea
u2022 Have complex multiple files, your own classes,
u2022 Use modules that havenu2019t been explicitly shown in the lecture, e.g.,
Pandas, PySpice, BeautifulSoup, etc.
u2022 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.
u2022 Noughts and Crosses or Mastermind (but that is too simple – unless perhaps
you try to build intelligence into the game for the computer opponent).
u2022 Maze solving (read different text-based mazes from a file, display it, and solve
it for the shortest way).
u2022 Chess, Connect Four, or Drafts – or other board games – NB need to build in
the rules of the pieces etc. (Having a u201ccomputer playeru201d is too hard.)
u2022 Card games of various kinds (Poker, Solitary etc.).
u2022 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
u2022 A physical simulator (using odeint for integration)
u2022 A complex calculator capable of using statistics with a GUI
u2022 Analysis and extracting data from data files and plotting them (with user
u2022 A drawing application
u2022 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