Unit 1

Collaborative Discussion 1: Factors which Influence Reusability

Task: Refer to the article by Padhy et al. (2018), specifically Table 1, where the authors present a list of factors which they consider influence the reusability of a piece of object-oriented software.

In this collaborative discussion, you are required to prioritise this list, presenting your argument for the priorities assigned.

Unit 1

Pratical Activity - Classes and Objects

Take a look at chapter 15 of 'Think Python', from page 147. Also, take a look at 'point.py' from GitHub. Work through the guidance and experiment with the code in PyCharm.

Unit 2

Collaborative Discussion

Task: Continue the discussion in unit 1. Based on what we have covered in the first two units, you should respond to your at least 2 of your peers’ contributions from Unit 1.

Unit 2

Blog Post

Team Discussion: What is a Secure Programming Language?

Task: You should read Chapter 2,6,7,8 of the course text (Pillai, 2017) and Cifuentes & Bierman (2019) and then answer the questions below, adding them as evidence to your e-portfolio.

  • What factors determine whether a programming language is secure or not?
  • Could Python be classed as a secure language? Justify your answer.
  • Python would be a better language to create operating systems than C. Discuss.

Draft design document and feedback

A draft of my team's design document for a school Learning Management System application, complete with tutor feedback notes.

Programming language concepts: Recursion

One of the classic programming problems that is often solved by recursion is the towers of Hanoi problem. A good explanation and walkthrough are provided by Cormen & Balkcom (n.d.) - the link is in the reading list. (the code they used for their visual example is provided on their website as well).

Read the explanation, study the code and then create your own version using Python. Create a version that asks for the number of disks and then executes the moves, and then finally displays the number of moves executed.

  • What is the (theoretical) maximum number of disks that your program can move without generating an error?
  • What limits the number of iterations? What is the implication for application and system security?
  • li

Programming language concepts: Regex

Create a python program that implements a regex that complies with the rules for UK postcodes – test it against the examples provided.

Exploring a simple Python shell

Review the blogs at Praka (2018) and Szabo (n.d.) and then create a CLI/ shell that implements the following:

  • When you enter the command LIST it lists the contents of the current directory.
  • The ADD command will add the following two numbers together and provide the result.
  • The HELP command provides a list of commands available.
  • The EXIT command exits the shell.

Collaborative Discussion 2: Cryptography case study - TrueCrypt

Case Study: Read the TrueCrypt cryptanalysis by Junestam & Guigo (2014) (link is in the reading list) and then answer the following questions:

  • he (anonymous) TrueCrypt authors have said “Using TrueCrypt is not secure as it may contain unfixed security issues” (TrueCrypt, 2014). Does the cryptanalysis provided above prove or disprove this assumption?
  • Would you be prepared to recommend TrueCrypt to a friend as a secure storage environment? What caveats (if any) would you add?
  • Present an ontology design which captures the weaknesses of TrueCrypt, and organise them according to their severity.

Collaborative Discussion 2: Replying to peers

Review the comments posted by your colleagues from the previous session. Respond to two of your colleagues’ recommendations, pointing out any concerns you would have in using TrueCrypt.

Collaborative Discussion 2: Summary post

Provide a summary of the discussion based on your initial post and the feedback from your peers. This is your 'Summary' post. Agree or otherwise, with reasons, with the contributions and reviews made by other students on the topic under discussion, enhancing your original post.

Cryptography Programming Exercise

Read the Cryptography with Python blog at tutorialspoint.com (link is in the reading list). Select one of the methods described/ examples given and create a python program that can take a short piece of text and encrypt it.

Create a python program that can take a text file and output an encrypted version as a file in your folder on the system.

Faceted Data

Read Schmitz et al (2016) article about faceted data.

  • Do you think this is a good approach to protect systems from data leakage? What are the pros and cons?
  • Create a basic outline design of how you would create such a system in Python.

Development Individual Project: Coding Output and Evidence of Testing

A practical development of my program design document for a school Learning Management System.

Microservices and Microkernels: Part 1

Read Appendix A: the Tanenbaum-Torvalds debate in DiBona & Ockman (1999) then read Fritzsch et al (2019).

The forum has a message that says: “Torvalds has been proven wrong and it only took nearly thirty years. Microservices and microkernels are the future."

  • On the forum post a message either agreeing or disagreeing with the above and give a justification (ideally with an academic reference) supporting your view.

Microservices and Microkernels Debate: Part 2

Read Biggs et al (2018) and Bucchiarone et al (2018) as examples of modern views and approaches to the Monolithic vs. Microservices/ Microkernel debate.

Post your team’s stance to the forum along with justifications.

My evaluation of the final project (Unit 11) vs. the design proposal (Unit 6)

A reflective piece, comparing the final project with the original design proposal.