软件工程本科生宝典
首页/四年规划/大二下学期
第 2 学年 · 第 2 学期

大二下学期学习规划

深入操作系统与数据库,明确技术方向,把第一个前后端项目做成型

本学期主题

深入操作系统与数据库,明确技术方向,把第一个前后端项目做成型

🧭总览

大二下是承上启下的关键学期,也是很多人第一次认真思考「我以后到底做哪一行」的时候。核心任务:一,学透操作系统与数据库系统原理,前者让你理解进程、线程、内存、并发、文件系统,后者让你掌握SQL、事务、索引、范式,这两门都是大厂面试的绝对重点;二,通过面向对象分析与设计(UML)学会工程化的建模思维;三,选定自己的技术方向(后端/前端/客户端/算法/测试/运维/安全),并围绕方向做出一个完整的前后端项目;四,拿到六级或进一步刷题。时间分配:操作系统25%、数据库25%、方向项目30%、英语与通识20%。目标水平:能解释进程与线程区别、能写复杂SQL并优化、能独立开发一个带数据库和接口的Web应用。常见错误:方向迟迟不定导致样样浅尝;数据库只学SQL不学事务与索引;操作系统原理与代码脱节。

📘课程安排与学习重点

共 7 门。每门课的完整学习引导(教材、网课、实践、面试考法)可在课程库中查看。

操作系统

专业核心4学分/64学时
📌 课程定位

操作系统是计算机专业的灵魂课程,它管理CPU、内存、磁盘与设备,向上为程序提供进程、线程、文件、网络等抽象。它解释了你写的每一行代码背后到底发生了什么:进程如何调度、内存如何分配、并发如何同步、死锁如何产生、文件如何读写。这门课直接决定你在大厂后端/系统方向面试中的深度。

✅ 必须掌握
  • 进程与线程的区别及状态转换
  • CPU调度算法(FCFS/SJF/时间片/多级反馈)
  • 进程同步、信号量与PV操作
  • 死锁的四个必要条件与银行家算法
  • 虚拟内存、分页与页面置换算法
  • 文件系统结构与磁盘调度
✍️ 怎么学(含目标分数与刷题量)

教材用汤小丹《计算机操作系统》或《操作系统导论》(OSTEP)。重点:进程与线程、CPU调度、进程同步与信号量、死锁、内存管理与虚拟内存、分页分段、文件系统、IO管理。强烈建议配合MIT 6.S081或OSTEP做实验,把概念落到代码上。目标:85分以上,能清晰解释进程线程区别、虚拟内存原理、死锁四个条件。

📖 推荐教材
操作系统概念(Silberschatz)
操作系统导论(OSTEP)(Remzi)
计算机操作系统(汤小丹)
🔗 在线资源
中国大学MOOC(搜索「操作系统」,推荐哈工大或南大课程)
CS自学指南(操作系统实验与体系课推荐)

数据库系统原理

专业核心4学分/64学时
📌 课程定位

数据库是几乎所有应用系统的数据底座,是现代软件开发者的必备技能。这门课讲SQL、关系模型、范式设计、事务ACID、并发控制、索引与查询优化。学透它,你才能写出高性能的数据访问代码,也是后端、数据、算法岗位面试的重点。

✅ 必须掌握
  • SQL增删改查与多表连接、子查询、聚合
  • E-R图与关系规范化(范式)
  • 事务ACID与隔离级别
  • 并发控制与封锁协议
  • 索引原理(B+树)与查询优化基础
✍️ 怎么学(含目标分数与刷题量)

教材用王珊《数据库系统概论》(国内主流)或《数据库系统概念》(Silberschatz)。重点:关系模型与SQL、E-R图与范式(1NF到BCNF)、事务与ACID、并发控制与锁、索引(B+树)、查询优化。务必动手:用MySQL建库建表、写复杂查询、加索引并观察执行计划。目标85分以上,能设计一个规范的数据库并写多表联查。

📖 推荐教材
数据库系统概论(王珊、萨师煊)
数据库系统概念(Silberschatz)
🔗 在线资源
MySQL官方文档(查SQL语法与函数)
菜鸟教程SQL(SQL在线练习与速查)

面向对象分析与设计(UML)

专业基础2学分/32学时
📌 课程定位

这门课教你用工程化方法把需求变成设计:用例图、类图、时序图、状态图等UML建模工具,以及设计模式初步。它连接了编程与软件工程,让你从「会写代码」走向「会设计系统」。

✅ 必须掌握
  • 用例图、类图、时序图、活动图
  • SOLID面向对象设计原则
  • 常见设计模式(单例/工厂/观察者/策略)
✍️ 怎么学(含目标分数与刷题量)

教材用《UML和模式应用》或《大话设计模式》。重点:UML常用图的画法与用途、SOLID设计原则、常见设计模式(单例、工厂、观察者、策略)。用StarUML或PlantUML动手画图。目标:能为一个中小型系统画出完整的用例图、类图与时序图,80分以上。

📖 推荐教材
大话设计模式(程杰)
UML和模式应用(Craig Larman)
🔗 在线资源
菜鸟教程(设计模式系列文章速览)

软件工程导论

专业核心3学分/48学时
📌 课程定位

软件工程研究如何以工程化、可管理的方式开发与维护软件,涵盖需求、设计、编码、测试、维护全生命周期,以及敏捷、Scrum、版本管理、质量保证等工程实践。它是你从「编程爱好者」升级为「职业工程师」的分水岭。

✅ 必须掌握
  • 软件开发生命周期与常见模型(瀑布/迭代/敏捷)
  • 需求分析与需求规格说明书
  • 软件设计与模块化
  • 敏捷与Scrum基本流程
  • 软件测试与质量保证概述
✍️ 怎么学(含目标分数与刷题量)

教材用张海藩《软件工程导论》或《软件工程:实践者的研究方法》。重点:软件生命周期、需求工程、结构化与面向对象方法、敏捷开发、团队协作与Git流程、软件质量与测试概述。建议把课程知识直接应用到你本学期的项目上(写需求文档、画图、用Git协作)。目标80分以上。

📖 推荐教材
软件工程导论(张海藩)
人月神话(Fred Brooks)
🔗 在线资源
Git官方中文电子书(团队协作必备的Git系统学习)

Linux操作系统与Shell

专业基础2学分/32学时
📌 课程定位

企业级服务器绝大多数运行Linux,掌握Linux命令、Shell脚本、权限管理、进程管理是后端、运维、云原生方向的硬技能,也是很多项目部署的基础。

✅ 必须掌握
  • 常用Linux命令与管道重定向
  • 文件权限与用户管理
  • 进程、作业与系统监控
  • Shell脚本基础
  • 软件包管理与服务部署
✍️ 怎么学(含目标分数与刷题量)

重点:文件与权限、常用命令(grep/find/awk/sed)、进程与作业管理、软件包管理、Shell脚本编写、SSH与远程操作。在虚拟机或WSL里实操。建议完成《计算机教育中缺失的一课》全部内容。目标:能独立在Linux上部署一个简单服务。

📖 推荐教材
鸟哥的Linux私房菜(鸟哥)
🔗 在线资源
计算机教育中缺失的一课(命令行与Shell完整教程)
菜鸟教程Linux(Linux命令速查)

大学英语(四)

通识2学分/32学时
📌 课程定位

大学英语最后一门,之后英语要靠自学维持。目标是六级通过,并把英文技术阅读变成习惯,为后续读文档、看论文做储备。

✅ 必须掌握
  • 六级词汇与题型
  • 英文技术文档阅读习惯
✍️ 怎么学(含目标分数与刷题量)

备考六级(若未过),坚持每天读一篇英文技术文章。课内80分以上即可。建议订阅一些英文技术博客,把英语融进技术学习里。

📖 推荐教材
六级真题(星火/华研)
🔗 在线资源
MDN Web Docs(练习读英文技术文档)

毛泽东思想和中国特色社会主义理论体系概论

通识3学分/48学时
📌 课程定位

思想政治理论必修课,毕业硬性学分,投入产出比低,目标是稳妥通过。

✅ 必须掌握
  • 课程要点(应试用)
✍️ 怎么学(含目标分数与刷题量)

正常出勤,考前一周背重点。期末60到85分都正常。别额外投入,时间给操作系统和数据库。

📖 推荐教材
—
🔗 在线资源
—

💪本学期必须练出的技能

🎯

SQL与数据库设计

目标:能设计规范的数据库并写出复杂多表查询

用MySQL实际建库建表,完成一个电商或博客的数据库设计,写20条以上复杂SQL

🎯

后端开发入门

目标:能用Java(Spring Boot)或Python(Flask/Django)写出REST接口

跟一个完整教程做一个带增删改查的API服务,用Postman测试

🎯

技术方向选择

目标:明确自己的主攻方向并锁定学习路线

分别花1周试水后端、前端、算法三个方向的入门内容,结合兴趣与就业做出选择

🛠️项目实战(写进简历的素材)

🛠️

个人博客系统(前后端分离)

时间:第6周到第17周

这是你第一个完整的前后端分离项目:后端用Spring Boot或Flask提供REST接口(文章增删改查、分类、评论),数据库用MySQL并设计规范的表结构(含外键与索引),前端用Vue或原生JS调用接口渲染页面,实现登录鉴权与文章发布。验收标准:功能完整(注册登录、发文章、改文章、看评论),接口有统一返回格式,数据库设计符合第三范式,项目前后端代码分别托管并写清README和部署说明。这个项目会成为你简历上第一个正经的工程作品。

Java/Spring BootMySQLVueGit
🛠️

数据库课程设计:学生选课/图书借阅系统

时间:第5周到第12周

围绕数据库课程做设计:完成需求分析、E-R图、关系模式规范化(至少到3NF)、建表建索引、编写存储过程与触发器、写不少于20条的各类SQL查询(含多表连接、子查询、聚合、视图)。验收标准:数据库设计文档完整、SQL能正确执行、能解释每条索引的作用、能演示事务回滚。它直接对接数据库课程成绩,也是面试中数据库部分的最佳谈资。

MySQLSQL

⏱️时间分配建议

操作系统22%
数据库系统原理20%
方向项目与后端开发28%
软件工程与UML10%
Linux与英语12%
通识与休息8%

每周课外投入30到36小时。操作系统与数据库各占约20%,是本学期两座大山,建议各自固定每周3个晚上的学习时段,并配合上机实验。方向项目占约30%,第6周起每周至少投入8小时推进(周末整块时间为主)。Linux与英语、通识占约15%。刷题的节奏可以降到大二上的一半(每天1题维持手感),把精力更多放到核心课与项目上。第12周前完成方向选择,之后所有项目与学习都围绕选定方向展开。每周日晚复盘:核心课有没有落下、项目有没有推进、方向是否坚定。

💎本学期推荐资源

📖 书单

操作系统导论(OSTEP)Remzi

免费在线,操作系统最佳实践教材

数据库系统概念Silberschatz

数据库理论权威

鸟哥的Linux私房菜鸟哥

Linux入门必备

大话设计模式程杰

设计模式中文通俗读物

🎬 视频课程

操作系统中国大学MOOC / 哔哩哔哩
数据库系统原理中国大学MOOC
Spring Boot实战哔哩哔哩 / 尚硅谷
MIT 6.S081 操作系统实验MIT 公开课

🌐 网站与文档

系统学习核心课

SQL/Linux/设计模式速查

校招题库与面经,提前了解就业要求

团队协作与版本控制

🐙 GitHub 仓库

完整的计算机自学路线参考

体系课与实验推荐

✅学期末检查清单

✔️ 做到了就算合格
  • 操作系统能清晰解释进程线程、虚拟内存、死锁、调度算法
  • 数据库能独立设计符合3NF的库并写出复杂多表查询
  • 完成一个前后端分离的博客系统并部署上线
  • 明确自己的技术方向并制定了对应的学习路线
  • 掌握Linux常用命令并能在服务器部署应用
  • 六级通过或英文技术文档能读懂大意
⚠️ 常见坑
  • {'坑': '技术方向迟迟不定,什么都学一点都学不深', '破解': '第12周前必须做出选择,先用1周试水各方向再决定,选定后专注投入'}
  • {'坑': '数据库只学SQL语法,不懂事务、索引与优化', '破解': '动手加索引看执行计划、手动触发事务回滚,把原理和实操绑在一起'}
  • {'坑': '操作系统原理与代码完全脱节,学完就忘', '破解': '配合MIT 6.S081或OSTEP做实验,把进程、内存、文件系统用代码实现一遍'}
  • {'坑': '项目做得太散,没有一个能讲清楚的', '破解': '集中把1到2个项目做深做完整,能讲清架构、难点与解决方案,胜过十个半成品'}