This assignment was due in Moodle on Sunday, March 20th at 11:59PM. Click on the following file names to view the sample solution: and FacePalmData.txt.

For Assignment 3 you will create a prototype for a new social networking website named FacePalm. You must create the prototype as a demo for potential investors; it must work correctly to convince them invest. The prototype must demonstrate some of the key features that will attract people to the site and collect valuable personal information.


The prototype must implement the following features:

All of the user actions described must be available to them via menus. The prototype must load user account information from a text file on startup and save it on shutdown. You must determine how user data will be stored in the file and in the program.

The prototype may not crash or experience any errors as that will not impress the investors. Any possible exceptions must be caught and an appropriate error message must be displayed. All errors must be handled gracefully, including user input errors.

To illustrate how FacePalm must work, refer to the sample output here.

Excluded Strategies

You prototype may not:

Any program which uses any of these strategies will receive an automatic deduction of 8/15.

Submission in Moodle

You may upload two files: one named "FacePalm<SECTION>.py" and one which contains the user data. Please substitute your tutorial section letter for <SECTION> in the file name (e.g.,

Marking Scheme

Category Elements Marks
Requirements User accounts
Loading and saving
User menus
Logging in and logging out
Viewing profiles
Viewing messages
Leaving messages
Style Appropriate comments
Good function and variable names
Good functional decomposition
Values passed into functions as parameters
Values returned from functions
"Readable" code
Subtotal 15
Deductions for excluded strategies or errors -?
Total 15