CS201
Download as PDF
Data Structures and Algorithms
Course (UG/PG)
Undergraduate
Offering Unit/Department
Course 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.
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.
Course 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
Discipline-Specific Competencies
Applications Development, Formal Proof Construction, Algorithm Analysis, Computational Modelling, Data Engineering
SMU Graduate Learning Outcomes
Disciplinary Knowledge, Critical thinking & problem solving, Self-directed learning
Grading Basis
GRD - Graded
Course Units
1