CS222 Data Structures and Algorithms
This course is about data structures; that is the methods of organizing large amounts of data. It is also about algorithm analysis; that is, the estimation of the running time of algorithms. Specifically, this course will cover fundamental abstract data types and their implementations as data structures, such as lists and trees, as well as asymptotic analyses of algorithms involving these data structures. Students will also learn about searching (dictionaries, priority queues, and hashing); sorting (internal and external); graphs and algorithms on graphs (shortest path, minimum spanning trees), and encryption.
To be able to analyse and compute the running time of algorithms, expressing these runtimes using asymptotic notation (Big-O) To understand and be able to explain, implement and apply fundamental data structures including lists, trees, and hash tables. To understand and be able to explain, implement and apply, fundamental algorithms for searching and sorting. To apply fundamental algorithms and data structures to problem-solving and, by learning good programming and algorithm analysis skills simultaneously, to be able to develop powerful and efficient software programs. Ashesi Learning Goals: Critical Thinking and Quantitative Reasoning; Curious and Skilled; Technology Competence; Leadership and Teamwork
Introduction, review of arrays; Runtime analysis & asymptotic notation (Big-O); Array-based lists, linked lists; Recursion; Sorting: insertion sort, selection sort, heap sort, merge sort ; Stacks & queues; Trees; Binary search trees and balanced binary search trees; Hash tables; Priority queues & binary heaps; Introduction to graphs and graph algorithms; Introduction to algorithm design techniques
Most of the weekly labs involve an exercise to work on and submit soon after the lab session. Some lab sessions involve reviewing concepts studied in class or working on open-ended projects with the assistance of the instructor.
- Prerequisites: Programming 2 / CS212 Computer Programming or CS112 Computer Programming for Engineering, Concurrent enrolment in CS221 Discrete Structures and Theory recommended but not required