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

2024-02-09 16:58
文章标签 软件 学院 写给 本科生

本文主要是介绍写给软件学院的本科生(转),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本人今年北软研究生毕业,本科是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竞赛一点也不重视,很多软院的同学不知道有这个东西的存在。我跟几个同学经常去参加比赛,虽然没获得好名次,但是对本人的编程能力有很大的提高。如果你大一大二不是很忙,又没有参加这个比赛来锻炼自己,确实有些可惜。

观察清华,上交,浙大,北大这些计算机名校,每年都有本科生在国际的ACM比赛中拿奖。在北大软件学院读研究生,我了解到北大计算机的本科生有很多都参加这个比赛,基本上每个学期都举行全校级别的比赛。北大计算机也开了ACM的相关培训课程,所以北大计算机本科生的算法实力都非同一般啊。清华计算机的吴文虎老师是国家ACM竞赛的教练,上海交大计算机也有专门的ACM培训班,今年浙大是ACM竞赛世界冠军。这说明,这些计算机名校都很看重算法吧。虽说算法不是计算机的一切,但是反应了这些院系学生的“软实力”,这跟各个学校的软件学院一比,软件学院的学生便显得“软实力”不够了。

大一大二,计算机的基础课要好好学的,比如数据库,离散数学(学学组合数学),编译原理,操作系统原理(建议学学Linux),计算机图形学等,都是不错的课程。我本科那会,学院不很重视计算机硬件的教学,这不利于编程能力的提高。如果你的本科学院也不够重视,建议你大二的时候自己去钻研,推荐你看《深入理解计算机系统》这本书,里面介绍了很多浅显的硬件知识,世界上很多计算机名校都教这本书。

大二可能会学很多专业基础课,但是算法是重中之重。

为找工作积累技术

大三是专业课集中的一年吧。《软件工程》的本本是要读一下的,不过别报太高期望,以本科生的见识和功底很难吸收其精华,但是里面的方法论可以拿来读读,以后慢慢体会吧。可以读一读《人月神话》,《代码大全》,这都是软件工程领域巅峰之作。

如果你打算毕业之后做一个java程序员,你可以学学j2ee(主要是MVC架构),现在的参考书真多,我也就不推荐了。当然,你还得学学各个开源的框架,比较流行的有Hibernate,Spring,Struts,最好研究一下这些框架的源码(选一个来研究)。我本科那会流行这些,我好几年不搞这个了。

如果是想做.net程序员,那就简单多了,熟悉各个控件的使用。

你可能还得补充一些其他知识:比如html,javascript,ajax(jquery),css之类的;Linux服务器的搭建,Shell、Python脚本编程,mysql数据库安装备份,apache服务器、网络管理等。比较高级的一些还包括:分布式图片服务器设计,数据挖掘等。还是要看很多书,写很多程序,别限制自己的眼界,这里面有很多值得研究的课题,比如如何架构一个图片分享的网站等。

如果你还是坚持做一个C++程序员的话,太好了,跟我是一个阵营的。你可以学学MFC程序设计,这方面的书籍有《windows核心程序设计》《深入浅出MFC》。你可以考虑加上OpenCV,使用VC++搞游戏编程。如果你将来读研,会使用C++,对做科研是很有帮助的,比如做图像处理,网络编程,嵌入式等。 

切不可东学一下,西学一下,不管你走哪条技术路线,要精通。

实习和就业

大四的实习和找工作。软院的学生在大四都要出去实习至少6个月吧。如果大学四年都在认真编程,毕业之后找份工作是很容易的,但是找什么样的工作才是我们关心的。我建议大家在实习的时候一定要找准。尽量去一些好点的公司实习,然后留下来,这样你就不需要再投简历笔试面试地找工作了。本人认为好点的软件公司有:腾讯,阿里巴巴,淘宝,百度,华为,人人网,盛大,网易,新浪,深信服,华为3COM,金山,金蝶,用友,toplink。深圳也有一些小的IT公司待遇也不错,这个可以自己去网上搜啦。

微软,google,intel,ibm,甲骨文,这些外企基本上都只招硕士,如果你能进入这些公司实习,得打听一下能不能留下来。

如果实习不打算留下来,就得准备参加笔试了,算法是肯定会考察的,还有就是计算机的基础知识了。总之,找工作是容易的,找个好工作才是你的目标哦。

现在大家常说程序员是IT民工,这不无道理,如果你在一家IT公司的软件生产线上干着一些不重要、重复体力的活,人家想把你换掉就换掉,那你就是IT民工。所以大家在工作中应注意学习公司的核心技术。如果你掌握了公司的核心技术,还dan?如果真那样,你可以自己出去开公司了。

另外,也有些同学想创业,本人没这方面的经验,不敢乱说,但是如果你想好了就去做吧。

这篇关于写给软件学院的本科生(转)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/694799

相关文章

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

免费也能高质量!2024年免费录屏软件深度对比评测

我公司因为客户覆盖面广的原因经常会开远程会议,有时候说的内容比较广需要引用多份的数据,我记录起来有一定难度,所以一般都用录屏工具来记录会议内容。这次我们来一起探索有什么免费录屏工具可以提高我们的工作效率吧。 1.福晰录屏大师 链接直达:https://www.foxitsoftware.cn/REC/  录屏软件录屏功能就是本职,这款录屏工具在录屏模式上提供了多种选项,可以选择屏幕录制、窗口

HomeBank:开源免费的个人财务管理软件

在个人财务管理领域,找到一个既免费又开源的解决方案并非易事。HomeBank 正是这样一个项目,它不仅提供了强大的功能,还拥有一个活跃的社区,不断推动其发展和完善。 开源免费:HomeBank 是一个完全开源的项目,用户可以自由地使用、修改和分发。用户友好的界面:提供直观的图形用户界面,使得非技术用户也能轻松上手。数据导入支持:支持从 Quicken、Microsoft Money

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的

梳理2024年,螺丝钉们爱用的3款剪辑软件

这年头,视频到处都是,就跟天上的星星一样数不清。不管你是公司里的新面孔,还是职场上的老狐狸,学会怎么剪视频,就好比找到了赢的秘诀。不管是给上司汇报工作,展示你的产品,还是自己搞点小视频记录生活,只要是剪辑得漂亮,肯定能一下子吸引大家的目光,让人记得你。咱们今天就来侃侃现在超火的三款视频剪辑工具,尤其是PR剪辑,你肯定听说过,这货在剪辑界可是大名鼎鼎,用它剪视频,既专业又麻利。 NO1. 福昕轻松

秒变高手:玩转CentOS 7软件更换的方法大全

在 CentOS 7 中更换软件源可以通过以下步骤完成。更换源可以加快软件包的下载速度,特别是当默认源速度较慢时。以下是详细步骤: 前言 为了帮助您解决在使用CentOS 7安装不了软件速度慢的问题,我们推出了这份由浪浪云赞助的教程——“CentOS7如何更换软件源加快下载速度”。 浪浪云,以他们卓越的弹性计算、云存储和网络服务受到广泛好评,他们的支持和帮助使得我们可以将最前沿的技术知识分

excel翻译软件有哪些?如何高效提翻译?

你是否曾在面对满屏的英文Excel表格时感到头疼?项目报告、数据分析、财务报表... 当这些重要的信息被语言壁垒阻挡时,效率和理解度都会大打折扣。别担心,只需3分钟,我将带你轻松解锁excel翻译成中文的秘籍。 无论是职场新人还是老手,这一技巧都将是你的得力助手,让你在信息的海洋中畅游无阻。 方法一:使用同声传译王软件 同声传译王是一款专业的翻译软件,它支持多种语言翻译,可以excel

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬

【IT】软件行业发展的前瞻性和希望的广度

我说一下我对程序应用的一个看法就是 我其实个人不太建议自动驾驶技术的发展因为这个东西它说到底还是什么那么一点安全隐患 ,虽然我们平常考虑用同时实行各种各样的高级的自动作用, 但是自动驾驶可能是个特例,其实我个人觉得程序可以在以下方面发展 1.医学(包括诊断 治疗 手术等)因为现在也有很多的疾病是医学还没有能力去解决的 ,2.国防 有的时候因为国家安全真的非常重要的,因为我们每个人