Students develop and apply knowledge and skills in data abstraction, considering the structure of information through the definition and properties of abstract data types (ADTs). They select appropriate ADTs to model salient aspects of real-world problems, with a focus on collection-based data types and the graph ADT.
Students learn how to formalise processes as algorithms and to execute them automatically. They use the language of algorithms to describe general approaches to problem-solving, decompose problems, and explore a variety of problem-solving strategies and algorithm design patterns, including recursion and graph algorithms.
Students combine their knowledge of data modelling and algorithm design to solve real-world problems. They consider and justify combinations of algorithms and ADTs, measuring the fitness of their choices in terms of abstraction and solution quality.
Students investigate the efficiency of algorithms using mathematical techniques, including time and space complexity, Big-O notation, recurrence relations, and the Master Theorem. They study soft limits of computability and the classification of problems by complexity classes.
Students examine more advanced algorithm design patterns, including divide and conquer, dynamic programming, backtracking, and heuristics. They learn to select and compare algorithmic approaches, and apply heuristics to computationally hard problems.
Students examine the emergence of computer science, the philosophical and technical ideas behind artificial intelligence, the concept of undecidability, and ethical issues related to data-driven algorithms and AI.
Sign up for a StudyPulse account to access practice questions, personalized feedback, AI-powered explanations, and more.
Join StudyPulse to track your progress, get personalized recommendations, and access premium study materials