UGA Bulletin Logo

Advanced Python and Data Structures

Analytical Thinking

Course Description

Course builds on foundational programming skills to explore efficient data handling for data science. Students will master core data structures, algorithm complexity and efficiency, and Python programming techniques through hands-on exercise and projects, emphasizing real-world problem-solving.


Athena Title

Advanced Python


Non-Traditional Format

This course will be taught 95% or more online.


Prerequisite

STAT 6381E


Semester Course Offered

Offered spring


Grading System

A - F (Traditional)


Student learning Outcomes

  • Students will demonstrate proficiency in advanced Python programming, including exception handling and advanced file-handling techniques.
  • Students will understand the importance and applications of core Python data structures (lists, tuples, dictionaries, and sets) in data science.
  • Students will implement and manipulate stacks, queues, and linked lists, and analyze their practical use cases.
  • Students will design and implement binary trees, binary search trees, and other specialized trees, including AVL trees and heaps.
  • Students will perform tree traversals (in-order, pre-order, post-order, level-order) and apply them to solve data problems.
  • Students will represent and analyze graphs using adjacency matrices and lists and implement graph algorithms like Depth-First Search (DFS) and Breadth-First Search (BFS).
  • Students will apply advanced techniques for design and analysis of algorithms.
  • Students will analyze algorithm complexity using Big O notation to evaluate time and space efficiency.
  • Students will implement and evaluate basic and advanced sorting and searching algorithms, understanding their complexities.
  • Students will use enhanced and advanced data structures to design efficient solutions for complex problems.
  • Students will complete a capstone project showcasing the integration of advanced Python techniques, data structures, and algorithms in real-world scenarios.

Topical Outline

  • Advanced Python Programming Concepts • Review of Python Basics: Quick overview of Python syntax, functions, and classes. • Exception Handling: Using “try”, “except”, “finally”, and custom exceptions. • Advanced File Handling: Reading and writing complex files, working with file paths, binary data, and serialization with JSON and pickle.
  • Core Python Data Structures • Data Structures Overview: Importance and use cases of each structure in data science. • Array : Discuss the implementation, usage and limitation • Lists and Tuples: Usage, slicing, list comprehensions, and performance considerations. • Dictionaries and Sets: Hashing, lookups, applications, and best practices. • Programming Exercise: Implementing data structures, practice problems with dictionaries and sets.
  • Stacks, Queues, and Linked Lists • Stacks and Queues: Principles, use cases, implementation with lists and deque, common algorithms. • Linked Lists: Singly and doubly linked lists, operations, and applications. • Case Studies: Real-world examples of usage of linked lists, stack and queue. • Programming Exercise: Implement stack and queue operations, practice with linked lists.
  • Trees and Tree Algorithms • Binary Trees and Binary Search Trees (BST): Basics, operations, and balancing. • Traversals: In-order, pre-order, post-order, and level-order traversals. • Other Trees: Introduction to AVL trees, Red-black trees, heaps, and tree structures. • Programming Exercise: Implement BST operations and traversals.
  • Graphs and Graph Algorithms • Graph Basics: Definitions, graph properties (directed, undirected, weighted, loop). • Representation of Graphs: Adjacency matrix vs. adjacency list. • Graph Traversals: Depth-First Search (DFS) and Breadth-First Search (BFS). • Applications in Data Science: Graphs in network analysis and recommendation systems. • Programming Exercise: Implement graph representation and basic traversal algorithms.
  • Algorithm Complexity and Big O Notation • Introduction to Complexity Analysis: Time and space complexity. • Big O Notation: Common complexities (O(1), O(log n), O(n), O(n log n), O(n^2), etc.). • Case Studies: Real-world examples of algorithmic complexity. • Programming Exercise: Analyzing time complexity for different functions.
  • Sorting and Searching Algorithms • Basic Sorting Algorithms: Bubble sort, selection sort, insertion sort. • Efficient Sorting Algorithms: Merge sort, quicksort, and their complexity analysis. • Searching Algorithms: Linear and binary search, hashing for faster lookups. • Case Studies : Real-world examples of Relationship between Tree elements and sorting indexes • Programming Exercise: Implement sorting algorithms and analyze their performance.
  • Programming Project • Project Design and Implementation: Students work on a larger-scale project using Python data structures and algorithms. • Efficiency and Optimization: Focus on making code efficient with proper data structure choice and algorithm selection. • Peer Review and Code Presentation: Students review each other’s work and present their solutions.

Institutional Competencies Learning Outcomes

Analytical Thinking

The ability to reason, interpret, analyze, and solve problems from a wide array of authentic contexts.



Syllabus


Public CV