[2017BUAA软件工程]第0次博客作业
结缘计算机
你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?
计算机是你喜欢的领域吗?是你擅长的领域吗?
我当时报考高考志愿的时候就已经是想好报考计算机专业的。我第一次接触计算机还是比较早的,就是游戏机之类的都算上的话其实可以说是陪伴着我长大的东西了。要说我小时候也并不算是特别爱折腾玩意的人,第一次对计算机有点小“开发”的经历,我想应该是小学5年级(左右)的计算机课上,老师教我们设计了一次网站。小孩子的开发嘛,都是那种套套模板,并不会实际写程序的,但当时我就觉得比较神奇。后来我学单片机(初中的时候),学了点汇编,就拿汇编瞎写一些程序,虽然我不太记得我当时写了什么玩意,但就记得写程序还是挺有趣的。要说比较正经的开始接触计算机编程,我觉得应该算是我高中的时候。当时高一刚入学,学校各类竞赛队招人,我也想学一个竞赛搞一搞,就报名了信息竞赛。就这样我到了高考报志愿的时候就自然而然就想报考计算机专业,因为我觉得搞搞计算机,写写程序还是比较有意思的一件事。
我的这些经历跟博主灵感之源相比,是小巫见大巫了。跟他相比,我的条件要好的多,从小学就能接触到计算机,书之类的资源想想在当时要想找也是挺多的。但现在来看,计算机确实是我喜欢的领域,也是我擅长的一个领域。
在计算机系里学习
你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?如果不能,请分析一下为什么。
说实话,我对我的大学生活并没有什么想要吐槽的地方的:先是我觉得北航的课程设计总体来讲还是比较好的,在大一学习基本数学和编程,大二有一些更加专业的数学以及计组之类的专业大课,大三开始众多选修自选。我觉得这些还是比较不错的。我觉得能再改进改进的,吐槽一下的话就是选课可以再*一些:我能力比较不错就想大一开始学那些专业课应该在系统上是可以选的,但是可以不推荐;但实际上现在到了大二才可以选一些大二的课程,以此类推。
我个人来讲,是更喜欢实践出真知的。具体来讲,比起听课、看书,更喜欢在一个目标下,看一些东西,学习知识,以达到那个目标。目标可能是一个竞赛的目标,或者是自己玩一玩开发的小玩意。由于这样,在北航的这些主要的课程上,例如计算机组成原理,操作系统等,都有明确的目标(开发CPU,简易的操作系统),这让我学习起来非常的有推动感和成就感。
迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。
迄今为止我写了多少代码我根本没有仔细数过,但我写的代码数量应该也不算多的。我想我做的比较复杂的项目应该要说的是今年ASC竞赛负责的MASNUM应用和同样也是今年的ISC竞赛负责的MiniDFT两个高性能科学计算应用的优化了。MASNUM应用是一个海浪模式的科学计算应用,我们当时需要在当今世界最快的超级计算机神威太湖之光上做性能优化。我和另一个大四(现在已经研一了)的同学一块负责这个应用的性能优化。我们当时做了性能分析,又写了好多针对神威的加速代码,又参考了一些文献,主要对其中两个主要函数做了好多优化改进,最终达到了十几倍的加速,虽然最后被清华的300多倍的加速大打了一把脸,但是对于当时刚入门的我来讲,对于学习fortran语言(MASNUM是用fortran语言写的),理解整个软件的运行流程,学习MPI、神威编程架构知识等,还是非常有挑战的一件事。然后是ISC竞赛负责的MiniDFT应用,这是一个量子化学方面的应用,其中计算的方程什么的我也真不太懂,当时我们选择GPU进行加速,所以跟学长一块写了大量的GPU的kernel函数,虽然由于当时研究的小算例跟大算例性能瓶颈不一样,但是最后加速效果还是不错的。这个优化项目在当时比赛方的要求下都是公开的,大家想看的话可以自行围观。github地址:ISC17_BUAA_MiniDFT
学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的计算机有关系吗”,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?
要说我从来没有过这样的疑问,那肯定是假的。但我现在还是有些小的体会,觉得学那么多数学对于计算机科学还是非常有必要的。学习计算机,如果光在表面晃悠晃悠,数学确实不必学习那么多,但如果深入,那这些数学知识就是必备技能了。比如如果线性代数没有学好,在高性能这个领域,基本就看不懂程序了,因为好多高性能计算的基本就是矩阵运算;不说高性能,说机器学习深度学习这块,一些基本操作还是用矩阵向量来进行表达的,再加上各种概率论的知识,基本上数学没学好想深入学习机器学习就是看天书了。所以这些数学知识,我现在觉得是学计算机的人的立命之本,从根本上来讲比掌握多少多少语言更加重要,因为初步学习一门语言可能数周甚至数日就可以,但是这些数学上的思维上的知识数周可是很难掌握的。
未来规划
对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?
未来规划上,我还没有想太明确。我以后从事的工作还是想跟机器学习、高性能运算有关系。目前看来就是走一步算一步,按照自己喜欢的路随性走下去了。
实习经验究竟有多重要?是否需要马上开始积累实习经验?
从ASC竞赛开始,我就一直呆在实验室里面,做竞赛题目的优化工作,跟老师队友一起开会讨论。然后在ASC、ISC竞赛结束后,暑假就在老师指导下就去无锡实习一段时间,感觉收获还是挺大的。先是学习到了git的正确用法,体验学习了多人合作开发的流程。这种经验还是在实习中容易体会学习。但我觉得并不需要马上开始积累实习经验:我觉得这是一个自然而然的事情,并不需要着急积累。