Skip to main content
Ctrl+K

Hi there! What do you think of this course, so far? Please, give us feedback!

Logo image
Logo image

IDATA 2302 — Algorithms and Data Structures

About This Course

  • Welcome!
  • Course Overview
  • Practicalities
  • Examination
  • Additional Resources

Modules

  • Foundations
    • 1. Computations
    • 2. Computer
    • 3. Correctness
    • 4. Efficiency
    • 5. Algorithm Analysis
    • 6. The Big-O Notation
  • Sequences
    • 1. Abstract Data Types
    • 2. Using Arrays
    • 3. Using Dynamic Arrays
    • 4. Searching
    • 5. Simple Sorting
    • 6. Stacks, Queues, and Deques
  • Recursion
    • 1. Procedure Calls
    • 2. Recursion
    • 3. Linked Lists
    • 4. Quick Sort
    • 5. Merge Sort
    • 6. Sorting Without Comparing
  • Hashing
    • 1. What Is Hashing?
    • 2. Collisions
  • Trees
    • 1. Trees
    • 2. Binary Search Tree
    • 3. Binary Heaps
    • 4. Self-Balancing Trees
    • 5. B-Trees
    • 6. Prefix and Suffix Trees
  • Graphs
    • 1. Graph Theory
      • 1.7.1. Edge List Pattern in Ruby
      • 1.7.2. Adjacency List in JavaScript
      • 1.7.3. Adjacency Matrix in C
    • 2. Reachability & Shortest Paths
    • 3. Minimum Spanning Trees
  • Optimization
    • 1. Exhaustive Search
    • 2. Heuristic Search
    • 3. Dynamic Programming
  • Computational Complexity
    • 1. String Matching
    • 2. Regular Expressions
    • 3. Complexity Classes
  • Beyond RAM
    • 1. Parallel Computing
    • 2. Quantum Computing
    • 3. How to Design Algorithms?

Lab Sessions

  • Setup
  • Foundations
  • Sequences
  • Recursion
  • Trees
  • Graphs
  • Optimization

Recaps

  • Math Recap

Python Module Index

d | i | m | q | s
 
d
deque
 
i
iterator
 
m
map
 
q
queue
 
s
seq
stack

By NTNU

© Copyright 2021, NTNU.