Git Product home page Git Product logo

practical-3's Introduction

title author
Managing a Team Project
Jordan Barnes

(Team) Case Study 3

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.

Problem Specifications

Specification 1

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.

Objectives

  • 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.

Learning Outcomes

  • 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.

Concepts to consider

  • File IO
  • Collections
  • String Manipulation
  • Sorting methods

Libraries to investigate

Specification 2

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.

Objectives

  • 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.

Learning Outcomes

  • 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.

Concepts to consider

  • Image IO
  • Collections
  • Sorting and traversal of collections
  • Conditionals

Libraries to investigate

Specification 3

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.

Objectives

  • 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.

Learning Outcomes

  • 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.

Concepts to consider

  • String manipulation
  • File IO
  • Templating of HTML files
  • Passing of arguments

Libraries to investigate

Specification 4

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.

Objectives

  • Investigate Python libraries to focus your solution around.
  • Plan your solution before development.
  • Develop your program solution.
  • Test your program.

Learning Outcomes

  • 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.

Concepts to consider

  • Everything in CSC1031, CSC1032, CSC1033, CSC1034

Libraries to investigate

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.

Assignment 3

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.

Deliverables

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.

practical-3's People

Contributors

leetaylorlondon avatar seblawrence avatar jordanbarnes260 avatar astrxi9 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.