首页 » 漏洞 » 计算机科学专业的工程基础课

计算机科学专业的工程基础课

 

近些年,随着大数据的兴起,人工智能的复苏,科班出身的应届生,优秀的本来就挺少,十个里面有八个在求职的时候都奔着「算法工程师」的职位去。也难怪我们这些从「研发工程师」一路走来的人,每年的校招时节,都感叹靠谱的做工程的应届生越来越难找了。

与其从众地去竞争听起来高大上的「算法工程师」、「数据科学家」岗位,也许对于有良好工程基础的学生来说,在「研发工程师」的竞争中更容易脱颖而出,在后续的职业发展上也更加顺利。

那么我们说的良好的工程基础,是指的什么东西?之前有研一的小朋友问我,你们校招的时候都要什么样的人?我说要基础好的,聪明的。其实关键不在于用人单位要什么样的人,招聘不是考试,没有及格线,而是候选人要让人感觉到一种「我在这个方面比绝大部分人都优秀,在那个方面也很有潜力,虽然我现在实战经验不足,但是只要给我一点点时间给我一点点机会我就能变得很厉害」的气场。

人人都是读了四年本科,甚至外加两到三年研究生,是什么使得某些人在技术求职的时候比其他同学更有优势?一个重要的方面是「工程素养」。

工程素养这种东西,其实跟套路是一样的,可以靠多学、多看、多想、多做培养出来。计算机科学专业本科阶段有几门重要的课程,可以培养浩然之气,当然,有些课程需要注意学习方法。

第一课,高级语言。

大一第一学期,第一门正经的专业课,应该就是高级语言,教授的十有八九是 C++。其实学 C++ 来入门挺好的,可惜很多人被带到沟里去了。学 C++ 如果仅仅是学了个语法,那就白学这一学期了,学 C++ 学的是编程范式,从 C 的面向过程,到 C with class 的面向对象,再到 STL 的泛型……掌握了范式,在往后的日子里才可以轻松学会其他的语言,一通百通。

推荐教材《C++ Primer》,课外读物《笨办法学 Python》。

第二课,数据结构。

大一学会了高级语言,大二就要学习用高级语言去表达一些现实世界中存在的关系,比如队列、表、栈、树、图、字典……除了大量练习,没有捷径。

推荐教材《数据结构与算法分析:C 语言描述》。

第三课,计算机组成原理。

重点掌握输入输出系统,存储器,中央处理器等章节。

推荐教材《计算机组成原理》、《深入理解计算机系统》。

第四课,操作系统。

重点掌握进程与线程、死锁。

推荐教材《现代操作系统》、《计算机的心智:操作系统之哲学原理》

第五课,数据库系统。

重点掌握关系模型、范式、事务管理、索引与散列。

推荐教材《数据库系统概念》。

第六课,计算机网络。

重点掌握 TCP 状态机。

推荐教材《计算机网络:自顶向下方法》。

计算机科学的本科教育,除了这几门课程之外,还有大量的课程帮助学生尽可能地接触更多的领域,比如人工智能、编译原理、体系结构等等,都是很好的。即使没有接受过大学的计算机科学教育,如果认真自学了上述课程,也能在工程素养上,超过绝大部分科班出身的应届生了。

毕竟绝大部分计算机系的毕业生,都没有认真学过这几门课,即便他们都通过了期末考试 ^_^

原文链接:计算机科学专业的工程基础课,转载请注明来源!

0