- Description
- Learning Outcomes
- Logistics
- Marking Scheme
- Policies
- Folder Structure
- Acknowledgements and Contributions
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.
Students will know how to...
- Assess options and choices around fundamental algorithms and data structures using Big-O notation.
- Develop comfort with recursive functions.
- Decide on appropriate data structures
- Take a client-led problem and translate it into an optimization problem.
- Identify why code is running slowly and know how to improve its performance.
- Instructor: Salaar Liaqat he/him PhD Candidate, UofT. [email protected]
- Please include the keyword "DSI Algorithms" in your emails and use professional language.
- TA: Tina Ji she/her MSc in Applied Computing. [email protected]
- Please include the keyword "DSI Algorithms" in your emails and use professional language.
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.
- Camera is optional although highly encouraged. We understand that not everyone may have the space at home to have the camera on.
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 |
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.
Assessment | Weight | Description | Due Date |
---|---|---|---|
Assignment 1 | 40% | DSA coding practice | Sat Feb 24, 11:59pm |
Assignment 2 | 60% | mock interview | Fri March 1, 11:59pm |
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 through this Google Forms link
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.
Below are the folders contained in this repo with a description of what they contain and information on how to use them.
This folder contains the assignments.
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.
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.
This folder contains all editable slides. The slides were created using Quarto.
- 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.
algorithms_and_data_structures
welcomes issues, enhancement requests, and other contributions. To submit an issue, use the GitHub issues.