Assignment 8: Worth 5% of the Homework grade (Assignment 7 is 14%, not 15%) Due: Monday August 10th at class-time. To turnin programs for Assignment 8 (mine.py) from lectura, type % turnin 380assignment8 mine.py 1. The object of this assignment is to learn a piece of Python we didn't get to in class. It's your choice! For this assignment, write something _YOU_ want to write in Python. On Monday the 10th, I'll spend about 12-15 minutes with everyone in class (during class and office hours) and you'll demo your assignment and code. I'll have a sign-up sheet outside my door for the 10th. The idea is to present your code and "impress" me and Ajeya. Show us that you learned Python, show us that you know how to document your code, show us you know how to code in Python, show us you learned something new. Here are some ideas for projects (some are harder than others) (1) An adventure game. Now that we've had many examples of games in class, maybe you want to write your own that's much cooler than they ones we wrote. (2) Extend the hamgui.py from Assignment 7. There's all sorts of ways to extend the GUI and the functionality. Here are some ideas: (a) Save and load cost matrices using Python Pickling (b) Add networking: Make it so there is a "HamiltonianSolver Server" and you submit your TSP request over a network (c) Add a menu system (pull-down a load/save menu) (d) Add scrollbars so you can have a Canvas much larger (3) Combine (1) and (2): Write a GUI for an adventure game (4) Write a Web Browser (okay, this is a harder one, but a simple web browser with Tkinter can be fun to mess with). There's many Python modules for dealing with Web stuff. (5) CGI Stuff. Your Core Python Programing book deals with how to do CGI: Read those chapters and write something cool in CGI. (6) Write a pretty good text editor with the Tkinter package (7) Write a Tkinter GUI for a 2-Player Checkers/Chess/etc. game. (8) Learn Qt and write the TSP GUI in Qt (9) Write a C++ Extension module. Example: Recode the Hamiltonian Path using C++ and the STL nextPermutation, and use vector instead of C arrays to hold things. Grading Criteria: (1) Quality of Work: How much work did you do? 50% If you didn't do much for this project, it's going to show very quickly. Note that work includes research and reading books, trying different variations, coding, etc. If you did a lot of research, bring the books and show us the web sites, show us the trial versions, etc. Careful: this last project is only worth 5%, so we don't expect miracles, but make it clear you've put some time into the project. (2) Documentation: How well can we read your code? Can we understand what's going on? 20% By this point, you should be using comments and doc strings to document your code well. If we look at your code and have no idea what's going on, that's not good. (3) Did you get something accomplished? 25% Are you actually able to demo something? Make sure you show that your project can "do" something. (4) Coolness: 5% Show that Python made this project easier, show us how cool it is to use Python to solve this problem.