title | author |
---|---|
Managing a Team Project |
Jordan Barnes |
Your team has been tasked with producing a collaborative repository that provides solutions to four small specification problems.
As a team, you will need to decide which members work on each of the problem specifications. It is recommended that at least one member works on each problem, but this decision is down to the team. The project specifications will have you exploring a variety of Python libraries.
There will also be a need to manage the project effectively using git. This has been demonstrated in your lecture material. It is strongly advised that you follow version control and team management principles to effectively manage the evolution of the solutions.
Each problem specification will centre around a popular Python Library. I have provided a simple run through some of the main features for each library, including how to install them. However, it is up to you to investigate each library to meet the objectives of the problem specifications.
In this challenge you are going to be exploring frequency analysis of large text files and producing a visual way of presenting your analysis results. Write a program that takes a large text file and perform a frequency analysis of the characters and words in that file. You should then present your findings visually using the python 2D graph plotting library, Matplotlib.
- Read in a .txt file and parse the content.
- Perform a frequency analysis of the characters and words in the text file.
- Output the frequency of the most occurring words in the text file to a CSV file.
- Present your frequency analysis of the characters visually using the Matplotlib plotting library.
- Produce a Markdown file in your repository directory that combines your findings in one place.
- To be able to investigate a libraries' documentation page to produce code that satisfies an objective.
- To be able to handle the reading and writing of files.
- To investigate suitable methods of analysing large quantities of text.
- To learn how to present your findings visually, so that someone else can understand your findings.
- File IO
- Collections
- String Manipulation
- Sorting methods
In this challenge, you are going to be exploring image manipulation using the Pillow Python library. Write a program that modifies a selection of images of various sizes and file formats and converts them to JPEG thumbnails. Your program should allow the user to apply a selection of modifications to an image and then store the modified image. To be able to modify images in this way, you will have to make use of the Pillow Python library. This library is a fork of the Python Imaging Library (PIL), so much of the existing functionality is still there, however, the library has been expanded further.
After you completed the core features of the program, expand your program by experimenting with different features of the Pillow library and showing your results. For example, you could manipulate the specific RGB values of each pixel of an image. If applicable, make sure to discuss what features you have experimented with in your individual report.
- Read in image files and store them in an appropriate collection ready for modification.
- Convert the images to thumbnails and name the new files appropriately.
- Apply various filters to the images using the ImageFilter module.
- Modify the RGB values of images to produce a new filter.
- Experiment with the Pillow library and its modules and save what you have produced.
- To be able to investigate a library's documentation page to produce code that satisfies an objective.
- To be able to handle the reading and writing of files.
- To be able to explore the various applications of a library's modules to produce different results.
- To use your knowledge of traversing collections to explore the different properties of an image.
- To use your understanding of a library and produce something creative.
- Image IO
- Collections
- Sorting and traversal of collections
- Conditionals
In this challenge you are going to build a web application using a Python-based web framework. Flask is a common web framework that is easy to setup and allows extensibility.
You are going to build a simple web application that presents the code written in the previous challenge specifications. The purpose of the webpages is to present the code neatly with some brief documentation explaining the purpose of the code. What you do here is entirely experimental and open for creativity, therefore you can make use of any external libraries for the presentation of your code. However, be sure not to 'feature creep'.
This challenge is about your ability to investigate a Python web framework library and its applications rather than your HTML, CSS, and JavaScript abilities. I suggest looking through my guide on creating a simple web application that uses HTML templates.
Do not host your web application on a public server.
- Install the Python web-framework Flask.
- Produce a simple home page that links/routes to other pages that display your code.
- Produce a web page for each of the other specifications and present your code on them.
- Produce a brief description explaining what the code does and how it meets the objective of the specification.
- To be able to investigate a library's documentation page to produce code that satisfies an objective.
- To understand the application of Python in web-based development and deployment.
- To understand how Python can be used to create fast and simple web applications.
- String manipulation
- File IO
- Templating of HTML files
- Passing of arguments
In this challenge it is up to you to choose a Python library that hasn't been mentioned before in the previous challenges and develop a software artefact around that library. The software artefact should make use of some of the skills you have learned so far in CSC1031, CSC1032, CSC1033, and CSC1034 so that it clearly displays your programming and theoretical abilities.
This challenge has complete creative freedom. Meaning, you can build anything you like as long as it doesn't make use of an aforementioned library in the previous challenges.
- Investigate Python libraries to focus your solution around.
- Plan your solution before development.
- Develop your program solution.
- Test your program.
- To be able to investigate a library's documentation page to produce code that satisfies the objective.
- To be able to refine your investigation and avoid obfuscation.
- To be able to produce a program that isn't centred around a problem specification, allowing you to be creative with your solution.
- To be able to manage your time effectively by clearly planning the project before development.
- Everything in CSC1031, CSC1032, CSC1033, CSC1034
Here are some links to pages that rate the top used Python libraries; be aware that not all libraries might be suitable due to density and/or technical limitations.
- Links:
Each member of the team must submit a 1000-word reflective report outlining your contribution to the team project. The report should include the following:
- An overview of how the team was organised and managed (10%)
- A brief summary of your contribution(s) to the case study (e.g. the chosen specification(s) you have been working on) and some of your coding solution(s) (10%)
- Personal log of work undertaken (20%)
- Reflection on your contributions to the team and how it will affect your future team work (40%)
- References and form (20%)
You can add supporting material to relate to the report e.g. images, code snippets, appendices.
Your coursework must be submitted to the NESS system by the deadline specified. Note that NESS imposes deadlines rigorously, and even work that is a few seconds late (e.g. because of network delays caused by students all submitting at the last moment) will be flagged as late.
You should submit an individual report (that includes the GitLab URL for commit). Your report should be in Word (.docx or .doc) format or as a PDF.