Git Product home page Git Product logo

algorithms_and_data_structures's Introduction

Algorithms and data structures

Contents:

  1. Description
  2. Learning Outcomes
  3. Logistics
  4. Marking Scheme
  5. Policies
  6. Folder Structure
  7. Acknowledgements and Contributions

Description:

The course was created by the University of Toronto's Data Science Institute. An understanding of data structures and algorithms (DSA), will aid the implementation of data science or machine learning methods in practice. Machine learning places emphasis on prediction, scalability, and autonomy. Understanding DSA is essential to the latter two aims of ML. For instance, students will be able to describe how an algorithms will perform when scaled or find practical methods for computers to solve problems autonomously. Finally, the industry often requires knowledge on DSAs and the ability to communicate the solving process. This course will provide the knowledge and terminology necessary to succeed in these situations.

The beginning of the course will introduce students to terminology to discuss algorithms. This includes Big-O notation, time and space complexity. The next section will explore array-based data structures, searching, and sorting. Students should be able to justify algorithm or data structure choices based off time and space complexity analysis. Then, students will be introduced to recursion. We will solve problems using recursion and implment data structures that are best understood from a recursive perspective. Again, students will justify their design choices. The last portion of the course will be dedicated to solving optimization problems quickly. Students will be introduced to a variety of techniques to solve problems, identify when and how a solution can be optimized.

This course is designed for those who have a degree in something other than Computer Science/Statistics who are looking to enhance their data science skills for their career.

Learning Outcomes

Students will know how to...

  1. Assess options and choices around fundamental algorithms and data structures using Big-O notation.
  2. Develop comfort with recursive functions.
  3. Decide on appropriate data structures
  4. Take a client-led problem and translate it into an optimization problem.
  5. Identify why code is running slowly and know how to improve its performance.

Logistics

Course Contacts

  • Instructor: Salaar Liaqat [email protected]
    • Please include the keyword "DSI Algorithms" in your emails and use professional language.
  • TA: Jenny Du [email protected]
    • Please include the keyword "DSI Algorithms" in your emails and use professional language.

Delivery instructions

The workshop will be held over three weeks, three days a week. Two of the three days will be 2-hours long and the last day will be 3-hours. Being mindful of online fatigue, there will be one break during each class where students are encouraged to stretch, grab a drink and snacks, or ask any additional questions.

There will be a live coding component in most classes. Students are expected to follow along with the coding and ask questions throughout.

Technology Requirements

  1. Camera is optional although highly encouraged. We understand that not everyone may have the space at home to have the camera on.

Lesson Schedule

Lesson Topic Resources
1 Motivation and Big-O Notation Slides
2 Data Structures, Sorting, and Searching Slides
3 Recursion Slides
4 Recursion Slides
5 Recursive Data Structures Slides
6 Recursive Data Structures Slides
7 Optimization Slides
8 Optimization Slides
9 Why is my code slow? Slides

Textbooks

The course content, slides, and recommended problems follow these two textbooks. They are freely available online after a quick google search.

  • Bhargava, A. Y. (2016). Grokking algorithms: An illustrated guide for programmers and other curious people. Manning.

    • This textbook is easy to understand and very accessible. We will go deeper than this text.
  • Cormen, T. H. (Ed.). (2009). Introduction to algorithms (3rd ed). MIT Press.

    • We won't cover the majority of this textbook. Many topics are too advanced and it goes into a lot of detail.

Marking Scheme

Assessment Weight Description Due Date
Assignment 1 40% DSA coding practice Sat April 6, 11:59pm
Assignment 2 60% mock interview Fri April 12, 11:59pm

Policies

Students should be active participants while coding and are encouraged to ask questions throughout.

How to submit assignments, late policy, academic integrity. Please submit your assignment by uploading the PDFs to your google drive folder used for assignment submissions.

Late policy: Everyone has a 24 hours grace period available in total for both assignments. Meaning if you submit the first assignment 12 hours late, you can submit the second assignment 12 hours late with no penalty. Or if you submit the first assignment on time, you can submit the second assignment upto 24 hours late. After using your grace period time, there will be a 20% penalty for 24 hours, and a 100% penalty after that.

If there are any extenuating circumstances, pleaese contact the course instructor as soon as possible for accommodations.

Folder Structure

Below are the folders contained in this repo with a description of what they contain and information on how to use them.

1 assignments:

This folder contains the assignments.

2. homework:

This folder contains a pdf file with all the recommended problems. The problems are also found after each coresponding set of slides.

Homework is just a suggestion but will help students throughout the workshop, as content is cumulative and will only get more difficult. Unfortunately, there is not enough time to review previous content each class so while this homework is not graded, it is highly recommended.

3. lessons:

This folder contains the pdf version of the slides.

pdf slides should be referenced before class to prepare or after class to review. They contain all information that was discussed in class and are a great resource in the future if students need to reassess their knowledge. At the end of each set of slides, there are recommended problems, readings, and additional resources should students desire to learn more.

5. slides-resources:

This folder contains all editable slides. The slides were created using Quarto.

Acknowledgements and Contributions

Achnowledgements

  • The course was devloped by Alex Yu under the supervision of Rohan Alexander.
  • We wish to acknowledge this land on which the University of Toronto operates. For thousands of years it has been the traditional land of the Huron-Wendat, the Seneca, and most recently, the Mississaugas of the Credit River. Today, this meeting place is still the home to many Indigenous people from across Turtle Island and we are grateful to have the opportunity to work on this land.

Contributions

  • algorithms_and_data_structures welcomes issues, enhancement requests, and other contributions. To submit an issue, use the GitHub issues.

algorithms_and_data_structures's People

Contributors

kunzhi-yu avatar salaar-liaqat avatar danielrazavi avatar bkaddoura avatar rohanalexander avatar

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.