CS 1.3: Core Data Structures & Algorithms

Course Description

This course explores the foundations of computer science including discrete mathematics, abstract data types, data structures, and algorithm analysis and design. Students will compare and contrast iterative and recursive algorithms to analyze design and performance tradeoffs. Students will apply and test data structures like lists, stacks, queues, sets, maps, and trees in real-world problems such as phone call routing. Students will also write technical blog articles about these topics in order to deepen their understanding and gain valuable online presence as knowledgeable and proficient software engineers.

Why you should know this

Data structures are the building blocks of computer science. It's the foundation that allows engineers to store and manipulate data. Once you have a place to store the data, if you need to find data or sort it in a specific way, you'll need search algorithms in order to do that.

Implementations of these concepts are how some of the largest tech companies in the world were built. Displaying relevant search results and finding friends and peers on social networks would be impossible without these core concepts. They're also the most common topics for software engineering interviews, and leveling up your knowledge on these topics is required to nail that technical interview!

Prerequisites:

Learning Outcomes

Students by the end of the course will be able to ...

  1. Compare and contrast iterative and recursive algorithms
  2. Analyze the complexity of an algorithm to determine its runtime
  3. Implement various data structures such as stacks, queues, sets, maps, and trees
  4. Implement iterative and recursive sorting algorithms
  5. Build out different types of tree traversals
  6. Practice writing technical articles

Schedule

Course Dates: Wednesday, May 29 – Wednesday, July 3, 2019 (6 weeks)

Class Times: Monday & Wednesday at 3:30–5:20pm (11 class sessions)

Class Date Review of Prior Topic New Topic & Challenges
1 Wed, May 29 Number Bases
2 Mon, June 3 Number Bases Review Recursion & Search Algorithms
3 Wed, June 5 Search Algorithms Review String Algorithms
4 Mon, June 10 String Algorithms Review Arrays & Linked Lists
5 Wed, June 12 Linked Lists Review Lists, Stacks & Queues
6 Mon, June 17 Stacks & Queues Review Maps & Hash Tables
7 Wed, June 19 Maps & Hash Tables Review Trees & Binary Search Trees
8 Mon, June 24 Binary Search Trees Review Tree Traversals
9 Wed, June 26 Tree Traversals Review Sets & Circular Buffers
10 Mon, July 1 Sets Review Technical Article Peer Review
11 Wed, July 3 Word Jumble Challenge

Repository Setup Instructions

Please follow these instructions exactly to set up your fork of this repository.

Class Assignments

Projects

Evaluation

To pass this course you must meet the following requirements:

  • Complete all required tutorials
  • Pass all projects according to the associated project rubric
  • Pass the final summative assessment >=75%
  • Actively participate in class and abide by the attendance policy
  • Make up all classwork from all absences

Make School Course Policies