From Zero to Mastery: My Journey Learning Data Structures & Algorithms
This article chronicles the author's seven‑year evolution from a disinterested student to a seasoned developer, detailing study plans, key algorithm and data‑structure books, internship experiences, custom parsers, performance‑critical mobile features, and the indispensable role of algorithms for serious programmers.
About
Strictly speaking the title should be "My Journey Learning Data Structures and Algorithms", but the current title is acceptable.
What does this article cover?
My summary of years of studying data structures and algorithms.
Some good algorithm books and tutorials.
The importance of algorithms.
Beginner
My first exposure to data structures was a sophomore course that I ignored while selling MP3s and headphones. I only realized the need to learn when I was a junior looking for a job and created a study plan covering C basics, data structures, and computer networks.
I consulted seniors and experts who recommended "Introduction to Algorithms" and "The Art of Computer Programming". I found the latter incomprehensible, but discovered Douban reviews and bought highly‑rated, less intimidating books.
Data Structures and Algorithm Analysis – C Description
This was my first data‑structure book. I marked difficult parts, copied code by hand, and drew intermediate states. Although inefficient, this “brute‑force” method helped me solve classic interview problems.
The book illustrates algorithm importance by improving the maximum sub‑sequence sum from O(N³) to O(N²), then O(N log N), and finally O(N).
I also hand‑typed all the data‑structure diagrams, later mentioning this effort on my résumé.
Entry
My internship did not use algorithms; I felt uneasy seeing peers doing the same repetitive API work.
Microsoft Dream Factory
Reading about Microsoft Research inspired me to aim for such companies, but I realized my qualifications were insufficient, so I quit the internship and prepared for graduate studies.
During the graduate entrance exam, I discovered Microsoft’s Sigma building opposite my dorm.
Algorithm Design and Analysis
In graduate school I attended Professor Han Jun’s algorithm design course, which became my de‑facto textbook. I mastered complexity analysis, divide‑and‑conquer, dynamic programming, and backtracking.
Algorithm Introduction
I later read a book focusing on creating algorithms, which expanded the range of problems I could solve.
Consolidation
During a Microsoft Research internship I built a small project, failed a Baidu interview (could not implement stof), and then devoted most of my time to reading programming books and improving C coding skills.
Key books included "Elements of Programming", "C Interfaces and Implementations", and classic "Programming Pearls". I practiced “paper coding” and learned to prove code correctness.
Application
I initially believed algorithms were only useful for interviews, but many of my later projects relied on them.
LL(k) Parser for T‑SQL
To compute block coverage for stored procedures I built an LL(k) parser from the official EBNF, generated an AST, and produced HTML reports.
Pinyin Index
I created a compact pinyin lookup library for a mobile app, using sorted Unicode strings, Int16 for pinyin indices, and Int64 to pack multiple pronunciations, achieving 50× speed over Microsoft’s library with only 336 lines of code.
Fast String Matching
For a Windows Phone dialer I replaced a linear search with a trie, improving matching speed by over 90× and handling 10 000 contacts in 0.1 s.
Improvement
After graduation I intensified algorithm study to avoid being outperformed by ACM‑style colleagues, revisiting books such as "Algorithm Design Manual", "Programming Pearls", and "The Science of Programming".
Evolution
I explored advanced topics through MIT’s "6.851 Advanced Data Structures", learning persistent structures, van Emde Boas trees, O(1) LCA/RMQ, linear‑time suffix trees, and more.
Conclusion
My seven‑year journey shows a dialectic of believing algorithms are essential, then dismissing them, and finally recognizing their indispensable role for serious developers.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
21CTO
21CTO (21CTO.com) offers developers community, training, and services, making it your go‑to learning and service platform.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
