这个作业属于哪个课程 | 2021春季软件工程(罗杰 任健) |
这个作业的要求在哪里 | 个人阅读作业#1 |
我在这个课程的目标是 | 合作开发出一个具有实用性的项目,并锻炼自己的工程能力 |
这个作业在哪个具体方面帮助我实现目标 | 相关阅读材料让我受益匪浅 |
第一部分:结缘计算机
1.1 机缘与必然——选择计算机
我选择计算机专业学习,既是一种机缘,又是众多外界因素决定的必然。在大学一年级信息大类的学习过程中,最让我失去自信心的课程就是C语言程序设计基础训练。在课程的中后期,我身边的大佬上机实验排名都在一百多名、几十名甚至前几名。而我经常排在三四百名,最菜の一次甚至排到了600多名。当时我对这门课也不是很感兴趣。于是,我就产生了对自身的认知——不适合编程,我之后一定要选择对编程要求较低的专业。
Nevertheless,到了下半学期,一门课极大地增加了我的自信心——数据结构。这门课我学得十分摸鱼,然而体验却十分良好。我每次作业都拖到DDL最后一两天才交,而且很多题目不会,要参考CSDN上的算法。同时,我根本没有代码风格的概念(例如等号两边从不加空格,胡乱命名迷惑自己,随意使用全局变量等),每次作业的代码风格分都是0。这里不得不感谢数据结构的课程组,对于代码风格以及算法性能完全不做要求。最后这门课给了我92分(我隔壁寝室几个人疯狂卷也不过如此),可以说是非常仁慈了。这门课彻底地改变了我的认知。同时,我的几门学分较高的基础课程分数也较高,让我整体排名较高,有了自由选专业的机会。这里也要感谢北航的”大类招生零调剂“政策,只要几门学分高的课成绩好,选专业基本就稳了。加之当时士谔书院2018学生群疯狂赞扬计算机学院,我当时也没有什么其他项去的学院,同时家长老师也十分推荐计算机学院,我也就随大流选了计算机学院。
1.2 计算机是你喜欢的领域吗?是你擅长的领域吗?
在某些方面,我对计算机领域有着较大的兴趣。我自身有个特点:接受新东西时,跨出第一步相当困难,但是一旦迈出第一步,我就会产生兴趣,接下来也越来越简单。因此,对于那些给予充分指导的课程,我还是比较感兴趣的。有些课程给予的提示实在少,我很难理解其中深奥的内容,也就只好不了了之,靠问助教和交流度日。
我绝对不敢说计算机是我擅长的领域,毕竟在计算机领域,”擅长“是很难做到的,毕竟即使C++之父也不敢说自己”精通C++“。
第二部分:在计算机系里学习
2.1.1 你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?
整体而言,我对计算机学院的学习生活还是比较满意的,最想吐槽的还是部分课程的规则设定。和之前提到的数据结构相比,大二下某门专业课代码风格检查不是满分就扣一半分(有些设定我认为过于死板,比如方法限制在60行,对于一些实现较为复杂的方法完全不够用,方法分离我认为其实也没有什么必要),同时按排名给分导致我成绩很低,一些实际上作业写得比我更差的同学因为有额外的补救环节反而获得相当高的分数。不过,我更想吐槽的还是大三上学期的一门原本为选修的核心专业课。这门课的大作业有个特点:一个必做项加上若干选做项。但是直到作业提交的那天老师才告诉我们:选做环节不做就只能拿到基础分。这让我们十分难受(尤其是”卷神“们)。于是,第二次大作业”卷神“们开始了自己的表演:报告中一张图片占一页纸,改个参数弄一张图片再占一页纸,几张图对比还能占一张,写了20页的因为有人写了40页而浑身难受。不过,最后给分才是最让大家难受的,大多数同学分数低于80分,而且老师也不肯透露任何分数的具体信息。我认为,一门课程应当做到给分有理有据并且让学分信服,这样即使分数偏低也能接受。
2.1.2 比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?如果不能,请分析一下为什么。
我没有在国外学习的经历,所以对于这个问题我也不好回答。但是可以肯定的是,北航的计算机学院某些课程正在沿用国外某些优质课程的模式,并且在向好的方向发展,这无疑是令人非常欣慰的。这些课程虽然难度偏高,工作量偏大,但是收获要比传统模式的课程大得多,对于能力的提升也非常明显。我认为在这些课程的设计上我们学院的老师和学校能做到和国外的课程平起平坐,甚至更好。
2.2 迄今为止,你写了多少代码,描述你做的最复杂的软件作业?
到目前为止,我写的代码量在15000行左右。就整个项目而言,最复杂的软件作业是编译课程设计的编译器,最终代码约为5000行。当然,其中有些函数十分相似,可以复制粘贴,因此实际开发难度也没有想象中那么大。
2.3 学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的计算机有关系吗”,你现在是否还有这样的疑问?
我从未有过这样的疑问,我一直认为我们学习数学知识很重要,并且掌握得越多越好。目前我们开发的项目没有用到太多数学知识,这并不是因为数学知识没用,而是因为我们开发的项目还停留在表层的实现阶段,使用到高级数学知识的轮子早已被其他人实现。试想一下,我们在信号处理与大数据分析等过程中,用到了多少轮子?假如我们不具备相应的数学知识(特别是线性代数),当需要开发新的轮子时如何处理?所以,我认为如果想要开发更高端的项目,必须具备比常人更多的数学知识。
我本人很喜欢数学,除了大三的一门课以外,我所有与数学有关的课程成绩都比较令人满意。为了学习更多数学知识,我选修了数学学院的二学位。虽然这里面有些课程十分折磨,但我还是学到了很多知识。(这里点名推荐常微分方程,老师讲课真的太棒了!)
第三部分:未来规划
3.1 对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?
就像之前所说,由于基础确实不如很多大佬,我的工程开发能力不足,对于大型项目的开发并没有什么把握。但是我可以发挥自身在数学方面的优势,在研究生阶段从事数据科学方面的学习(当然前提是我能考上研究生)。在完成学校的生涯后,我打算去应聘一些IT公司的后端分析师,设计算法与开发框架。我认为至少目前以我的开发能力与bug寻找能力,直接去开发项目并与客户进行交互就是折磨自己。我很想成为一名企业中的数据分析师。数据分析师可以从用户的数据中分析用户的体验感受,找到产品的不足,从而在不直接与用户交互的情况下在后端改进产品。当然,在我的工程能力逐步提升之后,我一定会去尝试主动开发项目,毕竟IT行业这块永远不能固步自封。
3.2 你们马上就要面临实习了,你打算在企业内实习还是在实验室实习?
首先最近我在准备向一些企业投递暑期实习简历,我打算在暑假参加企业的实习。虽然说研究生阶段也能参加实习,但本科实习和研究生实习还是多多少少存在区别的。由于我目前在为大二下的那门核心专业课曾经的不努力买单,因此最近还没什么机会参加实验室实习,但一旦完成该课程之后,我一定会去积极发现实验室实习的机会。