~ daniyal.md DAILY-LOG.md

v0.1.0

daily log

can i become a cracked cs kid in 30 days?

day 6 of 30

---
challenge: become a cracked cs kid in 30 days started: 2026-08-08 focus: python, data structures, algorithms status: wip
---

the series

This log is the written companion to 30 Days to Becoming Cracked at CS, a daily video series documenting the whole run.

Watch the Introduction

entries

day 06

Started building my biggest project so far, Vector Search, learning the concepts as I go. The goal is to scale it to around one million vectors and benchmark it against FAISS.

vector-search

Today I started building a Vector Search system completely from scratch. It is designed to find the most similar items across a very large dataset. This project is well beyond my current skill level, so I am treating it as a learning experience and figuring things out as I build. My long term goal is to scale it to roughly one million vectors and compare its performance against FAISS.

The fastest way to grow is to build projects that feel slightly out of reach. They force me to learn concepts I would not encounter by staying in my comfort zone.

day 05

Went deeper on Big O, then learned arrays and linked lists. Continued working on Dispatch Systems.

big-o arrays linked-lists dispatch-systems

Today I focused on understanding how to measure the efficiency of code instead of just whether it works. I also learned the basics of arrays and linked lists. After that I spent some time working on Dispatch Systems. Tomorrow I will be starting a Python project that I can add to my portfolio.

Good code is not just correct, it is also efficient. Learning how algorithms scale is just as important as getting the right answer.

day 04

Started putting the new plan into practice. Began the data structures and algorithms course and learned Big O.

big-o-fundamentals

First day of the plan in practice. Started the data structures and algorithms course and worked through Big O, which is the first step on the path I mapped out yesterday.

A strong understanding of the fundamentals will make solving LeetCode problems much more intentional instead of relying on trial and error.

day 03

Realized my LeetCode strategy was not working and built a new plan: learn data structures and algorithms properly before going back to problems. Also spent about two hours on the University of Waterloo Math Summer Course.

I realized I had been approaching LeetCode the wrong way. I would usually brute force a solution, get stuck, then watch the explanation without really understanding the underlying concepts. I do not have a strong enough grasp of the data structures and algorithms underneath the problems, so I am going to stop grinding them and build the foundation first.

My new learning plan:

  1. arrays
  2. linked lists
  3. recursion
  4. sorting
  5. binary search
  6. trees
  7. backtracking
  8. heap / priority queue
  9. hashing
  10. graphs
  11. dynamic programming
  12. bit manipulation

Once I have worked through these fundamentals, I will return to solving LeetCode problems consistently.

Sometimes the fastest way to improve is to stop and admit the approach is not working. Naming the gap and building a plan around it was worth more than another day of forcing problems.

day 02

Continued through the LeetCode roadmap and completed Valid Anagram and Two Sum. Also worked through questions from the University of Waterloo Math Summer Course, put time into a side project called Dispatch Systems, and applied to several clubs as an incoming first-year student.

valid-anagram.py two-sum.py

Valid Anagram (242) was fairly straightforward and I solved it without much trouble. Two Sum (1) was harder. I spent time trying different approaches before watching NeetCode's explanation to understand the optimal solution.

The University of Waterloo Math Summer Course has been a good way to refresh high school math before starting university. Made some progress on Dispatch Systems. Submitted applications to a few clubs to get involved during first year.

Solving a problem on your own is ideal, but understanding why the optimal solution works matters more. When I get stuck I study the solution, take notes, and revisit the problem later until I can solve it independently.

day 01

Refreshed Python syntax, practiced on Codewars, and started working through the LeetCode roadmap.

contains-duplicate.py

Worked on Contains Duplicate, LeetCode 217. My first solutions passed the smaller cases but were not efficient enough to clear every test. Reviewed NeetCode's explanation of the optimal approach and took notes on it. Redoing the problem in a few days to confirm the concept stuck.

Passing the small cases is not the same as solving the problem. The optimal approach only stuck because I had already hit the wall with my own.

day 07 · pending