Skip to content

FritzHeider/CS-1.3-Core-Data-Structures

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 implement and test data structures including lists, stacks, queues, sets, maps, and trees. Students will then apply these to real-world problems like phone call routing to understand their tradeoffs. Students will also write technical blog articles about these topics to deepen understanding, improve technical writing, and bolster their 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!

Schedule

Course Dates: Tuesday, January 21 – Thursday, March 5, 2020 (7 weeks, 13 class sessions)

Class Times: 2:30–5:15pm on Monday & Wednesday (Section A) or Tuesday & Thursday (Section B)

Class Date Review of Prior Topic New Topic & Challenges Quiz or Deliverable Due
1 Tue/Wed, Jan 21/22 N/A Number Bases N/A
2 Mon/Tue, Jan 27/28 Number Bases Review Recursion & Search Algorithms N/A
3 Wed/Thu, Jan 29/30 Search Algorithms Review String Algorithms Quiz: Number Bases
4 Mon/Tue, Feb 3/4 String Algorithms Review Arrays & Linked Lists Due: Number Bases & Search Algorithms
5 Wed/Thu, Feb 5/6 Linked Lists Review Lists, Stacks & Queues Quiz: Search Algorithms
6 Mon/Tue, Feb 10/11 Stacks & Queues Review Maps & Hash Tables Due: Palindromes & String Algorithms
7 Wed/Thu, Feb 12/13 Hash Tables Review Technical Article Peer Review Quiz: Lists, Stacks & Queues
8 Mon/Tue, Feb 17/18 N/A Trees & Binary Search Trees Due: Lists, Stacks & Queues
9 Wed/Thu, Feb 19/20 Binary Search Trees Review Tree Traversals Quiz: Hash Tables
10 Mon/Tue, Feb 24/25 Tree Traversals Review Sets & Circular Buffers Due: Hash Tables & Article Draft
11 Wed/Thu, Feb 26/27 Sets Review Technical Article Peer Review Due: Trees & Tree Traversals
12 Mon/Tue, Mar 2/3 N/A Word Jumble Project Quiz: Trees & Sets, Due: Sets
13 Wed/Thu, Mar 4/5 N/A Word Jumble Project Due: Technical Article & Project

Prerequisites

Students must pass the following course and demonstrate mastery of its competencies:

Learning Outcomes

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

  1. Implement, compare and contrast iterative and recursive algorithms
  2. Analyze best-case and worst-case time and space complexity of an algorithm
  3. Implement several abstract data types and data structures including linked lists, stacks, queues, hash tables, maps, sets, and binary search trees
  4. Implement tree traversal algorithms: depth-first and breadth-first ordering
  5. Write technical articles to deepen understanding and demonstrate mastery

Assignments

Coding Challenges

Each lesson has an associated set of coding challenges with starter code and unit tests provided. Full details can be found in the "Challenges" section of each lesson linked in the schedule above.

Projects

The following self-guided projects are meant to test students' understanding of concepts covered in the course. Due to their open-ended nature, the projects are expected to be more challenging than the coding challenges with starter code and unit tests provided. Students will complete one of the projects, depending on the number of class sessions scheduled in the term.

Technical Articles

Students will also write a technical article about a topic related to course content to deepen their understanding, improve their technical writing skills, and demonstrate mastery of computer science, which will bolster their online presence as knowledgeable and proficient software engineers. Refer to the technical article guidelines for more information about article requirements and detailed tips on how to select a topic related to computer science, research the topic, create an outline, write your article, cite all sources of borrowed material, and provide feedback to other students.

Submissions

Students will submit their coding challenges, project, and technical article according to the following due dates listed below. Completion will be assessed according to the associated coding challenge rubrics. Students will first self-assess by reviewing their code and writing to evaluate it against each row of the rubric, then submit their rubric scores using the associated form linked below.

To pass each submission, students must earn the required number of points or higher indicated on the associated rubric. Note that all points within one submission are fungible (that is, interchangeable) and so if one portion of work is below the "Met All Expectations" column of the rubric, another portion of work submitted can "Exceed Expectations" (generally by completing stretch challenges) to earn an extra point to make up for the missing one. Therefore, it's wise to complete stretch challenges as "insurance" in case some work does not meet expectations.

Another way to think of the submissions is a game where your goal is to earn enough points to pass in whatever way you see fit, with rubrics as the rules of the game that you can optimize against and "win" to pass the course.

The instructor or teaching assistants will review students' submissions and verify or correct their self-assessed scores, then share feedback with the student through a GitHub issue opened on their repository. Feedback will include their status on that submission (that is, whether their work is passing the rubric or the student needs to improve and resubmit their work to pass).

Students can improve their code and writing, reassess it against the rubric, and resubmit their improved rubric scores before the last resubmission date listed below. Submissions received after the due date will not be considered unless the instructor has approved an extension in writing due to exceptional circumstances.

Submission Date Started Date Due Topics Included in Submission
1 Wed, Jan 22 Tue, Feb 4 Number Bases & Search Algorithms
2 Thu, Jan 30 Tue, Feb 11 Palindromes & String Algorithms
3 Thu, Feb 6 Tue, Feb 18 Linked Lists, Stacks & Queues
4 Tue, Feb 11 Tue, Feb 25 Hash Tables & Article Draft
5 Tue, Feb 18 Thu, Feb 27 Trees & Tree Traversals
6 Tue, Feb 25 Tue, Mar 3 Sets & Set Operations
7 Tue, Feb 11 Thu, Mar 5 Technical Article
8 Tue, Mar 3 Thu, Mar 5 Word Jumble Project

Evaluation

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

  • Complete all required coding challenges, projects, and technical articles
  • Submit all code and writing with rubric scores by the due dates listed above
  • Pass all submissions according to the associated coding challenge rubrics
  • Pass the written assessment (summation of weekly quizzes) – use the study guide to prepare
  • Actively participate in class and abide by the attendance policy
  • Make up all classwork from all absences
  • No more than two unexcused absences ("no-call-no-shows")
  • No more than four excused absences (communicated in advance)

Repository Setup

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

Make School Course Policies

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages