软工第一次个人作业 第一部分 结缘计算机 第二部分 在计算机系里学习 第三部分 未来规划

项目 内容
这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任建)
这个作业的要求在哪里 第一次作业-热身!
我在这个课程的目标是 学习软件工程相关知识,培养自己独立和团队开发能力
这个作业在哪个具体方面帮助我实现目标 反思过去,考虑当下,展望未来
作业正文...... 见下文
其他参考 博客1 博客2 博客3 博客4

博客1中,作者回顾了他的初中生活,他从初中开始就因为学校开的电脑课而初次接触到了计算机,自此就对计算机有了浓厚的兴趣,并且在初三拥有了自己的电脑后就更加痴迷于计算机世界。

看完了这篇博客的博主结缘计算机的经历,我不禁也开始回顾自己接触计算机的经历。得益于计算机领域的飞速发展,我有幸在小学的时候就拥有了一台自己的台式机,那时候父母经常给我买一些益智教育的光盘在电脑上放给我看,而我也沉迷于那色彩斑驳的画面中,忘了"研究"这电脑里的其他功能,久而久之,拥有电脑对我来说已经变成了一件习以为常的事情。

让我重新"认识"电脑是在初中的电脑课上,和博客1的博主一样,我的初中也在初二左右就开设了电脑课,当时老师的讲课内容是C语言,虽然具体讲课内容现在已经记不太清了,但是那时候开设的C语言课程的确让我在大学中的程设课能比那些没有基础的同学更快地入门,大学的程设课上前几章讲的一些基础的C语言语法我也颇有一种「咦,这个妹妹我好像见过」的感觉。

之后的高中生活中,我接触的计算机专业的东西就比较少了,虽然每天都有在用电脑,但是也很少去思考这个大东西到底是怎么运转起来的。

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

说到选择计算机专业的原因,大部分是因为计算机专业的前景比较好吧。其实我在高考选志愿的时候也并没有明确自己想干什么,看着那么多学校那么多形形色色的专业,有些光看名字也不知道是干什么的。我想在尚未明确自己的目标之前作出选择太过草率,也是对自己的不负责任,因此就选了一个我的分数差不多能够上的北航信息大类。经过在信息大类的一年的学习后,我最终还是选择了计算机学院作为我的第一志愿。选择这个专业的原因当然有就业前景的因素,但说实话信息大类的几个专业方向就业前景都很不错,另外的考虑还有两点:一是我相对于2系的偏硬件方面的研发,还是更喜欢软件一些;二是我听说计算机系的大佬们很多,而计算机这个学科又是一个需要不断学习的学科,我希望能和更加优秀的同学们在一起学习,从而提高自己的学习能力。

我认为,我的条件在所有计算机专业的同学们之中处于中流,既没有什么基础(初中那些几乎忘光了的浅薄的C语言语法实在称不上是基础),也不是说完全学不懂电脑的那种。和博客1的博主相比,由于所处的时代不同,我在初次接触电脑的时候就已经用的是中文的Windows系统了,而博主的那个时代还在用英文的DOS系统。从学习计算机的方面来讲,其实这是为我学习计算机提供了更好的条件,可惜我在初次接触电脑的时候对它并没有像博主那样强烈的兴趣,因此也就错过了很多学习的机会。

2. 计算机是你喜欢的领域吗?你热爱这一专业吗?

我并不敢说自己热爱计算机这个这个学科,我只能说我不讨厌它。有时候在写完程序debug的时候真的很崩溃,但当de完所有bug之后的激动和爽快又是其他时候都比不上的。我对计算机应该就是这么一种又爱又恨的心情吧。

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

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

我对现在的大学生活想要吐槽的地方并不多,主要想吐槽的就是大类招生的培养方案:从大一信息大类的培养方案到大二选择专业后的计算机学院的培养方案并没有很好地衔接上。但我们这届是北航第一年实行大类招生,也算是情有可原吧。

我理想的大学教育其实很简单,就是老师课上会讲课,给同学们讲授一些理论、原理上的知识,而课下让我们自己去利用课上学的知识做实践(也就是写代码)。这一点上我觉得做的最好的是去年的OO课程,理论课分单元讲授,每个单元都有对应的一个小的作业主题,每个单元的后一次作业都会在前一次作业的基础上增加一些内容,有循序渐进的感觉,并且有及时的作业反馈能让我们学习大佬们的方法并调整(重构)自己的代码。

关于中国大学和国外大学的区别,由于我并没有在国外大学上过课,因此只能根据一些其他老师或是同学提供给我的信息来做比较。首先北航作为一所双一流大学,师资力量之雄厚是无需置疑的,而在上课的模式上,可以感觉到北航的计算机系的教学方式是一直在模仿国外的教学方式的。很多课上的老师在第一节课上都会拿我们的教学方式和国外的教学方式做对比,我认为这是一种很好的尝试。

我有几个高中同学现在在北美上大学,我也曾问过他们美国的校园生活和中国的大学生活有何不同,得到的回答大多数是:累、有非常多自己课下要做的事——不只是写作业,还有读书以及写各种paper和做project。其实这和计算机系的专业课现在的教学方式相差不多,我们的大部分的课也有很多课下的project。然而这两种相同的教学模式带给中国学生和国外学生的学习体验,在我看来还是有不同的,其中一个很重要的原因就是:课业负担不同。为什么这么说呢?如果看过一个北美大学生的课表,就会发现他们每学期的课只有那么3、4门,每周要上的课也就5、6节左右,而反观一个中国大学生的课表,每学期有9、10门课已经是常态。

我的托福口语老师曾经这么说过:"如果你想表达你很忙、每学期课很多的话,你就说你每学期要上六门课就好了,不要说自己每学期有八九门课,那样说美国人理解不了的。"

这带来的直接问题就是我们能分配给每个project的时间相比美国学生要少很多——当美国学生正在盘算着明天一天没课,能去图书馆做自己的project的时候,中国学生正在考虑自己今晚能为自己的project赶多少进度、明天的早课能不能翘掉。可想而知,这两种状态下学生做出的project的质量和他们从中能学到的东西一定是有差距的。

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

对于我迄今为止写了多少代码我并没有什么概念,无非是之前课上要求的内容外加上有时自己一时兴起写的一些简单的代码,加起来应该不超过一万行吧。目前为止我写过的最复杂的代码应该是上学期《编译原理》课程设计的编译器,代码长度在2000行左右。那是一个类C文法的编译器,我使用了C++实现它,其中大致包括词法分析、语法分析、错误处理、中间代码生成及优化、生成最终的mips指令这几个部分。写完了之后自己还是蛮有成就感的,不过当时由于精力有限,并没有对中间代码做太多的优化,这一点有些遗憾。

3. 速成的培训班和打基础的大学教育还有mooc之间有区别吗?

我认为速成的培训班和打基础的大学教育还是有区别的,速成的培训班由于时间受限,会更专注于代码能力的培养:即如何把代码写对。而且"速成"二字就意味着它面向的是那些基本没有编程基础,想要经过培训班的学习后直接去工作的那些人。大学教育则不同,正如博客3的这位博主所阐述的他的大学经历一样,大学教育是一个体系化的教育,它从计算机这门学科的基础——计算机组成原理、操作系统、编译原理开始教,让你知其然而知其所以然,在大学四年期间还能逐渐找到适合自己的学习方法,这种学习方法是将在未来的道路上终身要践行并且使人终身受益的。至于MOOC,我本人并不太喜欢这种模式,我认为还是最经典的当堂讲授的方式能带来更好的学习效果。因此如果有条件的话我会更喜欢课堂讲授的方式来学习,不过现在正值疫情期间,没有其他办法,只能选择观看MOOC的方式了。

第三部分 未来规划

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

对于未来的规划,我并不想将自己局限在"一定要做xxx"的束缚中,但是我也很明确的知道我不能一辈子都做一个程序员。且不说到了一定年龄会面临公司裁员的问题,就算是有幸没有被裁掉,自己到了一定年龄也会感觉力不从心,在三四十岁的年纪还是天天熬夜写代码debug,这对于大多数人的身体都是吃不消的。当然任何工作都肯定是要从程序员做起的,只是我希望在干了一段时间的程序员之后能有一些提升的机会。

目前对于未来的技术道路和职业道路我是考虑先出国读研,因为技术这方面还是外国(尤其是美国)比中国的要先进一些,而对于计算机这个发展飞速的学科来说,学习前沿的技术是相当有必要的。研究生毕业以后可能会留在美国,一个非常现实的考虑就是美国的程序员很少会有996这样加班的,工作压力可能会小一些。社会道路这方面我还没怎么考虑过,姑且走一步看一步吧。

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

关于实习经验,我认为还是有必要的,一份有价值的实习经历可以开拓我们的眼界,也可以提前让我们感受一下步入社会的感觉。至于是在企业内实习还是去实验室实习,我认为还是取决于自己未来的职业规划吧,如果未来考虑去高校当教师那么去实验室实习会是个比较好的选择,而如果以后想进入公司,那么就去企业内实习更好一些,可行性方面来说,作为高校的本科生,我们学校内的很多老师的实验室都会有实习生的名额,可能去实验室实习会更方便一些。