Learning Plan and Direction for C/C++
There are 10 types of people in the world: those who understand binary and those who don’t.
# Learning Plan and Direction:
Choosing a more challenging, higher-threshold C++ path means fewer available positions but a wider variety of directions.
Career Options:
- Business-oriented roles: Backend, client-side, game development, audio/video development
- Low-level, high-performance roles: Operating systems, databases, network libraries, caching pools
- Broad directions: Artificial intelligence, big data, network security
# Game Related:
Rendering Pipeline
: Learn how to leverage graphics hardware to render images, including lighting, shadows, textures, and materials.
OpenGL, DirectX, Vulkan
: Understanding these graphics APIs helps you learn how to communicate with hardware for rendering.
3D Models and Animation
: Covers handling 3D models, skeletal animations, and physics simulations.
Shader Programming
: Learn to write shaders on the GPU using GLSL, HLSL, etc.
- A game engine requires efficient concurrency to support multi-core CPU architectures.
Use multi-threading to manage various tasks such as rendering, physics simulations, and AI.
Collision Detection
: Understand how objects collide and interact in 3D space.
Rigid Body Physics
: Learn to simulate movement, rotation, velocity, and acceleration of solid objects.
Soft Body Physics
: Tackle more complex simulations (e.g., cloth, fluids).
Linear Algebra
: Matrices, vectors, quaternions, and transformations—fundamental for graphics and physics engines.
3D Spatial Understanding
: Managing coordinate systems, rotations, scaling, and other transformations in three-dimensional space.
Numerical Computation and Optimization
: Ensure the engine runs efficiently by addressing potential performance bottlenecks.
(All of this is more of a future consideration—game development is an interest, not part of the main career plan.)
# Sophomore Second Semester and Summer Study Plan
Learning Content | Time Spent | Completion Level |
---|---|---|
C语言:Mooc 翁恺 | 2025.3 - current | in progress |
CS50 | 2025.3 - current | in progress |
C primer plus | 2025.3 - current | in progress |
C程序设计进阶 | ||
数据结构:Mooc 陈越 | ||
大话数据结构 | ||
数据结构与算法分析:C语言描述 | ||
数据结构刷题 | 2025.3 - current | |
C++看b站播放前三网课 | ||
C++ Primer Plus | ||
C++ 网络编程 | ||
尹圣雨《TCP/IP 网络编程》 | ||
菜鸟教程 socket api | ||
熟悉MySQL基础(视频见下方) | ||
《mysql必知必会》 | ||
Linux常用操作 | ||
《鸟哥的linux私房菜》 | ||
《Unix网络编程》 |
笔记
Data Structure Exercises:For Beginners洛谷
,Refer to the problem list here (opens new window)
Purpose of Solving Problems:
- To participate in competitions; the most recognized ones are algorithm competitions.
- Preparation for mid- to large-scale company interviews.
菜鸟教程:网络聊天室/文件传输系统 demo尝试,之后开始看《unix网络编程》
- 实现简易的聊天室系统:使用多线程,学习并发控制,同步
MySQL:DDL、DQL、DML以及独立解决数据库环境问题
# Junior First Semester Plan
Learning Content | Time Spent | Completion Level |
---|---|---|
Github Projects(one to two) | ||
操作系统 哈工大 李治军 | ||
《操作系统导论》 | ||
x86汇编 王爽 《汇编语言》 | ||
Mooc 计算机网络 李全龙 | ||
《计算机网络:自顶向下方法》 | ||
2月做简历,3-5月投递(预期) | ||
Intern |
笔记
Github项目:找C++项目(语言限定),star>5000GitHub Project Search Tutorial (opens new window)
- 相对来说,Websever烂大街一些,相关的开源项目多一些
- C++中的后端大部分技术,包括网络编程,linux,多线程,其他方向也可以用得到
- 项目举例:轻量级HTTP服务器 (opens new window)
复线或者优化核心模块,面试的时候说得出项目结构,实现过程,所用技术就可以
操作系统 哈工大 李治军 (opens new window)
- 自己做一个OS、compiler
- MIT6.828 MIT6.824 Stanford144跟着做lab
操作系统项目:
- 进程调度:实现基本的 进程调度算法,处理进程状态的转换和调度
- 内存管理:实现 虚拟内存、分页和分段管理,并设计内存回收和页面置换算法
- 文件系统:实现文件存储、读写、权限管理等基本功能
- 比如写数据库:设计简单的
查询处理
和事务管理
系统。实现基本的存储引擎
,如支持B+,树索引,哈希索引
计算机网络 李全龙 Mooc (opens new window)
- 实现网络库