Object Oriented Data Structures and Algorithms
Occurrence | Teaching period |
---|---|
A | Semester 2 2024-25 |
Students begin to program key data structures such as stacks, queues, trees and graphs. They are introduced to the idea of complexity of an algorithm, and how to characterise time and space through formal notations and proof techniques. Students are taught using an object oriented language like Java, and learn the basics of test driven development for testing their code and demonstrating its successful running. Students are also introduced to several algorithm design paradigms such as greedy algorithms.
S201 |
Implement an object oriented design. This includes organising program code into modules using methods following the software engineering principles of modularity and abstraction, and assembling data and methods into classes at an introductory level following the software engineering principles of encapsulation and data hiding. Integrate standard library code with their own programs using appropriate software tools. |
S202 |
Write and test code that conforms to specific interfaces. Identify and correct bugs which prevent the program from functioning as intended. |
S203 |
Organise and document program code following the principles of software engineering. Generate documentation, manually and programmatically, to explain the design and implementation of their own code, or example code which is supplied to them. |
S204 |
Analyse problems in order to confidently design algorithms to solve simple problems,and be able to explain how algorithms and Processing programs work. Develop small programs that implement basic algorithmic designs. Argue the correctness of algorithms using inductive proofs and invariants. |
S205 |
Analyse worst-case running times of algorithms using asymptotic analysis and apply the knowledge to sorting and searching algorithms, categorising efficiency in time and memory use. |
S206 |
Compare between different abstract data structures from linked lists to graphs in order to be able to choose an appropriate data structure for a design situation. This includes the major search, sort, and graph algorithms and their analyses. |
S207 |
.Apply algorithmic design paradigms such as greedy and dynamic programming paradigms. Present an argumentation for the choice of a paradigm for a given problem. Describe what an approximation algorithm is, the benefit of using approximation algorithms, and analyse the approximation factor for such an algorithm. |
Task | % of module mark |
---|---|
Online Exam -less than 24hrs (Centrally scheduled) | 50 |
Online Exam -less than 24hrs (Centrally scheduled) | 50 |
None
Task | % of module mark |
---|---|
Online Exam -less than 24hrs (Centrally scheduled) | 50 |
Online Exam -less than 24hrs (Centrally scheduled) | 50 |
Feedback is provided through work in practical sessions, formative assessments, and after the final assessment as per normal University guidelines.
Steven S. Skiena - The algorithm design manual - 2nd ed., (2010), Springer
Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser - Data Structures and Algorithms in Java (2014), Wiley Etextbooks
Mitsunori Ogihara - Fundamentals of Java programming (2018), Springer