Data Structures and Algorithms
Description
This course builds on students’ earlier programming experiences, moving beyond syntax and logic, to the question of how to build “better” programs focusing on organizing data and designing algorithms for efficiency. The materials as well as the assignments rely heavily on proficiency with Java programming language. Students will learn: • the concept of efficiency, why it is important for programs to be efficient and scalable, how to manage the trade-offs of computational time as well as resources such as memory, and how to compare the efficiency of various algorithms, • problem-solving through judicious organization of data, how abstract data types allow encapsulation and localization, as well as how their concrete implementations in the form of various data structures allow for efficient access and modification of data, • algorithmic strategies such as divide-and-conquer, iteration, recursion, randomization, etc., to achieve more effective problem solving and more efficient solutions. This course is different from Computational Thinking, as it goes into the theoretical underpinnings of efficiency, covers more data structures, and delves deeply into the implementations of those data structures.
Requisites
Prerequisites: CS102/IS442 - Pre-req
Co-requisites: None
Anti-requisites: CS201/IS115 - Mutually Exclusive
Attributes
Department: SCIS
Course Level: Undergraduate
Tracks: IS Major: Software Development Track
Areas: Advanced Business Technology Major Business Options Econ Major Rel/Econ Options Grad Req - Dig Tech/Data Ana (Intake 2024 onwards) IS Depth Electives IT Solution Development Core Information Systems Electives Social Sciences/PLE Major-related
Learning Outcomes
Graduate Learning Outcomes
Disciplinary Knowledge, Critical thinking & problem solving, Self-directed learning
Competencies
Applications Development, Formal Proof Construction, Algorithm Analysis, Computational Modelling, Data Engineering