CS 1.2: How Data Structures Work
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.
Schedule
Course Dates: Tuesday, April 2 – Thursday, May 16, 2019 (7 weeks)
Class Times: Tuesday and Thursday at 3:30–5:20pm (14 class sessions)
Class | Date | Topics |
---|---|---|
1 | Tuesday, April 2 | Strings & Random Numbers |
2 | Thursday, April 4 | Histogram Data Structures |
3 | Tuesday, April 9 | Probability & Sampling |
4 | Thursday, April 11 | Flask Web App Development |
5 | Tuesday, April 16 | Application Architecture |
6 | Thursday, April 18 | Generating Sentences |
7 | Tuesday, April 23 | Arrays & Linked Lists |
8 | Thursday, April 25 | Hash Tables |
9 | Tuesday, April 30 | Hash Tables Continued |
10 | Thursday, May 2 | Algorithm Analysis |
11 | Tuesday, May 7 | Higher Order Markov Chains |
12 | Thursday, May 9 | Regular Expressions |
13 | Tuesday, May 14 | Final Class |
14 | Thursday, May 16 | Written Assessment (Final Exam) |
Course Specifics
- Weeks to Completion: 7
- Total Seat Hours: 37.5 hours
- Total Out-of-Class Hours: 75 hours
- Total Hours: 112.5 hours
- Units: 3 units
- Delivery Method: Residential
- Class Sessions: 13 classes, 7 labs
Prerequisites
Students must pass the following course and demonstrate mastery of its competencies:
Learning Objectives
By the end of this course, students will be able to:
- Create Python programs that read and write text files and manipulate strings
- Build web apps with the Flask framework and deploy to the web
- Construct and sample probability distributions based on observed word frequencies
- Create Markov language models and use them to generate new sentences
- Use unit tests that assert correct behavior of functions and classes
- Implement core data structures including singly linked lists and hash tables
- Analyze the complexity of iterative algorithms and data structures with visual loop counting
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 (final exam)
Attendance
Just like any job, attendance at Make School is required and a key component of your success. Attendance is being onsite from 9:30am to 5:30pm each day, attending all scheduled sessions including classes, huddles, coaching and school meetings, and working in the study labs when not in a scheduled session. Working onsite allows you to learn with your peers, have access to support from TAs, instructors and others, and is vital to your learning.
Attendance requirements for scheduled sessions are:
- No more than two unexcused absences ("no-call-no-shows") per term in any scheduled session.
- No more than four excused absences (communicated in advance) per term in any scheduled session.
Failure to meet these requirements will result in a Participation Improvement Plan (PIP). Failure to improve after the PIP is cause for not being allowed to continue at Make School.
Make School Policies
- Academic Honesty
- Accomodation Policy
- Attendance Policy
- Diversity Statement
- Grading System
- Program Learning Outcomes
- Title IX Disclaimer
Repository Setup
Please follow these instructions exactly to set up your fork of this repository.