Training activity information

Details

Analyse an algorithm in use in the department for time and/or memory complexity

Type

Developmental training activity (DTA)

Evidence requirements

Evidence the activity has been undertaken by the trainee​.

Reflection on the activity at one or more time points after the event including learning from the activity and/or areas of the trainees practice for development.

An action plan to implement learning and/or to address skills or knowledge gaps identified.

Considerations

  • Algorithm time complexity e.g. Big-O notations and profiling techniques
  • Memory requirements
  • Trade-off between time and precision
  • Forms of optimisation
  • Limitations and benefits

Reflective practice guidance

The guidance below is provided to support reflection at different time points, providing you with questions to aid you to reflect for this training activity. They are provided for guidance and should not be considered as a mandatory checklist. Trainees should not be expected to provide answers to each of the guidance questions listed.

Before action

  • Which specific algorithm used in the department will you be analysing? What are you aiming to determine about its efficiency in terms of time complexity (e.g., using Big-O notation) and/or memory requirements?
  • How do you approach the analysis of an algorithm’s time and memory complexity? What are the key steps and considerations involved? What factors can influence an algorithm’s performance in terms of time and memory usage?
  • Have you identified the specific algorithm you will be analysing, and do you understand its steps and logic? Have you researched or reviewed concepts related to algorithm analysis, such as Big-O notation? Do you have access to the code or a detailed description of the algorithm?

In action

  • Pay attention to your actions. How are you approaching the analysis of the algorithm? What methods are you using to determine its time and/or memory complexity? Why have you chosen this approach?
  • What decisions are you making about the key operations to count or the data structures to consider for memory usage?
  • What aspects of algorithm analysis feel intuitive, and what requires more conscious effort, such as identifying the dominant terms or understanding the theoretical basis of complexity analysis?
  • How effectively are your actions leading to a determination of the algorithm’s time and/or memory complexity?
  • What challenges are you facing in understanding the algorithm’s implementation or applying complexity analysis techniques?
  • What can you learn from this process as it unfolds about analysing the efficiency of algorithms?
  • How does this activity connect to your understanding of data structures and algorithms?
  • Are there alternative methods you could use to analyse the algorithm’s complexity?
  • What support or guidance might you need in this moment if you are struggling with the analysis?
  • Are you considering different input sizes and their impact on performance?

On action

  • Describe the algorithm you analysed and summarise your findings regarding its time and/or memory complexity.
  • What did you learn about analysing the efficiency of algorithms? Were there any unexpected complexities or findings? How is understanding algorithm complexity relevant to software development in a healthcare setting? How did your understanding of the algorithm’s function influence your analysis of its complexity?
  • What aspects of algorithm analysis do you need to develop further? How will you apply this learning in future software development tasks? What specific actions will you take to enhance your skills in this area, and are there any resources you require?

Beyond action

  • Have you analysed other algorithms for their efficiency since this DTA? Did you encounter algorithms with different complexity characteristics? Have you discussed algorithm analysis techniques with peers?
  • How has this activity improved your understanding of the performance implications of different algorithmic choices in software development? How might this understanding be relevant in discussions about software performance in case-based discussions?
  • What transferable skills, such as analytical skills and problem-solving, did you develop? What clear actions can you take to deepen your understanding of algorithm design and complexity analysis, perhaps by studying Big-O notation in more detail?

Relevant learning outcomes

# Outcome
# 6 Outcome

Apply good software design and programming practice.

# 7 Outcome

Review and appraise code developed by others.

# 8 Outcome

Verify, validate and document software.