# Module Support and Assessment - Assessed Via: - Written Exam (100%) # Specific Objective - Data Structures - How data organised. - Algorithms - Unambiguous sequence of events / steps to compute. # Why Data #Structures Are Useful - DSA demonstrates: - Problem-solving ability - Analytical Skills - Which algo, data type would be best to efficiently solve problems - Fundamentals of Software Dev - Remain constant no matter the technology or language - Programs solve problems, and process information - Information needs to be organised in certain ways, and must be correct and efficient. - We organise data to attain faster access to data, using both the correct data structure, and correct algorithm. - Examples of data types / structures on the module: - Arrays - Linked Lists - Stacks - Queues - Trees - Hash Tables - Graphs ## Examples - ![](Pasted%20image%2020240918092145.png) - ![](Pasted%20image%2020240918092203.png) - ![](Pasted%20image%2020240918092221.png) - N is linear, log2(n) is logarithmic. # Why #Algorithms Are Useful - Important for all branches of CS - Plays a role in modern innovation - ex. Search Engines (Page Rank) - Give estimates for running time (using Big O notation) - Help to decide hardware requirements # Module Objectives - Necessary to understand most important data structures used when designing / implementing software - Allows discussion and comparison of data structures and assessment of usage circumstances. - Concept of algorithms is fundamental - Variety of possible approaches can lead to competing algorithms - Each algorithm is likely to have different resource requirements, time usage or use case. - Analyse requirements and provide understanding for usage of choices. # Module Aims - Introduce important data structures - Understand abstract data types - Show variety of implementations of ADTs - Introduce detailed appreciation of data structures, including: - Linear Lists - Stacks - Queues - Trees - Graphs - Appreciate relationship between ADTs and Data Structures - Develop Skills required to express methods for solving problems precisely - Analyse complexity of implementation - Develop deeper understanding of recursion ## End Goals - Describe and contrast algorithmic strategy - Demonstrate understanding of recursion - Utilise standard notation for computational complexity - Demonstrate precise and formal understanding of resource requirements of algorithms, and their inner workings. # Mathematical Requirements - Basic Algebra - Indices - Log - Graphs - Limits and Asymptotic Notations (Big O) - Summations of series, including arithmetic and geometric series - Recurrence relations