Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 

DSCI 512: Algorithms and Data Structures

How to choose and use appropriate algorithms and data structures to help solve data science problems. Key concepts such as algorithmic complexity and recursion.

Schedule

Note: lecture recording videos from the 2019 course offering are available here.

# Topic Optional reading/watching
1 Time complexity, big O, space complexity Introduction to Big O notation
2 Searching, sorting, hash tables Binary search video - watch until 31:00.
3 Recursive algorithms
4 Recursive data structures
5 Graphs, graph searches Graph traversals video; brilliant.org on Graph Theory, Traversals, and BSTs
6 Adjacency matrices, sparse matrices, generators, map/reduce StackOverflow post on generators
7 Discrete optimization Linear programming and discrete optimization with Python using PuLP
8 Dynamic programming, Speeding up Python code Dynamic programming

Lab Assignments

Lab topic
1 Computational complexity
2 Recursive algorithms & data structures
3 Graphs
4 Discrete optimization

Course Learning Objectives

By the end of the course, students are expected to be able to:

  1. Analyze the scalability and trade-offs of various basic algorithms and data structures using Big-O notation.
  2. Read and interpret recursive functions.
  3. Select appropriate data structures, such as graphs, given a data set.
  4. Map certain real-world problems to discrete optimization problems.
  5. Diagnose rate-limiting aspects of slow Python code and enumerate various options for speeding it up.

Online reference material

Books

About

No description or website provided.

Topics

Resources

Releases

No releases published

Packages

No packages published