Skip to content

Data Structures and Algorithms

Estimated time to read: 8 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

Bloom's Taxonomy

Bloom's Taxonomy on 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

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


  • 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