BUAA2020软工作业(一)——谈谈我和计算机的缘分

时间:2023-02-03 16:36:48
项目 内容
这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健)
这个作业的要求在哪里 第一次作业-热身!
我在这个课程的目标是 进一步提高自己的编码能力,工程能力
这个作业在哪个具体方面帮助我实现目标 反思过去,展望未来
其他参考文献 博客一博客二博客三

目录

第一部分——缘起

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

    我跟计算机的故事,要从我小学的时候说起了,当时我们有一周一次的微机课,那时候的电脑都是那种大脑袋显示器,而且很多电脑都没有网,每次上课的时候,有网的同学就凑到一起上4399打拳皇,轮到没网的时候,出于对新事物的好奇,我就开始自己摆弄电脑的各个功能,把能点的地方都点一点看看有什么效果,这是我第一次接触计算机。

    后来家里买了台二手电脑,这就成了我的宝贝,没事儿的时候,我就会开机去探索,那时候我真就把整个电脑翻了个底朝天,各种设置选项,各种系统文件的位置我都记得一清二楚,每当老爸有不明白的问题都来问我,比如某个隐藏文件夹怎么显示啊,某个文件的权限怎么改啊之类的。当时我还天真的以为我对计算机的一切都了如指掌了,并下定决心以后要学计算机,为计算机领域的发展作出贡献。

    到了高中,有一次我要去参加北大的信科夏令营,得知有一个考试要考编程,所以就网购了一本c++的书来学习,在学了一阵子后,我才知道我对计算机的了解真的只是冰山一角,不说别的,就说c++这门语言,想精通绝不是一天半天能做到的。所以,我更坚定了要学计算机的梦想,当时别人都说计算机吃青春饭,说什么现在学计算机不吃香了之类的话,但我没有被这些话干扰,我对计算机感兴趣,我喜欢我就要去学它。我想,与其让我在一个不喜欢的专业毫无热情地待4年,还不如做我自己喜欢做的事情。

    事实证明我的选择是正确的,从我高考那年起,计算机专业一年比一年火,因为现在的人们对高科技产品都有着很高的追求,而这些产品的研发离不开计算机领域的发展。

    那么我学计算机的条件如何呢?这个问题换句话说,就是我配不配学计算机呢?

    博客一的作者高中时就结识了一些很厉害的志同道合的朋友,共同努力,共同进步。博客二的作者从初二开始编程,先后接触了VB,VS高级图形设计等。和他们比起来,我在大学前几乎没有系统地学习过计算机方面的知识。但是每个人都是从零开始的,只要肯努力,差距终究是可以去弥补的。

    所以我的条件很简单但也很重要,那就是对计算机有着无比的热爱。我相信所有人在从事一门行业的时候,都是本着兴趣第一的原则,否则即使你现在做的再好,也不会走得长久,终究会有疲惫的一天。

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

    计算机确实是我喜欢的领域,从上面我的经历和自己对计算机的探索等方面都可以看出来,包括在大学中,计算机的很多门专业课我都学得很认真,也拿到了不错的成绩。

    但是坦白来说,我不像一些大佬那样特别擅长计算机,从大一到大三,在每次大大小小的作业中,我都能看到一群大佬的优秀作品,每次他们的作品被展示出来,我内心都会不由自主地发出惊叹。在这里,我不是说他们的作业分数怎么怎么高,事实上在这种应试教育的背景下,想拿高分的话套路够了就行了。我觉得大佬们的作业优秀是因为他们总是能在完成同样需求的基础上,做到代码结构非常清晰,让人一看就耳目一新的感觉,我觉得这不仅是因为他们经验丰富,而且是因为他们对全局思维的把握比我们其他人更清晰,这应该也是值得我们大多数人去学习的地方。面对越来越庞大的工程量,功能完备,结构清晰,维护便捷才是我们追求的目标。

第二部分——成长

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

    目前大学生活两年半过去了,我感觉我的大学生活和我想象中的样子差不多,唯一的一点不同就是集体感没那么强了,尤其是大一结束分完专业后的小班,基本没什么感情。其实刚进入大学分成的小班是最容易培养集体氛围的,因为同学们互相都不认识,而学院正好又为我们划分了小集体,所以每个小集体的人会比较容易地熟悉起来,我在大学的很多好朋友也就是在原来那个小班认识的。而大一结束后,由于分专业,不得不重新组建小班,这样一来,因为同学们在大一已经有了自己的交际团体,所以不太容易再融入新的团体了。新班级的集体感也就不是很明显了。

    对于国外的大学是什么样的,博客三中这样说道:

    美国的大学教育和中国的区别很大,就计算机科学专业来说,来了以后能强烈的感受到这边对实践的重视,比如我这学期的java课,总共有180多学生,编程作业占了40%的分数,每天机房都会有好几个tutor和 Teaching Assistant 帮忙答疑解惑,可别小瞧这些 TA 和tutor,很多都是 Google 或者 Facebook的实习生,在 UCSD, TA 和tutor的制度非常完善,在全美也是数一数二的。

    而我们学校虽然每门课程也配备了相应的课程设计,但看一下学分就知道我们学校对实践的重视程度还不够。比如计算机组成理论课4学分,2017级的实验课是3学分,而到了2018级直接砍成了1.5学分,庞大的工程量和学分占比完全不相称;操作系统课3学分,操作系统实验课1.5学分,而且只有极少部分花费大量时间去做的人才能拿到很高的实验分数,所以在中国“唯分数论”的本科生活中,很多同学的重点都放在了学分高的理论课中,而不注重实验课,这就偏离了计算机教学应该达到的目的。而没有经过大量实践,空有一肚子文化,在当今社会上是没有好饭碗的。

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

    我是从大一才开始接触编程的,所以到目前为止也就两年半的编程经验,代码量肯定不算特别多,粗略估计一下20000行至少是有的,从程序设计基础,数据结构,到面向对象,操作系统,编译器的设计,程序的复杂性在不断提高。

    和大多数北航6系人一样,我做过的最复杂的项目也是大三上学期的类C文法编译器,那是我第一次用C语言写一个工程,最后总的代码量有4000多行。从最初的构思框架,再到一步一步地实现每个小功能,再到把每个功能串联起来形成一个整体,再到各种测试和优化,我感觉我的代码能力得到了极大程度的锻炼。

    从一个简单的C语言小程序,再到自己从零开始写一个庞大的工程,两年半的时间里,我学到了很多,收获了很多,更重要的是,通过实践,我把学到的知识转化成了自己的理解,我觉得这也达到了我学习的目的。

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

    有句话说“存在即合理”,如果培训班的效果比大学教育还要好的话那上大学也就没什么用了。基础的大学教育是有知识体系的,比如我们的计算机系,在大一会学习各种数学知识。有人问计算机系学那么多数学干嘛,我要反问这些人一句,不学数学你还学计算机干嘛?计算机领域的所有精妙的算法,都是需要经过严谨的数学证明才可以去使用的,到现在包括机器学习在内的诸多领域的发展,都需要数学的支持,可以说,数学基础决定了计算机技术发展的上限,没有数学的发展,就不要去谈科学技术的发展。所以说,我们一定要打好数学基础,对于计算机领域的学生来说,数学分析,线性代数,离散数学,概率论几门课是一定要好好学的。

    从大二开始,学校通过计算机组成,操作系统,编译技术,软件工程几门课,自底向上地引领我们去学习计算机的知识。而培训班只是面向工作方面的培训,他们没有时间去给你讲各种基础知识,而是直接讲应用。所以在大学中一步一个脚印地去学下来,你的知识体系会比速成的培训班坚实地多,也更经得起考验。

    对于mooc,我的看法是,如果你有校园可以学习,那么还是要多多利用校园的师生资源去学习,因为课堂有一点是mooc比不了的,那就是互动性。所以在大学中,去听课比听mooc的效果更好,如果实在在大学中听不到某一门课,那么去听mooc也是一种不错的选择。

第三部分——展望

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

    我的梦想就是自己做的东西可以被大多数人使用,我的能力被这个社会认可,为这个社会带来便利。这也是一个自我实现的目标。

    我的规划大概是这样的:

    • 两年内,在一家IT公司实习,积累工作经验和开发经验。
    • 十年内,找一家IT企业工作,参与底层研发团队,开发出可以被大多数人使用的产品。
    • 二十年内,做到IT高管水平,紧跟时代潮流,指引新产品的研发,成为IT领域的杰出人才。

    理想虽远大,但是一步一个脚印地去做,也不是不能实现的,希望我可以通过自己的努力,活成自己喜欢的样子。

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

    实习经验很重要,这是毋庸置疑的,可以帮助我们更轻松地融入工作环境。但是我们也不能太着急,为了积累实习经验而耽误了自己的学业,没有了学业基础的支持,再多的经验也是没有用的,经验虽有用,但它不能帮你走得长远,几十年后,当你用到课堂学习的很多基础知识的时候,你就会发现,原来课堂的知识才是真正的宝藏!