STEM Program

Algorithms, Data Structures and Python

Faculty Advisor: Professor and Director of Undergraduate Studies, Mathematics, Georgia Institute of Technology

Research Practicum Introduction

This program is about algorithms, data structures and the programming language Python.

Data structures refers to how data is represented. Data structures go hand in hand with algorithms. Different algorithms may require different data structures.

Algorithms are sets of instructions to execute tasks, from simple tasks like sorting alphabetically a set of words, to complex ones such as the reconstruction of genomes from biochemical experiments. When an algorithm is efficient, it can potentially reduce the costs of complex tasks from billions to hundreds of dollars.

Students will learn contents such as basic and greedy algorithms, dynamic programming, probability, arrays, trees and more. At the end of the program, students will understand how many real-world programs work, and will also be able to write their own programs in Python.
Students will also learn general and subject-specific research and academic writing methods used in universities and scholarly publications. Students will focus on individual topics and generate their own work products upon completion of the program.

 Possible Topics For Final Project: 

  1. Given a binary tree, find the size of the Maximum Independent Set (MIS) in it.

  2. Given a chessboard, print all sequences of moves of a knight on a chessboard such that the knight visits every square only once.

  3. Given a set of positive integers, check if it can be divided into two subsets with equal sum.

  4. Write an efficient algorithm to find the longest common prefix (LCP) between a given set of strings.

  5. Or other topics in this subject area that you are interested in, and that your professor approves after discussing it with you!

Advanced Project Topics (optional)

These projects go beyond the topics described above in the program content. Students interested in these projects will be provided with additional materials (videos, notes and codes):

  • Learn about number theory and cryptography. Learn and implement in Python the RSA algorithm. 

  • Learn about bioinformatics. Learn and implement in Python the algorithm used to reconstruct genomes. 

  • Learn about geometric group theory (an area of pure mathematics). Design an algorithm to compute the free generators of a subgroup of a free group. Implement the algorithm in Python.

Program Detail

  • Cohort Size: 3-5 students

  • Duration: 12 weeks

  • Workload: Around 4 hours per week (including class and homework time)

  • Target Students: 9-12th grade students interested in Mathematics, Computer Science, Machine Learning, and/or Interdisciplinary STEM studies.

  • Schedule: TBD (meetings will take place for around one hour per week, with a weekly meeting day and time to be determined a few weeks prior to the class start date)