作为一名计算机系的学生,如何真正进入计算机的专业世界?

这个问题来自知乎:http://www.zhihu.com/question/20790016


问:以前玩计算机不叫玩计算机,就是玩电脑,用别人做出来的东西。现在自己要学计算机了,开始看关于计算机的专业东西,只觉得一大堆专业名词扑面而来,计算机有许许多多的方面,这让我很迷茫,怎么样进入一个以前不知道的世界。下学期要学C语言,可是直接学习我并不喜欢,也许该看一些计算机发展史?类似《浪潮之巅》?嗯…想全面了解这个庞大的计算机体系吧。又或许是想成为专业人员该怎么做?我想抓住一种感觉。


============

@邹欣 老师在微博上分享了一篇学生对《现代程序设计》 的反馈
全文如下:
学生对《现代程序设计》 的反馈
2014年5月18日 09:34

我上学期在北航开了 现代程序设计 这门课,教学大纲在这里: 现代程序设计 (课程设计中, 征求意见稿)

一开始听课的人挺多,但是听到我对作业的安排之后,一多半人都退课了。坚持下来的同学对这门课的反馈也有褒有贬。这倒没啥,这是我第一次讲这个内容,那就吸取教训,继续探索吧。 但是我相信真正花时间的同学还是能看到效果的。只不过由于时间点的不同,效果和反馈会大不一样。 我历来建议对老师的教学评估要加强,

1)课程结束之后

2) 毕业之前

3) 毕业五年后

前几天收到一个同学的邮件,谈了他对这门课的反馈。

-------------------------------------------------

Subject: 感谢邹老师去年开设的现代程序设计

尊敬的邹老师:

您好,这封信既是我对课程的体会,也想借此表达我对您的感谢。如果今后您再次登上讲台,希望您能把我的感受分享给您的学生。

我现在刚在MSRA入职intern,在申请的过程中对我帮助最大的,就是您主讲的现代程序设计课程每周一个Project,我一开始很不能理解:为什么只有2学分的选修课,要有这么重的工作量。虽然充满抱怨,但是我觉得既然选了,就每个都认真的完成吧。于是就出现了如下情景:每周上完课,开始抱怨作业量大,然后狂查资料、写代码。每周工作量在25小时左右,写完还会再抱怨一番。最后结课,由于我每次作业都很认真,分数全班第1,不过我当时还是觉得时间花费很多。

当时的目光真的是太短浅了,学分少+作业量大=这个课不该选现在看来,现代程序设计课程上学到的东西,比我大部分必修课程学到的多的多的多。而且有用的多!我数据库的大作业,拿JavaScript+Python写的。这个框架是我在做现代程序设计最后一个可视化动归学到的;我编译大作业,使用C++11,极大地简化了代码量。而C++11是我在现代程序设计上接触到的。网络实验编程我使用C#的SuperSocket,这个是我在编写黄金数对战平台使用的!就连我最近准备简历,项目经验一栏,有4成的项目来自于现代程序设计这一门课!

我想对其他的同学说,邹老师的课程,可能不会涉及到很具体的知识点,但是他能开阔你的视野;可能会有很重的作业量,但这个不能用应试教育那种高负担,高学分的错误思维衡量,这些工作量对个人能力的提高至关重要!

总之十分感谢邹老师去年能在北航开设的课程。希望以后有幸还能上您的课!

祝好,

。。。

我写这封邮件的目的就是希望老师您以后开课的时候可以分享给同学。因为上次课程很多同学第三节课觉得任务量太大就退课了,而且很多同学,包括我当时都抱怨任务重。

现在想想,感觉到任务重,要花很多时间,这证明我们真正的在学习知识更重要的是接触到普通本科课程不涉及的前沿领域。希望我的这封邮件能帮助今后的同学,让他们从一开始就能意识到,这门课程是真正能提升技能的课程,希望他们不会再繁重的任务面前退缩,反而能有比我更积极地心态去迎接各种挑战!

最后祝愿邹老师工作顺利~十分感谢您的课程

=================================================================


我在有哪些可以提高程序员技术档次的书或博客? 如何突破环境的限制从周围人中脱颖而出? 综合介绍了邹欣老师的博客、书,以及北航的同学们是如何进行专业学习的。相信有心者自会顺藤摸瓜。


邹老师的教学博客中,这一篇尤其推荐同学们看看:

现代软件工程 习而学的软件工程教育

从我个人的学习和教学经历来看, 我认为给学生具体的, 能实践的, 能马上看到因果关系的教材和练习, 是激发学生兴趣, 好奇心, 求知欲的好方法。 我就是这样学习编程和软件开发的 (见下面的注解 三文鱼模型)。 所以我对 “习而学”的方法很有好感。软件工程有理论的部分, 有工程的部分; 有艺术的部分, 有手艺的部分;  在同学们达到理论/艺术的阶段之前, 大量的练习是必须的
大家不妨看看这个 陶艺课的故事 ,把学生分成两组,一组以出产的陶罐的 量来评分,一组不要求数量, 纯粹 以质评分。一个学期后,真正好的陶艺作品反而是出现在那以量评分的组里。各种道理值得大家思考。——邹欣
邹老师在这篇博客里,用一个中国211大学的软件学院的本科教学计划为基础 (此大学以工科见长, 印象中此学校水平应该在中国大陆排十名左右), 做了如下修改: 
  1. 把基础实践课放到大一, 一开始就要动手.
  2. 所有的课程的上机时间都加倍, 相应减少授课时间。老师在讲台上反复讲 “数组从0开始…”,不如在电脑上试试。
  3. 把 <计算机新技术与产业发展> 放到大一上学期, 并用浪潮之巅 等反映行业变化, 生动活泼的著作作为教材 (原教学计划无教材)。 希望能让大一的同学知道 “学计算机软件能做什么?” “计算机行业是怎样一个有意思的行业”。(大三同学的阅读体会:近几年看的最好的一本书 
  4. 把基本的测试技术作为 “软件测试技术入门”, 放到大一。 其余的部分作为 <高级软件测试技术
  5. 针对软件工程的毕业生职业发展, 调整了两门课程的 必修/选修性质。 (例如: 把 <形式化方法> 变为选修课, 把软件项目管理, 人机交互技术变成必修课 )
  6. 大部分数学和物理课都推迟一到两个学年上课, 这样到了大三同学们可以根据实践的体会, 更好地学习。 另外有同学在大三时决定考研, 他们正好可以好好学习高等代数, 争取考个好分数。如果是大一就学了, 那大四都忘了, 还要从头学一遍, 浪费时间。 离散数学对于计算机软件专业的学习还是很有用的, 仍然保持在第一学期。
  7. 专业选修课放到大二下学期 - 大四上学期。
  8. 在软件工程课中, 强调团队合作 (见讲义) , 在其它编程语言课程中适当引入结对编程, 代码复审等方法。 [注4]
  9. 对学生学习编程语言有明确代码量的要求. (每种语言 3000 行以上. 程序行数不包括空行, 注释行, 单字符行)。
  10. 对学生要有明确的实训/实习要求, 要到高水平的企业去, 而不是去低水平的企业混日子。 可以在短学期安排, 学生也可以自行安排。 [注3]
  11. 争取所有学生能用主流程序设计语言 (C, C++, Java, C#, 网页前端语言 JS, php, 基本数据库, 基本文件系统) 写实用的软件。
  12. 要求所有学生在入学时就建立一个自己的专业博客, 记载自己的作业, 专业上的成长与体会, 毕业找工作时展现这个博客即可。
  13. 教学资源的建设, 老师和学生一起, 持续地把关于这门课的课件/资料/问答 都汇集起来形成结构化的wiki.
邹老师在博客中给出了几个表:表一是所有 专业必修课的安排 ;表二是 专业选修课的安排  (课程是学校提供的);表三是 数学物理课程的安排
==============

光是看到了这些信息,多半还不够。 如果老师不给力,同学不给力,这个时候该怎么办 呢——
推荐大家看看刘未鹏写的 怎样花两年时间去面试一个人
大家也可以了解这样的网络公开课: 计算机专业课程汇总 (网易云课堂)
希望这里的故事也能不断给你打气,让你在困境中能够坚持,相信 自助者天助
来吧,IT小小鸟(持续不定期更新)

你可能感兴趣的:(09.成长之路)