|
146 | 146 |
|
147 | 147 | ## 计算机网络
|
148 | 148 |
|
| 149 | +计算机网络是一门系统性比较强的计算机专业课,各大名校的计算机网络课程打磨的应该都比较成熟。 |
| 150 | + |
| 151 | +要想学好计算机网络,首先要了解的就是 OSI 七层模型或 TCP/IP 五层模型,即应用层(应用层、表示层、会话层)、传输层、网络层、数据链路层、物理层。 |
| 152 | + |
| 153 | + |
| 154 | + |
149 | 155 | 关于这门课,首先强烈推荐参考书是**机械工业出版社的《计算机网络——自顶向下方法》**。该书目录清晰,按照 TCP/IP 五层模型逐层讲解,对每层涉及的技术都展开了详细讨论,基本上高校里开设的课程的教学大纲就是这本书的目录了。
|
150 | 156 |
|
151 | 157 | 
|
@@ -185,10 +191,69 @@ Github 上就有一些名校的计算机网络试验/Project:
|
185 | 191 |
|
186 | 192 | ## 数据库
|
187 | 193 |
|
| 194 | +数据库系统这门课在程序员的职业规划中也是非常重要的一门课,甚至有些信息管理的专业的也要开设这门课。说这门课重要,是因为对于程序员的发展来说,一方面关系数据库系统、SQL 语言以及数据库的三段设计(概念设计、逻辑设计和物理设计)都是开发数据库应用程序的必备技能,**通常在数据库应用开发岗位的面试中,数据库的设计是面试官青睐的考点,如何能根据需求分析并设计出完善的数据库系统,是程序员的必备技能,\**设计好了完善的数据库系统之后,再用 SQL 语言等工具对其进行实现,那么这些其实就是个人的编码能力了。另一方面,数据库中的查询处理、查询优化、并发控制、事务管理、日志管理等内容,都是数据库中稍微进阶一点的技能,对于一些对岗位要求比较高的,这些技术同样要求熟练掌握。\** 对一些查询优化的等数据库底层实现的内容,也是新型数据库开发的前置基础技能,对于一些研究型人才来说,也是非常重要的。** |
| 195 | + |
| 196 | +数据库系统与其他计算机专业课一样,知识体系非常清晰,而且他有一个非常突出的特点,就是实际与理论相结合。SQL 语言,数据库设计等,这些都属于实践应用部分,而对于一些范式定义,两段锁协议并发控制等,这些就偏向于理论多一些。要想学好数据库系统,建议大家: |
| 197 | + |
| 198 | +1. **在课程的前期阶段,熟练掌握 SQL 语言的应用,同时不要忘了训练关系代数的应用能力。** 关系代数虽然在数据库的实现上作用较小,但在学习阶段,结合关系代数和 SQL 语言学习,可以更加有体系地理清 SQL 语言各个子句之间的逻辑关系,有助于 SQL 语言的学习和记忆。关系代数的学习更像是建立一种思维,这种思维到了数据库底层实现学习环节也是非常有用的。 |
| 199 | +2. **在课程的中期阶段,熟练掌握 ER 图的应用,并强化数据库设计中的理论部分。** ER 图的熟练应用可以更加轻松地设计出关系数据库模式,而理论部分同样不能忽视,设计理论的运用决定了数据库的正确性和健壮性。 |
| 200 | +3. 而在课程的后期阶段,主要就是以理论居多,而且这些理论并不容易能找到配套的实验练习。**这里再次强调,凡是理论知识的学习,尽量要结合图解的方式**。 |
| 201 | + |
| 202 | +教材的话,强烈推荐 **[《数据库系统概念》](https://book.douban.com/subject/10548379/)** ,这本书涵盖了数据库系统的全套概念,知识体系清晰,是学习数据库系统非常经典的教材!不是参考书! |
| 203 | + |
| 204 | + |
| 205 | + |
188 | 206 |
|
189 | 207 |
|
190 | 208 | [如何开发一个简单的数据库](https://cstack.github.io/db_tutorial/)
|
191 | 209 |
|
| 210 | + |
| 211 | + |
| 212 | +# 通用课 |
| 213 | + |
| 214 | +通用课的部分我想分为两大部分来介绍,主要就是数学和英语,一般在大一和大二两学年就可以全部修完,大二大三逐渐接触专业课。通用课作为许多高中生升入大学的第一门课,算是高中阶段到本科阶段的一个过渡,从职业生涯重要性上来说,远不及专业课重要,但是在本科阶段的学习生活规划中,有着非常重要的地位。由于通用课的课程多,学分重,占据了本科阶段绩点的主要部分,影响到学生在前两年的专业排名,也影响到大三结束时的推免资格分配,也就是保研。而从升学角度来看,对于攻读研究生和博士生的小伙伴来说,数学和英语这两大基础课,还是十分有用的。 |
| 215 | + |
| 216 | +## 数学 |
| 217 | + |
| 218 | +### 微积分(高等数学) |
| 219 | + |
| 220 | +微积分,即传说中的高数,成为了无数新大一心中的痛。但好在,大学的课程考核没那么严格,期末想要拿高分,也不至于像高中那样刷题刷的那么狠。微积分对于计算机专业学生的重要性,主要体现在计算机图形学中的函数变换,机器学习中的梯度算法,信号处理等领域。 |
| 221 | + |
| 222 | +微积分的知识体系包括微分和积分两部分,一般会先学微分,再学积分,也有的学校把高数分为两个学期。微分就是高中的导数的升级版,对于大一萌新来说还算比较友好。积分恰好是微分的逆运算,思想上对大一萌新来说比较新,一时半会可能接受不了。不过这门课所有的高校都有开设,而且大部分的名校都有配套的网课,教材也都打磨的非常出色,结合网课和教材的“啃书”学习模式,这门课一定不会落下。 |
| 223 | + |
| 224 | +### 线性代数(高等代数) |
| 225 | + |
| 226 | +线性代数的思维模式就更加复杂了一些,它定义了一个全新的数学世界,所有的符号、定理都是全新的,唯一能尝试的去理解的方式,大概就是用几何的方式去理解线性代数了。由于线性代数和几何学有着密不可分的关系,比如空间变换的理论支撑就是线性代数,因此,网上有着各种“可视化学习线性代数”的学习资源,帮助理解线性代数的意义,有助于公式的记忆。 |
| 227 | + |
| 228 | +[](https://camo.githubusercontent.com/462f97618be563050363e4110f7c7b408fc5b4308cd4a8f7f43139dd04e1d769/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f6a61766167756964652d746563682f626c6f672d696d616765732f2545382541452541312545372541452539372545362539432542412545342542382539332545342542382539412545352541442541362545342542392541302545362538432538372545352538442539372f696d6167652d32303230313031323230303735323031362e706e67) |
| 229 | + |
| 230 | +### 概率论与数理统计 |
| 231 | + |
| 232 | +对于计算机专业的小伙伴来说,这门课可能是概率论更有用一点,而非数理统计。可能某些学校只开设概率论课程,也可能数理统计也教,但仅仅是皮毛。概率论的学习路线和微积分相似,就是一个个公式辅以实例,不像线性代数那么抽象,比较贴近生活。在现在的就业形势下,概率论与数理统计专业的学生,应该是数学专业最好就业的了,他们通常到岗位上会做一些数据分析的工作,因此,**这门课程确实是数据分析的重要前置课程,概率论在机器学习中的重要性也就不言而喻了。** |
| 233 | + |
| 234 | +### 离散数学(集合论、图论、近世代数等) |
| 235 | + |
| 236 | +离散数学是计算机专业的专属数学,但实际上对于本科毕业找工作的小伙伴来说,离散数学还并没有发挥它的巨大作用。离散数学的作用主要在在图研究等领域,理论性极强,需要读研深造的小伙伴尽可能地扎实掌握。 |
| 237 | + |
| 238 | +## 英语 |
| 239 | + |
| 240 | +英语算是大学里面比较灵活的一项技能了,有的人会说,“英语学的越好,对个人发展越有利”,此话说的没错,但是对于一些有着明确发展目标的小伙伴,可能英语技能并不在他们的技能清单内。接下来的这些话只针对计算机专业的小伙伴们哦。 |
| 241 | + |
| 242 | +英语课在大学本科一般只有前两年开设,小伙伴们可以记住,**想用英语课来提升自己的英语水平的,可以打消这个念头了。** 英语水平的提高全靠自己平时的积累和练习,以及有针对性的刷题。 |
| 243 | + |
| 244 | +**英语的大学四六级一定要过。** 这是必备技能,绝大部分就业岗位都要看四六级水平的,最起码要通过的。四级比高中英语稍微难一些,一般的小伙伴可能会卡在六级上,六级需要针对性的训练一下,因为大学期间能接触英语的实在太少了,每学期一门英语课是不足以保持自己的英语水平的。对于一些来自于偏远地区,高中英语基础薄弱的,考四六级会更加吃力。建议考前集中训练一下历年真题,辅以背一下高频词汇,四六级通过只需要 425 分,这个分数线还是比较容易达到的。稍微好一点的小伙伴可能冲一下 500 分,要是能考到 600 分的话,那是非常不错的水平了,算是简历上比较有亮点的一项。 |
| 245 | + |
| 246 | +英语的雅思托福考试只限于想要出国的小伙伴,以及应聘岗位对英语能力有特殊要求的。雅思托福考试裸考不容易通过,花钱去比较靠谱的校外补课班应该是一个比较好的选择。 |
| 247 | + |
| 248 | +对于计算机专业的小伙伴来说,英语能力还是比较重要的,虽然应聘的时候不会因为没有雅思托福成绩卡人,但是你起码要能够: |
| 249 | + |
| 250 | +- **熟练使用英文界面的软件、系统等** |
| 251 | +- **对于外网的一些博客、bug 解决方案等,阅读无压力** |
| 252 | +- **熟练阅读英文文献** |
| 253 | +- **具备一定的英文论文的撰写能力** |
| 254 | + |
| 255 | +毕竟计算机语言就是字符语言,听说读写中最起码要满足**读写**这两项不过分吧。 |
| 256 | + |
192 | 257 | # Java
|
193 | 258 |
|
194 | 259 | 这篇文章推荐了大部分我所读过的优秀书籍,虽然部分可能没看完。答应我,一定要看到最后,看完之后应该不会再纠结要看什么书了。走起!!!
|
@@ -511,5 +576,27 @@ Java程序员必看!
|
511 | 576 | - **阿里巴巴 Java 开发手册** :https://github.com/alibaba/p3c
|
512 | 577 | - **Google Java 编程风格指南:** http://www.hawstein.com/posts/google-java-style.html
|
513 | 578 |
|
| 579 | +# Q&A |
| 580 | + |
| 581 | +**1.感觉学校教的都联系不到实际,我本科毕业真的能找到工作吗?** |
| 582 | + |
| 583 | +就笔者所就读的高校来说,我是相信它的培养方案是有能力培养出具有就业能力的本科毕业生的。我相信很多名校的培养方案也都不会差。如果你就读的学校不是那么出色,并且质疑自己学校的培养能力的话,建议你多到名校的网课上取取经。如果你是就读于国内名校的话,请相信的自己专业的培养方案,下限不会低。 |
| 584 | + |
| 585 | +另外,如果你的学校比较差的话,大学期间一定要尽全力让自己的简历更好看,你可以出去实习、参加一些含金量比较高的比赛、跟着老师做一些项目。 |
| 586 | + |
| 587 | +**2.学校里需要参加一些社团、学生会之类的吗?** |
| 588 | + |
| 589 | +笔者只参加过社团,并未参加过学生会。对于这个问题,我结合我所接触的人来简单回答一下。针对不同的发展定位,可以选择自己投入社团、学生会的精力。比如,你是一个技术宅,那么我想你就算加入了社团之类的团体,也收获不到自己想要的能力,其实就没有参加的必要了。如果你是一个学生干部,或者擅长和人打交道,也许毕业之后从事产品经理之类的工作,那么在学生会的经历应该是蛮锻炼你的能力的。是否要选择参加团体活动,投入多少精力,完全取决你对自己的定位如何,请把你自己放到合适的环境下培养,不必人云亦云。 |
| 590 | + |
| 591 | +**3.在大学里一定要参加竞赛比赛吗?** |
| 592 | + |
| 593 | +竞赛比赛对于学生的好处有,得奖了的话可能会获得保研加分、丰富个人简历,在应聘中拿到不错的印象分。保研加分具体涉及到的竞赛需要咨询所在学院,并非所有竞赛获奖都能加分的。 |
| 594 | + |
| 595 | +那么竞赛比赛有没有坏处呢?也会有一点吧,就是指那些能力并不算强,但仍然把大量时间花在了打比赛这上面,这其实并不是坏处,这对个人能力仍有提高,**坏处指的是因为打竞赛耽误了专业课的学习。** 这样一来,基础也没扎实,突出能力也没训练出来,捡了芝麻丢了西瓜,就不好了。 |
| 596 | + |
| 597 | +总的来说,打竞赛利大于弊,**不要低估的自己的能力而排斥参加竞赛,也不要高估自己的能力过分痴迷竞赛**。 |
| 598 | + |
| 599 | +以上是我针对本科计算机专业各个课程的倾力解读,如有不妥,请多加指正! |
| 600 | + |
514 | 601 | # PDF获取
|
515 | 602 |
|
0 commit comments