Giter VIP home page Giter VIP logo

cs-2.1-trees-sorting's Introduction

CS 2.1: Advanced Trees & Sorting Algorithms

Course Description

In this course students will implement and test advanced data structures and algorithms, benchmark performance, analyze algorithmic complexity, explore trade offs in performance and memory usage, and draw out elegant problem-solving techniques.

Key concepts include sorting algorithms, divide-and-conquer recursion, heaps, tries, self-balancing trees, and execution trees. Students will build an original project that applies these data structures to real-world problems such as autocomplete, family trees, and board games.

Students will also write technical articles about these topics to deepen their understanding and create their online presence as knowledgeable and proficient software engineers.

Prerequisites:

Course Specifics

Course Delivery: online | 7 weeks | 14 sessions

Course Credits: 3 units | 37.5 Seat Hours | 75 Total Hours

Learning Outcomes

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

  • implement and compare several sorting algorithms and know when to use which ones
  • apply divide-and-conquer recursion techniques to elegantly solve complex problems
  • analyze complexity of recursive algorithms with recurrence relations and master theorem
  • implement abstract data types including priority queues, binary heaps, and tries
  • implement self-balancing tree structures including AVL trees, splay trees, and 2-3 trees
  • implement tree traversal algorithms: depth-first and breadth-first ordering
  • utilize bit manipulation algorithms to store and access information in individual bits

Schedule

Course Dates: Monday, January 20 – Wednesday, May 12, 2021 (7 weeks)

Class Times: Monday, Wednesday at 9:30am–12:15pm (13 class sessions)

Class Date Topics Assignments
- Mon, Mar 29 Iterative Sorting Algorithms
1 Wed, Mar 31 No Class - Cesar Chavez
2 Mon, Apr 5 Divide-and-Conquer Recursion
3 Wed, Apr 7 Divide-and-Conquer Recursion Quiz 1 released, Due: Iterative Sorting Challenges
4 Mon, Apr 12 Recursive Sorting Algorithms
5 Wed, Apr 14 Integer Sorting Algorithms Due:Recursive Sorting Challenges
6 Mon, Apr 19 Lab Day Quiz 2 released
7 Wed, Apr 21 Prefix Trees (aka Tries) Due: Integer Sorting Challenges
8 Mon, Apr 26 Prefix Trees (aka Tries) II
9 Wed, Apr 28 Rotating Binary Search Trees Quiz 3 released
10 Mon, May 3 Multiple Key Search Trees Due: Prefix Tree Challenges
11 Wed, May 5 Priority Queues & Heaps
12 Mon, May 10 Special Topics Due: Heaps Challenge
13 Wed, May 12 Lab Day Due: Trees Project & Article

Class Assignments

We will be using Gradescope, which allows us to provide fast and accurate feedback on your work. All assigned work will be submitted through Gradescope, and assignment and exam grades will be returned through Gradescope.

As soon as grades are posted, you will be notified immediately so that you can log in and see your feedback. You may also submit regrade requests if you feel we have made a mistake.

Your Gradescope login is your Make School email, and your password can be changed at https://gradescope.com/reset_password. The same link can be used if you need to set your password for the first time.

Evaluation

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

  • Actively participate in class and abide by the attendance policy
  • No more than two unexcused absences ("no-call-no-shows")
  • No more than four excused absences (communicated in advance)
  • Make up all classwork from all absences
  • Complete the required coding challenges (rubrics provided on assignment pages). You will need to pass with an average score of 2 or higher
    • Iterative Sort
    • Recursive Sort
    • Integer Sort
    • Prefix Trees
    • Binary Heaps
  • Pass all three conceptual quizzes with a 70% or higher
  • Complete the technical article OR advanced trees project with a 70% or higher
  • If you are not passing any assignment you have a week to fix any errors and resubmit
  • You are allowed to submit assignments after the due date with instructor permission
  • You are allowed to drop one coding challenge or quiz

Information Resources

Any additional resources you may need (online books, etc.) can be found here. You can also find additional resources through the library linked below:

Make School Course Policies

cs-2.1-trees-sorting's People

Contributors

ibirnam avatar jess-lemur avatar neptunius avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

cs-2.1-trees-sorting's Issues

invalid test/assertion in prefixtree_test.py

In prefixtree.py, my tree.complete() works as expected except for one test/assertion case.

Within the source prefixtree_test.py, inside test_complete(), I'm fairly certain that this particular line is invalid:

assert tree.complete('XY') == []

For example, if ABC is in the prefix-tree, then A, AB, and ABC should all at least autocomplete to ABC in the resulting array.

As in the assertion code, if XYZ is in the prefix-tree, then XY should at least autocomplete to XYZ in the resulting array. However, we are instead expecting an empty array on line 230.

I might be overlooking something on my part, but figured this should be addressed, whether for my sake or the classes' sake.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.