From Zero to Algorithm Mastery: My 7‑Year Journey and Lessons Learned
The author chronicles a seven‑year evolution from a clueless undergraduate to a seasoned programmer, detailing the books, courses, internships, and personal projects that shaped his understanding of data structures and algorithms, while debating the practical value of algorithmic knowledge in software development.
This article is a personal summary of the author’s seven‑year experience learning data structures and algorithms, including the books, courses, internships, and projects that shaped his understanding.
Early Learning
The author first encountered data structures in a sophomore university course but ignored it. In the third year, realizing the need for programming skills, he created a study plan covering C language basics, data structures, and computer networks, and chose books based on recommendations and Douban reviews.
Data Structures and Algorithm Analysis – C Language Description
This book became the author’s first data‑structure textbook. He marked difficult sections, copied code by hand, and drew algorithm states to understand them. The exercises were classic interview problems, which later helped in interview preparation.
The book demonstrates algorithm importance by improving the maximum sub‑sequence sum problem from O(N³) to O(N) step by step.
University and Graduate Studies
During a graduate program, the author attended Professor Han Jun’s algorithm design and analysis course, which mirrored the structure of the textbook Algorithm Design and Analysis . He mastered complexity analysis, divide‑and‑conquer, dynamic programming, and backtracking.
Algorithm Introduction
This book focuses on creative algorithm design, expanding the author’s problem‑solving repertoire.
Internship Experiences
At Microsoft Research, the author worked on a code‑coverage analysis tool for T‑SQL stored procedures. Lacking a suitable T‑SQL parser, he built an LL(k) parser based on the official EBNF, generated an AST, and produced HTML coverage reports.
He also created a fast Chinese‑pinyin index for a mobile app, implementing a custom dictionary using Int16 and Int64 indexing, achieving performance 50× faster than Microsoft’s library.
Algorithmic Projects
To improve contact search on Windows Phone, he replaced linear search with a trie‑based multiple‑string search algorithm, increasing speed by over 90× and reducing code size dramatically.
He also experimented with simulated annealing for fast pagination in an e‑book reader, noting the algorithm’s efficiency without fully understanding its theoretical basis.
Reading List and Reflections
The author recommends several classic books: Elements of Programming , C Interfaces and Implementation , Algorithm Design Manual , Programming Pearls , The Science of Programming , and Algorithms (4th edition) . He emphasizes that solid algorithm knowledge is essential for becoming a competent developer, contrary to the “algorithms are useless” stance held by some.
Quoting Peter Norvig and Erik Demaine, he argues that learning algorithms accelerates programming expertise.
In summary, the author’s journey illustrates a dialectic progression: initial hype about algorithms, later dismissal, and finally a renewed appreciation of their practical importance.
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.
