DATA 690 Special Topics: Data Structures and Algorithms in Python

Course Description: This course aims to provide an introduction of data structures and algorithm in Python. Students will also learn basic Python data science tools including NumPy, Pandas and Matplotlib. Data structure topics covered are arrays, strings, linked lists, stacks, queues, trees and graphs; Topics in algorithms include sorting and searching, divide-and-conquer and greedy strategies, dynamic programming, graph and compression algorithms using Python. The second half of the course will focus on three fundamental data science tools in Python – NumPy, Pandas and Matplotlib. The course will provide a broad introduction of Python programming and exposure to the data science tools. No prior programming experience is required.

Learning Outcomes: At the end of this course, students will

  • Have introductory knowledge of Python programming (data types, functions, modules, object-oriented programming)
  • Have familiarity of Python data science tools and libraries (Jupyter notebook, NumPy, Pandas, Matplotlib)
  • Have knowledge of the most common Python abstractions for data collections (e.g., stacks, queues, lists, trees, maps).
  • Understand algorithmic strategies for producing efficient realizations of common data structures.
  • Be able to apply data structures and algorithms to solve complex problems.

References

  • J. V. Guttag, Introduction to Computation and Programming Using Python, MIT, 2016
  • J. VanderPlas, Python Data Science Handbook, O’Reilly, 2017 (Online: https://jakevdp.github.io/PythonDataScienceHandbook/index.html)

Subjects Covered

  • Introduction to Python and Jupyter Notebooks
  • Python Functions
  • Python Modules and Structured Types
  • Python Testing and Exception Handling
  • Python Object-Oriented Programming
  • Algorithmic Complexity
  • Algorithms and Data Structures
  • Graph Optimization and Dynamic Programming
  • NumPy
  • Pandas
  • Matplotlib
  • Final project