Skip to content

Commit 1af24fa

Browse files
committed
Updated README, Added Lecture 5 material, updated assignment 1 and 2 to cover material more aligned with course pacing
1 parent b4b279d commit 1af24fa

20 files changed

+3429
-12620
lines changed
Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
# Algorithms and Data Structures
2+
3+
## Content
4+
* [Description](#description)
5+
* [Learning Outcomes](#learning-outcomes)
6+
* [Assignments](#assignments)
7+
* [Contacts](#contacts)
8+
* [Delivery of the Learning Module](#delivery-of-the-learning-module)
9+
* [Schedule](#schedule)
10+
* [Requirements](#requirements)
11+
* [Resources](#resources)
12+
+ [Textbooks](#textbooks)
13+
+ [Documents](#documents)
14+
+ [Videos](#videos)
15+
+ [How to get help](#how-to-get-help)
16+
* [Folder Structure](#folder-structure)
17+
* [Acknowledgement](#acknowledgement)
18+
19+
## Description
20+
An understanding of algorithms and data structures will aid the implementation of data science or machine learning methods in practice. Machine learning emphasizes prediction, scalability, and autonomy. Understanding algorithms and data structures is essential to the latter two aims of ML. Participants will be able to describe how algorithms will perform when scaled or find practical methods for computers to solve problems autonomously. Industry often requires knowledge of algorithms and data structures and the ability to communicate the solving process. This module will provide the knowledge and terminology necessary to succeed in these situations.
21+
22+
The module will introduce participants 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. Participants should be able to justify algorithm or data structure choices based on time and space complexity analysis. Then, participants will be introduced to recursion. We will solve problems using recursion and implement data structures that are best understood from a recursive perspective. Participants will justify their design choices. The last portion of the module will be dedicated to solving optimization problems quickly. Participants will be introduced to a variety of techniques to solve problems and identify when and how a solution can be optimized.
23+
24+
## Learning Outcomes
25+
By the end of the module, participants will be able to:
26+
27+
1. Assess options and choices around fundamental algorithms and data structures using Big-O notation.
28+
2. Use recursive functions.
29+
3. Select appropriate data structures
30+
4. Translate a client-led problem into an optimization problem.
31+
5. Identify why code is running slowly to improve its performance.
32+
33+
## Contacts
34+
**Questions can be submitted to the _#cohort-5-help_ channel on Slack**
35+
36+
* Technical Facilitator: **{Salaar Liaqat}**. Messages to the Technical Facilitator can be sent on Slack.
37+
* Learning Support Staff: **{Tiyani, Emma, and Edward}**. Messages to the Learning Support Staff can be sent on Slack.
38+
39+
## Delivery of the Learning Module
40+
This module will include live learning sessions and optional, asynchronous work periods. During live learning sessions, the Technical Facilitator will introduce and explain key concepts and demonstrate core skills. Learning is facilitated during this time. Before and after each live learning session, the instructional team will be available for questions related to the core concepts of the module. The Technical Facilitator will introduce concepts through a collaborative live coding session using the Python notebooks found under `/01_materials/slides`. The Technical Facilitator will also upload live coding files to this repository for participants to revisit under `./06_this_cohort/live_code`.
41+
42+
Optional work periods are to be used to seek help from peers, the Learning Support team, and to work through the homework and assignments in the learning module, with access to live help. Content is not facilitated, but rather this time should be driven by participants. We encourage participants to come to these work periods with questions and problems to work through.
43+
 
44+
Participants are encouraged to engage actively during the learning module. They key to developing the core skills in each learning module is through practice. The more participants engage in coding along with the instructional team, and applying the skills in each module, the more likely it is that these skills will solidify.
45+
46+
## Schedule
47+
48+
| Live Learning Session | Topic | Resources |
49+
|--------|-------------------------------------------------------------|------------|
50+
| 1 | Motivation and Big-O Notation | [Slides](./01_materials/slides/1_motivation_big_o.ipynb) |
51+
| 2 | Data Structures, Sorting, and Searching | [Slides](./01_materials/slides/2_ds_search_sort.ipynb) |
52+
| 3 | Recursion | [Slides](./01_materials/slides/3_recursion.ipynb) |
53+
| 4 | Recursive Data Structures | [Slides](./01_materials/slides/4_recursive_ds.ipynb) |
54+
| 5 | Slow Code | [Slides](./01_materials/slides/5_slow_code.ipynb) |
55+
| 6 | Case Study | - |
56+
57+
## Requirements
58+
* Participants are expected to have completed Shell, Git, and Python learning modules.
59+
* Participants are encouraged to ask questions, and collaborate with others to enhance learning.
60+
* Participants must have a computer and an internet connection to participate in online activities.
61+
* Participants must not use generative AI such as ChatGPT to generate code in order to complete assignments. It should be used as a supportive tool to seek out answers to questions you may have.
62+
* We expect participants to have completed the instructions mentioned in the [onboarding repo](https://github.com/UofT-DSI/onboarding/).
63+
* We encourage participants to default to having their camera on at all times, and turning the camera off only as needed. This will greatly enhance the learning experience for all participants and provides real-time feedback for the instructional team.
64+
* Participants must have VSCode installed with the following extensions:
65+
* [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter)
66+
* [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python)
67+
68+
## Assignments
69+
70+
Participants should review the [Assignment Submission Guide](https://github.com/UofT-DSI/onboarding/blob/main/onboarding_documents/submissions.md) for instructions on how to complete assignments in this module.
71+
72+
| Assessment | Description | Due Date |
73+
|------------------|----------------------|----------|
74+
| [Assignment 1](./02_activities/assignments/assignment_1.ipynb) | DSA coding practice | Sunday, June 22 2025 (11:59pm) |
75+
| [Assignment 2](./02_activities/assignments/assignment_2.ipynb) | Mock interview | Sunday, June 29 2025 (11:59pm) |
76+
77+
## Resources
78+
Feel free to use the following as resources:
79+
80+
### Textbooks
81+
82+
The course content, slides, and recommended problems follow these two textbooks. They are freely available online after a quick Google search.
83+
84+
* Bhargava, A. Y. (2016). *Grokking algorithms: An illustrated guide for programmers and other curious people.* Manning. ([link](https://www.manning.com/books/grokking-algorithms-second-edition))
85+
* This textbook is easy to understand and very accessible. We will go deeper than this text.
86+
* Cormen, T. H. (Ed.). (2009). *Introduction to algorithms (3rd ed).* MIT Press.
87+
* We won't cover the majority of this textbook. Many topics are too advanced and it goes into a lot of detail.
88+
89+
### Documents
90+
91+
- [Big O Cheatsheet](https://www.bigocheatsheet.com/)
92+
- [Sorting Cheatsheet](https://www.interviewcake.com/sorting-algorithm-cheat-sheet)
93+
- [Visual Go - Graph Traversal](https://visualgo.net/en/dfsbfs?slide=2)
94+
- [Codecademy Explanation](https://www.codecademy.com/article/tree-traversal)
95+
96+
### Videos
97+
- [15 Sorting Algorithms in 6 minutes](https://www.youtube.com/watch?v=kPRA0W1kECg) (Warning: This video could cause seizures for people with photosensitive epilepsy)
98+
- [Big O Notation](https://www.youtube.com/watch?v=g2o22C3CRfU)
99+
- [Breadth-first Search in 4 minutes](https://www.youtube.com/watch?v=HZ5YTanv5QE)
100+
- [Depth-first Search in 4 minutes](https://www.youtube.com/watch?v=Urx87-NMm6c)
101+
- [Nearest Neighbour Algorithm](https://www.youtube.com/watch?v=zPgsNsOfxQ8)
102+
- [K-d Trees](https://www.youtube.com/watch?v=Glp7THUpGow)
103+
- [Sorting Playlist](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl)
104+
105+
### How to Get Help
106+
#### 1. Gather information about your problem
107+
- Copy and paste your error message
108+
- Copy and paste the code that caused the error, and the last few commands leading up to the error
109+
- Write down what you are trying to accomplish with your code. Include both the specific action, and the bigger picture and context
110+
- (optional) Take a screenshot of your entire workspace
111+
112+
#### 2. Try searching the web for your error message
113+
- Sometimes, the error has common solutions that can be easy to find!
114+
- This will be faster than waiting for an answer
115+
- If none of the solutions apply, consider asking a Generative AI tool
116+
- Paste your code, the error message, and a description of your overall goals
117+
118+
#### 3. Try asking in your cohort's Slack help channel
119+
- Since we're all working through the same material, there's a good chance one of your peers has encountered the same error, or has already solved it
120+
- Try searching in the DSI Certificates Slack help channel for whether a similar query has been posted
121+
- If the question has not yet been answered, post your question!
122+
- Describe your the overall goals, the context, and the specific details of what you were trying to accomplish
123+
- Make sure to **copy and paste** your code, your error message
124+
- Copying and pasting helps:
125+
1. Your peers and teaching team quickly try out your code
126+
1. Others to find your question in the future
127+
128+
#### Great resources on how to ask good technical questions that get useful answers
129+
- [Asking for Help - The Odin Project](https://www.theodinproject.com/lessons/foundations-asking-for-help)
130+
- [How do I ask a good question? - Stack Overflow](https://stackoverflow.com/help/how-to-ask)
131+
- [The XY problem: A question pitfall that won't get useful answers](https://xyproblem.info/)
132+
- [How to create a minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example)
133+
134+
<hr>
135+
136+
## Folder Structure
137+
138+
```markdown
139+
.
140+
├── .github
141+
├── 01_materials
142+
├── 02_activities
143+
├── 03_instructional_team
144+
├── 04_this_cohort
145+
├── .gitignore
146+
├── LICENSE
147+
└── README.md
148+
```
149+
150+
* **.github**: Contains issue templates and pull request templates for the repository.
151+
* **materials**: Module slides and interactive notebooks (.ipynb files) used during learning sessions.
152+
* **activities**: Contains graded assignments, exercises, and homework to practice concepts covered in the learning module.
153+
* **instructional_team**: Resources for the instructional team.
154+
* **this_cohort**: Additional materials and resources for cohort three.
155+
* **.gitignore**: Files to exclude from this folder, specified by the Technical Facilitator
156+
* **LICENSE**: The license for this repository.
157+
* **README**: This file.
158+

0 commit comments

Comments
 (0)