Data Structures and Algorithms¶
Estimated time to read: 12 minutes
Students compare and contrast a variety of data structures. Students compare algorithms for tasks such as searching and sorting, while articulating efficiency in terms of time complexity. Students implement data structures and algorithms to support solution designs. Course Catalog
Requirements¶
Textbook¶
- Grokking Algorithms, Aditya Bhargava, Manning Publications, 2016. ISBN 978-1617292231
Student-centered Learning Outcomes¶
Upon completion of the Data Structures and Algorithms course in C++, students should be able to:
Objective Outcomes¶
- Analyze and contrast diverse data structures
- Evaluate algorithmic efficiency using time complexity analysis
- Implement, create and apply data structures and algorithms
- Critically assess sorting algorithms
- Analyze and contrast search algorithms
Assessment Outcomes¶
- Demonstrate the ability to evaluate and differentiate between various data structures, including arrays, linked lists, stacks, queues, trees, and graphs, based on their characteristics and use cases.
- Evaluate algorithms by analyzing their time complexity, enabling the comparison of different algorithms and making informed decisions about their suitability for specific problem-solving scenarios.
- Develop and implement solutions using appropriate data structures and algorithms to address real-world problems, demonstrating proficiency in translating solution designs into C++ code.
- Investigate and compare the merits and drawbacks of brute-force and divide-and-conquer sorting algorithms, including quicksort, mergesort, and insertion sort, in order to make informed choices when selecting sorting techniques for specific scenarios.
- Examine and compare the characteristics, advantages, and limitations of sequential, binary, depth-first, and breadth-first search algorithms, demonstrating the ability to choose the most suitable search strategy based on problem requirements.
Schedule for Fall 2024¶
Warning
This is a work in progress, and the schedule is subject to change. Every change will be communicated in class. Use this github repo as the source of truth for the schedule and materials. The materials provided in canvas are just a copy for archiving purposes and might be outdated.
College dates for the Spring 2024 semester:
Event | Date |
---|---|
Classes Begin | Aug. 26 |
Add/Drop | Aug. 26 - 30 |
No Classes - College remains open | Sept. 20 |
Indigenous Peoples Day Holiday Observance | Oct. 14 |
Registration for Spring Classes | Oct. 28 - Nov. 8 |
Last Day to Withdraw | Nov. 8 |
Thanksgiving Break | Nov. 25 - Nov. 29 |
Last Day of Classes | Dec. 6 |
Finals | Dec. 9 - Dec. 13 |
Winter Break | Dec. 16 - Jan. 10 |
-
Introduction¶
- Week 1. 2024/08/26
- Topic: Introduction to Data Structures and Algorithms
- Activities:
- Introduction
- Read all materials shared on Canvas;
- Do all assignments on Canvas;
-
Algorithm Analysis¶
- Week 2. 2024/00/02
- Topic: Algorithm Analysis
-
Dynamic Data¶
- Week 3. 2024/09/09
- Topic: Array, Linked Lists, Dynamic Arrays
-
Sorting¶
- Week 4. Date: 2024/09/16
- Topic: Bubble Sort, Selection Sort and Insertion Sort
-
Divide & Conquer¶
- Week 5. 2024/09/23
- Topic: Merge Sort and Quick Sort
-
Hashtables¶
- Week 6. 2024/09/30
- Topic: Hashtables
-
Midterms¶
- Week 7. 2024/10/07
- Topic: Midterms
-
Stacks & Queues¶
- Week 8. 2024/10/14
- Topic: Stacks and Queues
-
Graphs¶
- Week 9. 2024/10/21
- Topic: Graphs
-
Dijkstra¶
- Week 10. 2024/10/28
- Topic: Dijkstra
-
Prim & Jarnik¶
- Week 11. 2024/11/04
- Topic: Prim's and Jarnik's Algorithm
-
BST¶
- Week 12. 2024/11/11
- Topic: Binary Search Trees
-
Heap and Priority queue¶
- Week 13. 2024/11/18
- Topic: Heap and Priority Queues
-
Break¶
- Week 14. 2024/11/25
- Topic: BREAK. No classes this week.
-
Project Presentation¶
- Week 15. 2024/12/02
- Topic: Work sessions for final project and presentations
-
Finals¶
- Week 16. 2024/12/09
- Topic: Finals Week
Schedule for Spring 2024¶
Warning
This is a work in progress, and the schedule is subject to change. Every change will be communicated in class. Use this github repo as the source of truth for the materials and Canvas for the assignment deadlines.
College dates for the Spring 2024 semester:
Date | Event |
---|---|
Jan 16 | Classes Begin |
Jan 16 - 22 | Add/Drop |
Feb 26 - March 1 | Midterms |
March 11 - March 15 | Spring Break |
March 25 - April 5 | Registration for Fall Classes |
April 5 | Last Day to Withdraw |
April 8 - 19 | Idea Evaluation |
April 12 | No Classes - College remains open |
April 26 | Last Day of Classes |
April 29 - May 3 | Finals |
May 11 | Commencement |
-
Introduction¶
- Week 1. 2024/01/15
- Topic: Introduction to Data Structures and Algorithms
- Activities:
- Introduction
- Read all materials shared on Canvas;
- Do all assignments on Canvas;
-
Algorithm Analysis¶
- Week 2. 2024/01/22
- Topic: Algorithm Analysis
-
Dynamic Data¶
- Week 3. 2024/01/29
- Topic: Array, Linked Lists, Dynamic Arrays
-
Sorting¶
- Week 4. Date: 2024/02/05
- Topic: Bubble Sort, Selection Sort and Insertion Sort
-
Divide & Conquer¶
- Week 5. 2024/02/12
- Topic: Merge Sort and Quick Sort
-
Hashtables¶
- Week 6. 2024/02/19
- Topic: Hashtables
-
Midterms¶
- Week 7. Date: 2024/02/26
- Topic: Midterms
-
Stacks & Queues¶
- Week 8. 2024/03/04
- Topic: Stacks and Queues
-
Break¶
- Week 09. 2024/03/11
- Topic: Spring BREAK. No classes this week.
-
Graphs¶
- Week 10. 2024/03/18
- Topic: Graphs
-
Dijkstra¶
- Week 11. 2024/03/25
- Topic: Dijkstra
-
Prim & Jarnik¶
- Week 12. 2024/04/01
- Topic: Prim's and Jarnik's Algorithm
-
BST¶
- Week 13. 2024/04/01
- Topic: Binary Search Trees
-
Heap and Priority queue¶
- Week 14. 2024/04/08
- Topic: Heap and Priority Queues
-
Project Presentation¶
- Week 15. 2024/04/15
- Topic: Work sessions for final project
-
Finals¶
- Week 16. 2024/04/22
- Topic: Finals Week