ACS 1120: Intro to Data Structures

Course Description

A project based course that looks under the hood at data structures and algorithms to see how they work. In addition to implementing these structures in an application; students will build them from scratch, analyze their complexity, and benchmark their performance to gain an understanding of their tradeoffs and when to use them in practice. Students will write scripts, functions, and library modules to use text processing tools like regular expressions, construct and sample probability distributions to create a Markov language model and gain insight into how grammar works and natural language processing techniques.

Repository Setup

⚠️ Important: Please follow these instructions exactly to set up your clone of this course repository.

Learning Objectives

By the end of this course, students will be able to:

  1. Create Python programs that read and write text files and manipulate strings
  2. Build web apps with the Flask framework and deploy to the web
  3. Construct and sample probability distributions based on observed word frequencies
  4. Create Markov language models and use them to generate new sentences
  5. Use unit tests that assert correct behavior of functions and classes
  6. Implement core data structures including singly linked lists and hash tables
  7. Analyze the complexity of iterative algorithms and data structures with visual loop counting

Schedule

Course Dates: Wednesday, January 20 – Friday, March 11, 2022
Class Times: Monday, Wednesday, & Friday at 4:30-6:20pm PST

Day Lesson Topics
01 Strings & Random Numbers
02 Histogram Data Structures
03 Probability & Sampling
04 Flask Web App Development
05 Application Architecture
06 Generating Sentences
07 Arrays & Linked Lists
08 Algorithm Analysis
09 Hash Tables
10 Hash Table Algorithm Analysis
11 Higher Order Markov Chains
12 Regular Expressions
13 Time to Tweet
14 Launch Day!

Deliverable Schedule

Deliverable Date Started Date Due Submission Form
Project Check-In Wed, Jan 19 Sun, Feb 6 Submit Project Check-In
Linked List Challenges Mon, Feb 7 Sun, Feb 13 Submit Linked List
Hash Table Challenges Mon, Feb 14 Sun, Feb 20 Submit Hash Table
Final Project Mon, Feb 21 Fri, March 11 Submit Final Project

Project Tutorial

Students will complete the following guided project tutorial in this course:

Evaluation

To pass this course, students must meet the following requirements:

  • Actively participate in class and abide by the attendance policy
  • Make up all classwork from all absences
  • Complete the required project tutorial
  • Pass the project according to the associated [project rubric][]
  • Pass the summative assessment (total of all quiz scores)