Study Plan for Tongji Fundamental Software Center Students
Recently, the teacher asked me to write a study plan for the younger students at the Fundamental Software Center. After much thought, I came up with the following. It’s based on my own experiences and lessons learned over the past few years. I hope it will be helpful.
1. Programming Language Foundation
C++ is a must. It’s the foundation for system-level programming. Recommended reading order:
- “The C++ Programming Language” or “C++ Primer”
- “Effective C++” and “More Effective C++”
- “Inside the C++ Object Model”
- “STL Source Code Analysis”
2. Operating Systems
- “Operating Systems: Design and Implementation” (Tanenbaum) — with MINIX source code
- “Understanding the Linux Kernel”
- For Windows CE developers, read the Windows CE documentation and source code
3. Data Structures and Algorithms
- “Data Structures and Algorithm Analysis in C++”
- “Introduction to Algorithms” (CLRS)
4. Software Engineering
- “The Mythical Man-Month”
- “Design Patterns” (GoF)
- “Refactoring”
5. Specific Technical Areas
Based on research direction:
- For embedded: study ARM architecture, Windows CE/Linux embedded development
- For compilers: study “Compilers: Principles, Techniques, and Tools” (Dragon Book)
- For networking: study “Computer Networks” (Tanenbaum) and TCP/IP
Conclusion
Technology changes fast. What’s important is building a solid foundation and developing the ability to learn quickly. Don’t limit yourself to one narrow area. Keep a broad perspective and deep expertise in at least one area (T-shaped skills).
Good luck, everyone.