第一次作业-热身!
第一次作业-热身!
写在前面:
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2020年春季计算机学院软件工程(罗杰 任建) |
这个作业的要求在哪里 | 第一次作业-热身 |
我在这个课程的目标是 | 提高自己的团队协作能力, 代码编写能力, 学会软件工程领域的技能. |
这个课程在具体哪方面帮助我实现目标 | 阅读前人博客, 吸收经验, 反省自己. 明确自己今后目标, 为未来读研, 就业做出合理规划. |
第一部分: 结缘计算机
你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?(必答)
我如何选择了计算机
我中学喜欢的学科是物理和数学, 这两个专业都是我极感兴趣的, 但是我怕自己受不了枯燥的理论研究, 所以决定要学应用类的, 当时想考的专业是工程物理, 但是全国只有12所大学开设这个专业(2017年), 其中一所是清华, 剩下的11所皆是我心中不那么理想的学校, 所以当时想的就是, 要么考清华读工程物理, 要么就不学物理.
后来高考完了, 不出所料, 虽然拼了一把, 但终究离清华差太远. 当时以为想着要学数学专业, 但是家长, 同学, 老师都说数学太枯燥, 而且理论性太强(现在不这么觉得), 将来恐怕不好找工作, 都劝我不要选数学, 即便应用数学也是脱离不了数学这个范畴, 也许终究还是落得个数学教师的下场(并不是贬低, 只是对于性情冲动年轻人来说教师终究太过无聊, 现在不这么觉得了).
在我犹豫不决的时候, 我遇到了北航的招生组人员, 他们给我介绍了北航, 我当时并不是太了解北航(北航在南方没有什么名气), 后来问了老师同学, 上网自己查了, 北航也是一所好大学, 而且当时正好赶上北航开展大类招生, 而且北航大部分专业都是偏数学, 物理. 并且我的分数也堪堪可以在北航读个不错的专业. 啊真是天作之合, 我当即下定决心要读北航. 于是来到了北航, 当时由于是大类招生, 在加上北航大部分专业我都不排斥, 所以就按照热度填报的志愿, 高工没考上, 来了信息类专业.
到了北航信息大类之后, 自然逃不了写代码, 写的代码多了, 发现自己其实挺喜欢写代码, 也喜欢数学, 更不用说北航的计算机专业在全国都是排得上号的, 而且在本校也是香饽饽, 再加上大一学习比较努力, 成绩勉强挤进了计算机学院的线, 所以就进入了计算机学院.
我的条件如何
我家世代都是农民世家, 根本没有碰过电脑, 当然也不知道编程啊, 软件啊什么的. 大学之前接触电脑都是在网吧玩儿游戏, 和专业知识稍微搭点边的也就是高中信息技术考试了, 但是也没有什么技术含量主要就是死记硬背, 不求甚解, 老师估计也知道我们没有什么计算机基础, 所以没有讲什么原理性的东西. 这也是为什么当时填报志愿的时候完全没有往计算机专业思考的原因, 脑子里根本对计算机没有什么印象.
上了大学之后, 买了第一台自己的计算机, 也是现在这台. 家里人虽然都不懂什么是计算机, 但是好在父母都很支持我的学业, 也不干涉我玩儿手机电脑, 虽然有时候确实是在打游戏, 看电视.
我的条件总的来说: 没有基础, 资源, 但家人, 朋友支持, 老师也很好.
相比博主(博客I)如何
说句老实的, 客观条件比这位博主要好得多, 我的电脑配置碾压博主, 我所拥有的互联网资源比博主多得多, 我有家人父母的支持..., 但是我相信如果他和我享有同样的条件, 也许现在他已经闻名一方, 学有所成, 而不是象我这样浑浑噩噩, 以完成学校交代的任务为目标.
主观条件(个人情绪, 意志等)来说, 我远不如博主, 他是真的热爱计算机, 而我感兴趣罢了, 我的意志力在这个光怪陆离的社会中早已迷失, 更不用说和从小坚持的博主相比.
虽然有所差距, 但我并不后悔选择计算机这条道路, 并且这条道路虽然有苦有泪, 有通宵, 但我还是收获了很多东西, 包括成就感, 知识, 逻辑思想等.
计算机是你喜欢的领域吗?是你擅长的领域吗?
计算机是我喜欢的领域吗
是的. 相比想起来就令人头大的英语, 历史等, 以及枯燥的数学, 物理理论, 我觉得计算机专业是很适合我的, 并且我也喜欢的, 不需要死记硬背自己不理解的东西, 也不是什么都要严格证明, 以及严谨的理论推导. 一切都建立在事实上, 一切都是可以被验证的, 学习到的都可以实践, 实践的都是经验, 而且及其贴近生活.
我擅长计算机吗
我不知道, 也许吧. 在我所有的技能中, 也许计算机方面的时处在最前方的, 但是在我的计算机同行中, 也许我的技术能力是拖后腿的, 虽然我喜欢计算机, 但并不能掩饰我菜鸡的本质.
第二部分: 在计算机系里学习
你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?比较你在中国大学的经历,你的老师和学校能做到和国外那样吗? 如果不能,请分析一下为什么。(必答)
大学零零散散, 形式化的东西占据了太多的时间, 写总结, 刷td等, 不过好在我还是在写总结的时候认真思考过自己的得失, 刷td还不如让我们强制要求每天锻炼.
我理想中的大学, 应该是老师和学生很亲近, 老师亦师亦友, 同学之间以学习交流为主, 学生有问题有途径解决, 并且及时准确. 可以获得自己想要的知识, 又能适当扩展, 可以在学校中做出有成就感的事物, 而不是一味学习底层知识, 命令行编程.
和我想得差别有点大. 我最不满意的就是学校有一些课程, 一方面给学生安排挺繁重的任务(至少我觉得), 另一方面又太放纵同学, 或者说不好听一点就是根本不管. 我只告诉你我要xxx, 在这里可以学到xxx, 然后就不管了, 学期末你给我交个xxx程序就好了. 诚然, 大学生应该有自学能力, 老师说的路也的确能走通, 但是我相信大部分同学对于这条路都是两眼一抹黑, 知道是对的, 但不知道走到哪里是个头, 也没有一点阶段性成就, 也不知道自己做到什么程度, 算不算合格. 具体哪些课程就不方便在这说了(当然主要是因为我自己菜, 别的同学完成得很好). 在这一点上, 我觉得编译技术这门课挺好的, 我们最后完成了一个编译器, 这比我们其他课的作业从难度上来讲是要复杂的多的, 编码量也确实很大, 但是我完成了, 虽然很艰辛, 但是过程中从没有想过放弃, 一步步从词法走到了机器码优化, 我很满足. 但是和别的大学比起来, 北航已经做的很好了. 有的学校(听我同学说), 学完数据结构甚至没有用代码实现过链表的基本插入程序, 简直不可思议.
我没有出过国, 但是有一些道听途说的经验, 感觉国外的课都看重学生的动手能力, 老师和学生一起动手做, 而不是老师高高在上指导, 学生在下面抹黑行走. 我觉得老师和学校可以做到国外那样, 甚至更好, 但是很难. 老师们都有自己的工作, 而且中国老师的待遇也没有国外的好, 中国孩子的思维方式和外国孩子也不一样, 这些都是阻碍当前教育方式改进的巨石.
迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。(必答)
迄今为止, C数据结构写过有两千行吧, 计组, 面向对象, 操作系统, 编译加起来得有个一两万行吧, 再加上自己课外写的一些程序, 以及作业什么. 总计估计两万行左右.
最复杂得作业有两个: 设计流水线CPU, 编写一个类C文法编译器.
设计流水线CPU, 就是用Verilog语言从加法器开始搭建一个支持50条指令的流水线CPU, 原理并不难, 对于我来说复杂得地方在于细节太多, 而且稍微有一个地方错了, 整个流水线就会出问题, 而且要相对流水线进行覆盖性测试相当困难.
编写类C文法编译器, 要求我们用C/C++编写一个编译器, 包括词法程序, 语法程序, 语义程序, 中间代码生成, 目标代码生成, 优化等部分, 最后组合成一个功能完成地编译器. 老实说对我来说还是挺有挑战性的, 老师上课讲原理, 而且有指导习题一步步跟进, 老师也在讨论区和同学们讨论, 总的来说还是挺成功的.
速成的培训班和打基础的大学教育还有mooc之间有区别吗?
我认为有区别. 培训班培训是最低级的, 只教你print("hello world");
可以打印出hello world, 却不告诉你print函数从何而来, 底层如何实现.
mooc更高一级, mooc是分散的大学教育, 上操作系统的mooc会告诉你print函数是如何从一个一个系统底层函数组合而成.
大学教育比mooc更高一级. 单从某一门课程来看, 我认为和mooc差别不大, 最多多些老师互动, 作业评奖什么的. 我觉得评价大学教育应该从整体来看, 我们知道一个人(一般人)在家的学习效率和在学校的学习效率差别很大, 尤其最近疫情原因, 在家学习相信大家感受更深. 大学教育不只有课堂, 还有课下, 这是mooc所不具备的, 非学校人士mooc上完一堂课也许去做饭了, 也许去工作了, 没有更多时间来思考更多的问题, 而大学生正拥有这种难能可贵的思考的机会, 学生上完课会思考自己哪里不懂, 会和同学交流, 会问老师, 也会学习到更多的东西, 这也是我认为比大学教育mooc更珍贵的地方.
这里我想说一点, 虽然培训班的基础是最差的, 但是也是见成效最快的, 希望大学里面也可以考虑吸取相应的经验, 开点速成培训班似的课也未尝不可. 至少让学生尝到甜头, 然后自然会想去学习更底层的东西, 去解答给多的为什么.
第三部分: 未来规划
对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?(必答)
我想做一名数据工程师或者软件开发人员. 并不喜欢纯粹理论研究.
大体来说, 我的打算是在本科尽量打好数学理论基础, 然后读研.
具体而言, 正如博客K中所言, 主要是多学习技术, 先不考虑职位什么的. 但是又不能只学习技术, 还应该软硬结合, 同时学会如何团队协作, 如何处理人际关系, 如何读懂需求等.