This assignment is graded out of 100 marks and weighted to be worth 40% of the module. It is also used as a vehicle to facilitate a Software Architecture skills demo- to use agile processes, since this module also required some teamwork to be demonstrated.
The summary breakdown of marks is as follows:
Algorithm (20%)
Top level algorithm (flowchart) with a suitably detailed algorithm for each task.
Module level flowchart showing the logical flow of the module you have developed.
Development (40%) - accurate programming to complete the specified task including:
code runs without error
good use of variable and function names (semantic, lower/snake_case, length)
accurate prompts for user input
useful information output to users
use of math, relational and boolean operators
functions created as per guidelines here
correct use of conditionals including if/elif/else, try/except or assert, loops
use of a system defined function.
Testing (18%)
unit level tests
integration tests
Functional tests- record a run-through of the program
Documentation and QA (12.5%)
File headers
docstrings
PEP8 compliant
Evidence of good team participation (12.5%)
Evidence of each learner’s contribution.
Evidence of regular communication within the team (trello)
The following examples are from past projects. In the first example, the assignment was a spy program. This had a number of elements such as login, which used a dict where the key was the username and the value was a hashed password... Other parts included a number of encrypt and decrypt functions.
Each module was coded in the repl, and tested individually. Each learner had to devise a series of tests for their own module functions.
Helper functions were provided to aid consistency with the appearance, such as a title generator, menu generator and so on.
Below is shown the repl and the many files that were associates with the assignment. Note that each team member was responsible for for writing and testing and integrating their own module into the main game.
group repl for code assignment
This may comprise a mixture of code, test tables, screenshots and or video evidence. The most important element here is to show evidence of comprehensive testing. Using doctest or unittest may make this evidence clearer to see, and will almost certainly - if used in conjunction with test-tables- catch errors that can easily escape manual testing.
A video showing that you have tested with both "good" and "bad" input can show testing but may not demonstrate accuracy (for example), in the case where a (complex) calculation has to be performed.
This is described as implementing code solutions to industry standards. For our purposes, this will mean
All files maintain a consistent and appropriate header such as:
# author: mjones
# date: DD-MMM-YYYY
# project: example
# contents: description of module
OR use a Google format, i.e. a comment followed by a multiline str
# -*- coding: utf-8 -*-
'''
@author: mjones
@date: dd-mmm-yyyy
@project: example
@description: like it says on the tin
'''
In all cases, these are the FIRST lines of text in a python file!
All functions use a clear and consistent docstring format as shown here
All code complies with the PEP8 standard. In VS Code this is included in the plugin which uses pycodestyle(E302). Repl also includes some limited style checking, but will not flag some serious violations. You may find this online checker useful.
A style guide is about consistency. Consistency with this style guide is important. Consistency within a project is more important. Consistency within one module or function is most important.
Aside from being a requirement for all assignments, it is important to write code that is readable, as well as consistent.
For our programs, we will use the following schema where such elements are present in our code:
file header information including the elements shown above
imports of any other modules or functions from modules we will use in our program
declare and initialise global variables (avoid where possible) or CONSTANTS
functions
classes
main body of code- often this may simply be:
if __name__ == "__main__:
main()
Each module may be a ticket, with a team member assigned to that module. You should update your progress in coding/testing your module not more than two days- these updates are comments.
The team trello can also link to the team repl, and highlight problems or points for discussions