Skip to content

Instantly share code, notes, and snippets.

@TonyJenkins
Created February 19, 2025 11:16
Show Gist options
  • Save TonyJenkins/48e369ad3ca1eb4ef86a98cf5bd68627 to your computer and use it in GitHub Desktop.
Save TonyJenkins/48e369ad3ca1eb4ef86a98cf5bd68627 to your computer and use it in GitHub Desktop.
Project Spec for FoCP Semester 2 2025

Programming Project

You should complete a pair of programs, or a collection of programs, according to the spec below.

Your programs should follow all the conventions of good Python code (PEP-8). You should include with your work a README.md file that clearly explains what work you have done.

You may not use any packages or libraries that are not part of the Python standard library. This means that, for example, you may not use packages from the Python Package Index (PyPi).

Specification

Your first program should take a text file, and encrypt it in some way.

Your second program should take the encrypted file, and reproduce the original file.

The minimum requirement for a pass grade is that the file is encrypted so that the content is not obvious, and then decrypted to a file that is identical to the original. For the minimum a simple substitution code is sufficient.

For higher marks, you might:

  • Use sophisiticated encryption.
  • Require the use of a key, perhaps in a separate file.
  • Provide a menu system to allow the user to select a file from the current folder.
  • Structure your programs as a command-line utility.
  • Have the program report some interesting statistics about the file.
  • Provide other, related, programs, such as one that can crack simple substitution cyphers.

You are free (and encouraged) to add any other features you might find interesting to code.

Marking

The main focus of the marking will be on whether the code works as specified. Remember to provide a README to direct the marker. Some marks will be allocated to good programming style, use of functions, and so on.

You are welcome (and encouraged) to ask for feedback on work in progress in the later weeks of the module.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment