[2017BUAA软工]第0次个人作业

第一部分:结缘计算机

1.你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?

我觉得我选择计算机系完全是误打误撞吧。当时我的分数上北航是没问题的,所以填专业时就是机械,电气,自动化,计算机等专业一个一个报,反正都不了解,更不用说感兴趣吧。应该是计算机专业排在第一个然后就被录取了...不过我觉得我真的很幸运,来到这里才知道北航的计算机系是相当不错的。

大学之前没有接触过编程知识。我觉得高中时数学的程序框图可能是我接触的唯一的和程序有关的东西...在我们学校听说过物理竞赛,化学竞赛, 数学竞赛,但是没有听说过信息学竞赛...所以我是在上大学后才开始了解和学习计算机相关的知识。

看了老师助教推荐的博主的文章,我发现其实大多数在上大学之前也没有很多编程经验,很多人也是到了大学才接触编程,甚至还有大学是其他专业,或者工作后转行到编程的,所以我觉得在知识基础上,我觉得我和很多博主在刚上大学时都可以说算是一个小白,而在学习条件上,我觉得在北航的学习环境和学习条件其实比很多博主当时的学习环境还要好。所以这么好的学习环境,你是利用还是荒废完全在你自己。

当然还有一些博主之前就接触过编程,而且我周围也有很多人也参加过竞赛,和他们相比我觉得差距是客观存在的,但是我们要正视这些差距,因为这是人在不同环境下成长过程中长期积累起来的个体差异。而到了大学,大家都在同一个平台学习,我觉得抓紧时间尽量缩小这些差距就好。

2.计算机是你喜欢的领域吗?是你擅长的领域吗?

yes,我可以说计算机是我喜欢的领域,现在肯定还不能说是擅长的领域。而且我并不是大学一开始就喜欢上的,喜欢上计算机的过程有点漫长...

刚上大学时,第一年我稍微有些沉迷游戏。为什么会有这样的结果呢?

  1. 错误观念的引导,高中经常被灌输“上了大学就轻松了”这样的观念思想。确实大一的基础课程只要在考试前突击一下,及格是绝对没问题的。但是学习的目的就是为了及格吗?显然不是的。
  2. 不能感受到编程的乐趣。大一下的数据结构和C语言,一开始还比较上心,期中考试也有不错的成绩,不过后来就懈怠了。当时觉得数据结构枯燥无味,编程也是枯燥无味,所以就是奔着及格去的。现在想想,真的是后悔莫及。当时不知道数据结构和算法的重要性,浪费了大好的学习数据结构和算法的时间。

第二年有了很重要的专业课了,就开始上心了。但是上半年还是不知道为什么要编程。上半年就在专心的做计组,坦白的说,前面很认真,但是到后面就有些不太认真(实话实说),所以最后的计组实验结果不太满意。而且在这段时间里我也真的意识到了自己和别人的差距是存在的,我能做的,就是尽量做到自己能做到的最好。

在大二寒假,因为要做冯如杯,所以我接触了一些关于网页前端还有爬虫的知识,一下子打开了新世界的大门,我不禁感叹,原来编程可以做这么多事情?当时就在写爬虫试着爬一爬招聘信息,图片等我感兴趣的内容,也简单学习了一些网页知识。这是一个很大的转折点,它让我明白编程不只是解决那些枯燥的数学问题,不只是枯燥的算法和数据结构,还可以做很多事情,是非常有用的一项技能!它让我开始主动了解编程知识而不是被动的接受。

第二部分:在计算机系里学习

1.你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?如果不能,请分析一下为什么。

我觉得我目前在学院路的大学生活很不错,我可以每天早上去图书馆,中午回来睡个觉,一直待到闭馆再回宿舍,而且图书馆离宿舍很近,食堂也很近,我觉得很方便,而且下个学期我选的课很少,就可以给我很大的*时间自习。原来在沙河,我觉得除了有点偏远以外,其他方面也很不错。

我理想的大学教育,说实话因为我之前的错误观念,我一直觉得大学里是很轻松的学习...但目前来看肯定是不轻松的。现在只谈一下我想说的关于专业课的教育方面吧。

对于专业课的学习,我就觉得大学教育就应该是尽可能的让学生真正理解并掌握本专业的基础知识。我一直觉得要想真正掌握一些知识,必须要真刀真枪的实干,这一点我觉得北航做的很不错(其实我不太了解其他学校是怎样的,但是我觉得北航在专业课培养上确实很不错)

  • 就拿计组课程设计来说,虽然闯关模式很残酷,而且我们的压力也很大,但是我觉得只有这样在压力中学习和调试代码,才能真正理解流水线中的转发阻塞的各种细节。
  • 再比如OO课的作业,有些作业虽然量很大,但是只有这样你才能不断的完善你的面向对象的编程思想,而且我在后来看设计模式的书时,惊讶的发现很多设计模式其实我在完成OO作业时就已经在使用了。所以可见OO课作业对设计模式思想理解的重要性
  • 再比如OS课的每一次实验,在调bug的过程中你才能慢慢的真正的理解操作系统的很多细节的东西。

综上,不管其他人怎么看,我是觉得北航在专业课的培养上很不错了,起码真正的学到了很多知识,深刻的理解了很多思想。

不过北航有着工科学校的通病,那就是可能对人文素养有些忽视。不过我个人认为我们自己可以通过看一些人文相关的书籍,并不一定非要靠学校。

2.迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。

迄今为止,我的大部分代码还是来自于作业,所以目前最复杂的作业就是OO的出租车抢单系统了吧。还需要再努力写代码。

3.科班出身和北大青鸟有什么区别?

按照我目前的理解,我觉得最大区别在于:自学能力和基本功的差异。自学能力是一个人很重要的技能。我始终认为,一个人目前掌握的知识多还是少相对来说是无关紧要的,关键在于他有没有能力保证在一段时间的学习后掌握之前没有的知识。

科班出身的人,如果好好学习过专业课的话,一定对计算机的底层基础知识了解很多,基本功扎实,以后不管从事哪个方面的技术工作我觉得都可以很快上手,毕竟是认真学了四年的专业。这就和我们看的武侠小说里,张无忌因为修炼了九阳神功和乾坤大挪移,之后学什么武功都很快(举个不恰当的例子...)

而北大青鸟培训出来的人,可能是基本功大多不会扎实,往往急功近利,因为是为了挣钱的目的学习,而且时间还很短。但是不乏有很多从培训机构出来后经过奋斗也取得了不错的成就,所以我觉得这是一个概率问题:

P(自学能力强|科班)>P(自学能力强|北大青鸟)

4.学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的计算机有关系吗”,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?

目前来看,我觉得学数学对我们的影响有这么几点:

  • 比较直接的就是我们的离散数学是计算机科学的基础,所以离散数学是一定要学好的
  • 然后就是大一学的数学分析中的求偏导,矩阵计算,大二上学的概率,统计都是目前很火的机器学习的很重要的基础知识。就比如SVM模型,需要大量的数学知识,你要理解SVM的运作原理就必须要学习这些数学知识
  • 最后也是我觉得最重要的,那就是有助于完备的逻辑思维的建立。这么说会比较笼统,但是不得不承认,学数学的人思维严谨,逻辑清晰。而我们写的程序也是由一个一个小逻辑构成的,学习数学能够帮助我们形成完备清晰的逻辑思维,尽量避免逻辑上的bug的产生。就比如我在做OO的电梯调度时,我在写程序前先要画好逻辑框图,如果我能保证这个调度的逻辑框图的逻辑是正确的,然后我再保证从逻辑框图到代码的转化也没有问题,那么我就可以确定我的调度算法没问题。所以说我觉得数学对我们逻辑思维的训练有助于我们写出更好的代码

第三部分:未来规划

1.对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?

关于这个问题我其实想了很久,也看了很多论坛。我觉得不管怎样,大的原则是:脚踏实地,不断学习。

我其实希望未来可以去数据挖掘相关的岗位上,因为确实我对从大量数据中提取出某些规律这个过程很感兴趣。但是我觉得这个行业是需要很多很多的知识技能的。

然后我也很喜欢Java语言,经过上个学期的OO课的熏陶,我已经深深的爱上了这门语言...所以接下来我会专心看java相关的深入理解的书籍,主要包括《Thinking in Java》,《Java 并发编程思想》和《深入理解java虚拟机》。

虽然现在的机器学习特别火,但是我们不能因此而放弃对编程基本功的修炼。我个人认为,精通一门语言是很重要的。我在很多地方也看到,很多人这个也想学一点,那个也会一点,结果都是略懂。这个时候就应该沉下心来,专心精通一门语言,把它作为以后生存的看家本领,我觉得这是很重要的。而且精通一门语言后,学习其他语言也会很快。

所以我目前对未来的打算是这样的:

  • 如果在大三下我选择了考研,那么我会在研究生阶段好好学习机器学习方面的知识,争取毕业时走上数据挖掘相关的岗位
  • 如果我在大三下选择了工作,那么我会专心研究工作中所需要的技能,争取毕业时可以去不错的java开发岗位,然后如果在之后的工作中有机会学习的话,我可能会接着学习机器学习相关的知识,如果可以还是希望从事数据挖掘相关的岗位

未来是不确定的,可能之后还会有变化,但是我觉得大的原则不能变,一定要摆正自己的位置,不断学习思考,总会有所建树。

2.你对于实现自己的梦想已经做了或者计划做什么样的准备?

除了之前说的看java的相关书籍,以后还会继续学习机器学习的相关基础知识,然后还需要准备自己的英语。

不管是考研还是工作,英语和数学我觉得都是很重要的,而机器学习涉及大量的数学,正好也可以复习相关的知识,所以我觉得学习机器学习并不冲突。但是还是那句话,要保持清醒的头脑,不要盲目追求热门,也不要盲目模仿别人的经历,每个人都是有差异的,不断思考,不断学习,总能找到属于自己的路。

然后我觉得我可以把所有公司关于java开发岗位的要求汇总出来,根据这些要求,有针对性的学习。

还有就是博客C[1]里讲到的书籍也需要有针对性的阅读。

3.你们马上就要面临实习了,你打算在企业内实习还是在实验室实习?

企业实习就是工程方面的,实验室实习可能偏科研吧。我觉得如果你偏向于以后搞科研,那么你就在实验室实习比较好,如果你偏向于工程实践,我觉得企业里会更加锻炼你的能力。

对于我来说,我更倾向于在企业内实习,我以后可能也更倾向于直接工作。

4.实习经验究竟有多重要?是否需要马上开始积累实习经验?

我觉得实习经验很重要,只有参加实习你才能真正知道你缺少的是什么,你需要学习什么。

如果有实习的机会,我觉得还是尽量抓住机会。

参考链接:

[1]https://book.douban.com/subject/4006425/discussion/22802960/

上一篇:Java程序员的日常——《编程思想》一切都是对象


下一篇:Linux下Source Insight的安装和汉化