Back to Modules
CS201

Data Structures and Algorithms

1 CreditsTerm 1

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

Understand the efficiency notations of functions, e.g., Big O, Omega, Theta Analyze the efficiency of an algorithm and derive its Big O notation Knows the operations of fundamental data structures, e.g., trees, graphs Implement a data structure Develop algorithms to solve computational problems using the data structures covered in the scope of the course

Graduate Learning Outcomes

Disciplinary Knowledge, Critical thinking & problem solving, Self-directed learning

Competencies

Applications Development, Formal Proof Construction, Algorithm Analysis, Computational Modelling, Data Engineering