天天看点

软工热身作业

项目 内容
这个作业属于哪个课程 2021春北航计算学院软件工程(罗杰 任健)
这个作业的要求在哪里 作业要求
我在这个课程的目标是 提升代码能力,掌握工程化方法
这个作业在哪个具体方面帮助我实现目标 对自己有一个更为清晰的认识

一、大学生上课一定要认真听讲吗?

Scalers表示大学生上课一定要认真听讲,这一点我并不是完全赞同。

在大多数情况下我是赞成大学生上课要认真听讲的,正如文章里所说,老师毕竟是老师,大多数老师的水平会比学生高,至少有值得学生去学习的地方。但是,在少数情况下,老师讲的内容难度太大或者表述得过于抽象,让学生如同听天书一样,这个时候继续听课除了加重学生对于这门课的负面情绪以外别无好处,此时学生应该选择赶紧查漏补缺,抓紧复习并提前预习,争取下节课开始能够跟上老师。

二、结缘计算机

1.你为什么选择计算机专业?

自己和计算机结缘其实挺晚的,在进入大学以前电脑对于我而言就是一个可以看视频、上QQ的工具,我从来不曾想过以后要进入计算机学院进行学习,就连初中、高中那少的可怜的电脑课也被我用来偷偷打4399而混过去了。上了大学以后,程序设计这门课让我第一次接触了代码,由于当时从来没有接触过其他语言,所以不仅没有觉得C语言写起来麻烦,反而为自己能够动手解决新的问题而感到高兴。在大一上考期结束的那几天,我在宿舍花了几天时间写了个大几百行的C语言程序,用来给弟弟自动出四则运算的口算题并自动批改,从那以后我便对计算机不排斥甚至有了一点点兴趣。同时,由于认识不少来自计算机学院的优秀学姐,因此觉得计算机学院是优秀同学的共同选择,再加上父母觉得计算机的就业前景良好,而且在近30年内都不会被淘汰,于是在这种种因素的作用下我最终选择了计算机学院。

2.你认为你的条件如何?和这些博主比呢?

我自己是一个各科均衡发展的学生,没有明显的短板使得我在高考中非常占优势,但是也一定程度上掩盖了我没有优势科目的事实。事实上,我很努力也学不好与数学直接相关的学科,和一些包括算法在内的、与数学有着密切联系的学科。我始终无法做到融会贯通,举一反三,只能够通过反复练习做到对于书上出现的例子在考场上能够复现出来而已。因此,在学习能力上,我觉得我不如博客D和博客I 的博主,我无法在某一个领域做到精通。

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

我曾经喜欢也曾经不喜欢,但是我觉得未来会喜欢。在大一时,我曾经很喜欢用C语言写短小的程序来帮助我解决一些小问题,兴致盎然的我还曾经用C语言写了个短小精悍的生日祝福程序给学姐,如果没有记错的话就连跨年夜都是C语言陪伴着我度过的。在大二时对于我的专业我是不太喜欢的,我讨厌带有复杂拗口的体系结构术语的计组,也讨厌夹杂着C语言、汇编语言和一堆牛鬼蛇神注释的操作系统,我原本以为我会为我弄懂了计算机底层的原理而感到骄傲和自豪,但实际上我只觉得学得身心俱疲。到了大三,我发现原来卷编译是如此有意思的事情!当你通过种种优化使得代码运行的效率提升了十倍时,你会发自内心的为自己所取得的成就而感到高兴,虽然卷编译的过程中也因为种种bug而感到沮丧,但是在克服了各种困难后所获得的成就感仍然让我为之欢欣鼓舞。对于未来,我相信我能够找到我感兴趣的事情并继续为之努力下去的。此外,虽然我没有教书育人的经历,也没有从事科研的经历,但是当喻之斌教授为他培养出的学生感到骄傲时,当他通过努力让华为的性能变得更好时,他的那种骄傲、欣喜我是能够产生共鸣的。我想,也许这样的共鸣表明我内心深处还是热爱计算机这个领域的。

至于是否擅长取决于评价标准以及比较对象。我觉得我相对于同级计算机学院的同学来说,代码能力和工程能力都高于平均水平,历次的竞速也都取得了较为靠前的名次,从这一点来说我是擅长计算机的。但是相对于专业的码农,我还有很大很大的差距。首先,我对C++的STL库和Java内置的容器并不十分了解,对常用的框架也知之甚少,从知识面上来说我就有所欠缺;其次,我没有真正参与过能够投入生产使用的软件工程,缺乏实际开发以及运行维护的经验。

三、在计算机系里学习

1.你对你的大学生活有什么想要吐槽的地方吗?

在生活上,我觉得学院路的食堂好吃的东西实在是太少啦!要是能把沙河食堂搬过来学院路就好啦!在课程设置上,我觉得计算机学院对于算法的学习太少了,学习数据结构时只是粗略地涉及了一些基本的算法,并没有详细讲述对于算法的优化;而大三的算法课虽然有讲代码的具体实现和优化,但是没有上机也没有足够的课时来深入讲解算法,导致同学们对算法的认识其实只停留在非常浅层次的阶段。

2.你理想的大学教育应该是什么样子的?

  • 能学到成体系的知识,学到无法速成的扎实基本功,学到学科素养
  • 给学生充分的时间德智体全方位发展

3.跟学校给你的有什么区别?

学校的老师总体而言都比较认真负责,专业课的课程都比较成体系,因此只要用心学了的同学都能够学到成体系的知识。再加上计算机学院对于同学们的代码要求很高,也非常注重工程化方法的教授和培养,因此我认为学校给我的基本上达到了我的第一点要求。

但是,由于课业压力较大,而且北航的社团总体而言和世界一流大学还存在较大的差距,再加上寸土寸金的北四环以内不允许学校建更多的运动场(平时只有一个小足球场是开的,篮球场也只有室外的而且框还有好多是歪的),所以我觉得大多数北航的同学(包括我在内)在社交活动和体育锻炼方面花的时间不够,没能实现全面发展。

4.比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?

我觉得比较难做到。毕竟各国国情不同,国内公立大学几乎全靠国家补贴,不像国外私立大学的学费如此高昂,因此可能无法提供像国外那么好的教学设备和实验器材。此外,由于学生数量比较大,因此也只有有限的几门课可以实现小班教学,学生个人的发展和学习全靠自觉,无法像国外一样为学生量身制定发展方向。但是,我觉得所有用心学习的同学都能够在大学阶段收获自己想要获取的知识,尤其是理工科的学生。正如这个博主所说的那样,技术是硬实力,拥有技术就不用担心没有饭碗;此外,当你的谋生已经不成问题时,你就有资本去追逐事业,追逐更广阔的天空,同时你的下限也不会太低。因此,国内的学生也应当充满信心,相信国内的教育体系也能培养出优秀的毕业生。

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

迄今为止,我写过的过千行的工程应该就是计组、OO、编译和数据库的大作业。其中,计组的代码一千多行,OO四个单元中每个单元的代码量都在一千到两千行之间,编译算上优化总共有6000行,数据库大作业大约一千行。

我认为,最为复杂的工程是自己写的编译器,但是总体而言它的代码架构是最清晰的,词法分析、语法分析、代码优化、代码生成四个环节环环相扣,依次进行。工程虽大,但是由于可以拆解成一个个小的局部结构,因此实际上并没有想象中那么复杂。

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

我认为,科班出身和北大青鸟的主要差距在于专业知识水平的差距以及是否熟悉行业规范。专业知识水平的差距体现在多个方面,在计算机领域下的表现是,科班出身的同学能够懂得底层的原理,明白计算机是怎么运作的,因此往往能够更好地优化自己的代码;此外,由于专业知识水平的差距,在描述问题时他们使用的术语更加专业,表述更加准确,能够有较高的沟通效率。是否熟悉行业规范则主要体现在代码上。科班出身的同学无论是代码风格还是变量命名都更加符合工程要求,同时由于他们有过独立开发大工程的经验,因此会更加注重前期的架构设计和收集需求,这让他们在进入企业以后能够更好的适应。

四、未来规划

1.对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?

虽然决心还不是特别坚定,毕竟这条路实在是太辛苦了,但是目前来看我是希望读到博士然后留校继续从事研究。这个选择基于两点,一是因为我觉得从事研究比去当码农更有可能让我感觉到快乐,因为在企业里当码农可能会像这位博主一样不顺心,二是因为留校的社会地位更高,被人尊重无论如何是一件高兴的事情。

2.你准备怎样来规划你技术道路,职业道路和社会道路?

  • 技术道路:目前在学校里我对待专业课非常认真,希望能够掌握扎实的基本功,尽可能的多方面了解,这样有利于为将来保留更多的选择机会。
  • 职业道路:想要留校学历是硬门槛,因此努力考研读博,并且努力发好文章。
  • 社会道路:现在离出来工作还很远,暂时没有考虑。

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

由于未来更加可能从事科研方向,因此会选择在实验室实习。在好的实验室实习,能够在组会中听到同学们的分享,能够听到一些让人耳目一新的idea。同时,由于实验室中会有研究不同课题的同学,因此听他们的分享也能够很好的拓展知识面,知道目前的学术研究的进展。最重要的是,组会上老师会传授一些关于如何写好文章的小trick,这对于未来从事科学研究是弥足珍贵的。