Fundamentals 19 min read

My Journey Through Data Structures and Algorithms: Lessons, Books, and Real-World Projects

From a careless college student to a seasoned developer, the author chronicles a seven‑year odyssey of learning data structures and algorithms, sharing book recommendations, personal projects, internship experiences, and hard‑won insights on why solid algorithmic foundations are essential for modern software engineering.

21CTO
21CTO
21CTO
My Journey Through Data Structures and Algorithms: Lessons, Books, and Real-World Projects

Learning Summary

I first encountered data structures in a sophomore course, but I ignored it until junior year when job hunting forced me to realize my lack of programming knowledge. I devised a five‑year‑style reading plan covering C basics, data structures, and computer networks.

Books and Resources

Data Structures and Algorithm Analysis – C Language Description became my first textbook; I marked it heavily, copied code by hand, and drew algorithm states. The book’s example of the maximum sub‑sequence problem illustrated complexity reductions from O(N³) to O(N).

Algorithm Design and Analysis (by Han Jun) reinforced concepts such as divide‑and‑conquer, dynamic programming, and backtracking.

Algorithm Introduction emphasized creative algorithm design rather than cataloguing existing algorithms.

Elements of Programming offered fast, low‑level C implementations, while C Interfaces and Implementation helped me improve C coding for interviews (e.g., implementing stof).

Algorithm Design Manual , Programming Pearls , and The Science of Programming provided practical problem‑solving techniques and correctness proofs.

Internship and Early Projects

During a Microsoft Asia Research internship I built a small project, faced a failed Baidu interview (could not implement stof), and then focused on reading more books.

At Baidu I realized many interview tasks required writing C code on paper, prompting me to study Int16 and Int64 indexing techniques for a custom pinyin‑to‑Chinese lookup library, achieving 50× speed over the official Microsoft library.

Advanced Projects

Implemented an LL(k) parser for T‑SQL stored procedures to generate block‑coverage HTML reports.

Created a pinyin index for a Windows Phone contacts app, using binary packing and bit‑operations to achieve sub‑second lookup for thousands of entries.

Replaced a naïve linear search with a trie‑based multiple‑string matcher, improving matching speed by over 90×.

Developed a fast pagination algorithm for an e‑book reader based on simulated annealing.

Reflections on Algorithms

I oscillated between believing algorithms were essential and dismissing them as unnecessary. Real‑world projects eventually proved that solid algorithmic knowledge is the most cost‑effective way to overcome performance bottlenecks.

Peter Norvig’s analogy and Erik Demaine’s advice highlight that learning algorithms dramatically accelerates becoming a good programmer.

Conclusion

Algorithms are not required for simple “code monkey” tasks, but they are indispensable for developers who want to solve complex problems efficiently and advance their careers.

Author: Lucida (@peng_gong) Original: http://zh.lucida.me/blog/on-learning-algorithms/
Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

Software EngineeringData StructuresAlgorithmslearningBooks
21CTO
Written by

21CTO

21CTO (21CTO.com) offers developers community, training, and services, making it your go‑to learning and service platform.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.