Data structures and algorithms is arguably the most important course you’ll take in Computer Science. From getting internships and job offers to preparing for advanced courses, understanding data structures and algorithms is what differentiates programmers and coders from computer scientists and engineers.
What will I learn in this course?
Upon successful completion of the course, you should be able to:
- Implement code using pointers and dynamic memory allocation
- Implement solutions that involve recursive functions
- Implement sorting algorithms and understand their performance under different scenarios
- Implement and use basic algorithms, data structures, and containers
- Implement algorithmic solutions using the appropriate data structures and algorithms
- Compare different algorithms and data structures based on efficiency, using empirical and theoretical algorithm analysis techniques
What’re the non-negotiables?
Each time we meet for lab or lecture, you’ll be learning a new topic. We move incredibly fast so don’t fall behind. Of all the topics we’ll be covering, some of them will be review or preliminary knowledge required for understanding future topics. Taking that into account, the new topics we’ll be covering can be categorized into 20 umbrella topics (outlined below):
Intro to Analysis of Algos
Sorting Algos (Implementation & Analysis)
Dynamic Arrays
Linked Lists
Stacks
Queues
- Recursive Algorithms
- Analyzing Recursive Functions (w/ recurrences)
- Recursive Backtracking
Priority Queues
Heaps
- Heapsort
Binary Search
BSTs (Implementation & Analysis)
Balanced Trees
Sets & Maps
- Hashtables
- Chaining & Open-Addressing
- Intro to Graphs
BFS & DFS
Of these 20, theformatted
13 are non-negotiable which means that in order to pass the course, you must demonstrate at a minimum, a level of understanding about them.