写给软件学院的本科生(转)

写给软件学院的本科生(转)

分类:【无聊】

本人今年北软研究生毕业,本科是35所示范性软院之一,在毕业之际,回顾软院的7年学习生活,很感慨,写点东西给软件学院的师弟师妹们。

今年软件工程被提升至一级学科,没有挂在计算机科学之下了,而且软件学院开始招收工程博士生了,真是可喜可贺。

我读软件学院本科的时候,软院才刚成立不久,35所示范性软院之一,那个时候想找个师兄问一问大学该怎么度过,软院第一届的师兄们都还没毕业呢,也很懵懂,咋给我经验呢。只好自己摸索着学习了。现在我都软院研究生毕业了,就让我来给大家讲讲在软件学院的本科该如何学习吧。

大学本科的教育重点是基础教育,软件学院也应该是(但实际做法可能不是)。

我觉得本科就是要学习基础知识,学软件首先需做到两点:

第一、精通一门编程语言;

第二、精通算法。

做到这两点,你本科毕业就能找到不错的工作了。对与找工作,j2ee跟.net都是锦上添花的东西,利用大三的选修课,或者大三的暑假学学,大专生都只学三个月的技术,你难道要学四年吗?切不可本末倒置,得了芝麻,丢了西瓜。

大学毕业的时候,有的拿着10+w的年薪,在大公司做软件工程师,而有的连个工作也找不到。造成这些差距的原因是什么?我觉得主要在课后。大家都一起上课,你能学到的别人也能学到,而且,纸上得来终觉浅,绝知此事要躬行。课后花的功夫就形成了的差距。大学里,老师只负责教好自己的课,你课后干什么没人约束,所以,一定要安排好自己课后时间。所以,这篇文章会告诉怎么安排课后的时间。

另外,编程高手都是喜欢看书的。一定要看经典的、有营养的书,别看垃圾书。选择书籍的时候,你可去豆瓣网看看书评,买好书才能节约你的时间,看了垃圾书浪费时间。建议多看国外计算机名校的教材,国内的好书不多;编程高手一定是喜欢动手的,课后多参加编程活动。李开复曾建议计算机学生大学本科四年,应该写10w行代码。

我对我的本科时的软件学院教学方案不是很赞成。第一、教一些大而空的东西。软件学院教一些诸如软件工程的东西,对编程没有太多实际的帮助(至少以本科生的水平来看,吸收不了那么多)。计算机领域的有点难度、有技术含量的东西可能并不会教给你。可能是由于当时的软院还在摸索阶段吧。第二、喜欢重点教一些工具的使用。比如asp.net。这些都是招式,不是内功。我觉得,本科阶段学习一定是以计算机基础为核心的。第三、对学生的定位。学院把教学重点放在web编程上,培养了大量的web程序员。这些不是不能教,我的意思是,不能当做重点来教。本人也是学过j2ee的。

如果你想从事更高端的软件编程工作,对自己的要求就不能太低哦。所以,我写这篇文章主要目的是劝你往高层次看齐,做高端的软件工程师,比如:算法设计,数据挖掘,图像处理,网络应用,游戏编程,计算机安全,分布式系统设计,嵌入式系统之类的,这些要求对计算机的理解更深。

好吧,开始我的建议吧。

你大一、大二很闲吗?是的话就太危险了。我觉得这是你能不能成为编程高手的关键时期哦。如果你用两年的时间都没喜欢上编程,以后也很难喜欢上。这是你训练编程能力的最佳时期,大三再来练习,时间就有点短。如果你有大把的时间,并且迫切希望知道怎么做的话,下面的内容就是回答你的问题的。

精通一门编程语言

讲讲大一。如果你中学的时候没接触电脑,那就先练习一下打字吧,因为打字太慢会影响编程的,安装一个金山打字通,每天睡觉之前打字30分钟,坚持一个月。买个笔记本,现在笔记本便宜了,不像我上本科那会用台式机,配置的话内存至少2G,CPU频率过得去就行,价格在4-5k就可以,实在没钱就买神舟笔记本,据说有几款性价比不错。笔记本是用来写程序的,不是玩的。

大一是肯定学编程语言的,不管学的是哪门语言,都要做到精通。精通一门就好了,开始的时候别想学太多,这样对你掌握语言反而不好。我建议你学C++,因为我学这个,嘿嘿。学习C++,主要是学习面向对象的思想,还有要清楚C++是如何分配内存的,以及派生,多态,重载,虚函数,构造析构,STL等,特别关注内存泄露。如果是入门学习的话,建议你看看书籍《Essential C++》,《C++ Primer》,然后再去读读《C++编程思想》,《Effective C++》,《深入理解C++对象模型》,《设计模式》这几本书。编程环境建议使用VC++,或者Linux上的GCC。

如果你是想做java程序员的话,java就简单许多了,经典的书籍也很多,比如《Java编程思想》,自己网上搜一搜吧。

当然,大一你可能还会学其它东西,但是精通一门编程语言是你最重要的任务。

算法是软实力的体现

大二的时候,该学数据解构和算法了吧。软件学院的学生,常号称自己动手能力强,真的强吗?你听说过ACM竞赛吗?如果想证明自己动手能力强,就该去参加这个程序竞赛。搞.net,只会拖控件这也叫动手能力强?想想自己本科那会真是天真啊。

程序=数据解构+算法,这个著名的公式在很多计算机编程书籍里都出现了。可能你很多师兄还告诉你,算法不实用,毕业之后用不着,对于一般的编码人员的确是很少用到。但是,你想做到高级软件工程师,这些都是你默认要擅长的哦。还有,越好的公司,对这个要求就越高。本科、研究生毕业能直接进微软,百度的,都是算法的高手。

如果你用大二一年的时间去参加ACM竞赛,这绝对对你的职业生涯产生不可估量的影响。如果你基础好,应该从大一的下学期就参加。最好经常去北大,浙大的ACM网站做题。买几本算法书,如果是入门级别,给你推荐的书籍有:《数据解构与算法C++描述》,《算法竞赛入门经典》(刘汝佳),《编程珠玑》,提高的书籍有:《算法艺术与信息学竞赛》(刘汝佳、黄亮),《实用算法的分析与程序设计》(吴文虎、王建德)。这些书在书店或者当当网上都可以买到。如果你周围的同学有对编程感兴趣的,可以一起报名参赛ACM,这个比赛是三个人一组的。本人本科的时候,软件学院对于ACM竞赛一点也不重视,很多软院的同学不知道有这个东西的存在。我跟几个同学经常去参加比赛,虽然没获得好名次,但是对本人的编程能力有很大的提高。如果你大一大二不是很忙,又没有参加这个比赛来锻炼自己,确实有些可惜。

可以一个人,可以几个人,一起放松那劳累的心情或者劳累自己的身体,

写给软件学院的本科生(转)

相关文章:

你感兴趣的文章:

标签云: