软件工程作业0——The Road Not Taken
项目 | 内容 |
---|---|
这个作业属于 | 2020春季计算机学院软件工程(罗杰 任健) |
这个作业的要求是 | 热身作业 |
我在这个课程的目标是 | 掌握软件工程化方法,提高自我软件能力 |
这个作业在哪个具体方面帮助我实现目标 | 了解自己过去现实未来之间联系,反思现在以铺路未来 |
作业正文 | 如下 |
第一部分:结缘计算机
缘起
你为什么选择计算机专业?
- 我想大部分国内大学生的本科专业选择是在高考结束的一两个月,根据实际分数并匹配院校的最优学科来综合评估完成的。
- 在大的教育背景中我也是沧海一粟,高考分数决定了我最好来北航,北航的最好学科之一就是计算机,然后从信息大类进入计算机。这个因素决定了我70%的专业选择。
- 还有一部分幸运的人,由于家庭教育天纵英才等各种机遇,比如之后要讨论的博主,可以在高中甚至更早的教育中,找到自己的兴趣所在,能在非常年轻或者幼年时,在自己热爱的领域取得很多专业学生都无法达到的成绩。
- 我所在的高中就有一些这样的同学,当时也有计算机竞赛队,也配置有计算机课程教授基本的编程和计算机应用软件。但当年对数学、生物更感兴趣,也就没有考虑过深入学习编程。
- 我和很多高中同学也数次尝试去寻找自己喜欢什么专业,适合什么专业。但当时我们的信息获取能力有限,日常都在上课刷题,现在想来当时对很多专业的认识就像井底之蛙对世界的认识一样,而我们对自我的了解也非常有限,所以我和很多高中同学都经历了志愿填报时的专业向往,再到大学学习产生落差,再到重新开始学习自己喜欢的专业内容。
- 对专业认识一个误会,决定了另外30%我选择计算机学院的因素,2017年6月结束高考,2016年AlphaGo等人工智能概念已经火热,当时我好奇什么是智能,想用人工智能去理解什么是人类智能,以为计算机就是学习人工智能的学科,于是报考,但看到了大一的培养方案,我发现一切都和我想的不一样。
- 但我已经是一名信息专业的学生了。
四顾
你认为你的条件如何?和这些博主比呢?
- 选择来到信息大类还有后来的计算机学院之后,我明白计算机专业和我志愿填报时的期望反差很大,但我依旧想把这门就业前景好、收入高、理工科思维强、有挑战性的专业学好。
- 在平时学习和一些竞赛科创项目里面,我很快就意识到周围有一群计算机基础好、并且非常热爱编程的人,他们是我们的助教、同学、甚至学弟学妹们,也有很多书本中和博客中的人物。
- 我认为我的条件不算特别好,虽然从小就打计算机游戏,但是也并没有尝试过编写游戏,虽然学习能力比较强,GPA也不低,但是进入计算机学院也不想深入的去学习某一个应有软件或者硬件或者编程语言。只是对整个计算机的学科体系非常感兴趣。
- 更没有博主的那种对计算机探索到凌晨四五点的兴趣和热爱。但博主的一点感受,我是惺惺相惜的。
- 博主大学想学计算机,但是在英语专业,每天给自己设定英语目标,但还是只想做计算机的事情,博主学英语是为了计算机,英语对博主来说只是一个工具,而不会是毕生的工作与热爱。
- 那计算机对来说是什么呢?
思考
计算机是你喜欢的领域吗?是你擅长的领域吗?
我喜欢计算机吗?
- 结合博文不要轻易在简历上写我热爱编程,我热爱学习这篇文章,我肯定不敢写我热爱编程。
- 但我认为这不是一个 Yes or No的问题,更像是一个程度的问题,就像我喜欢一些男孩子,但他们不会是我的男朋友一样。
- 某种程度上,我是喜欢计算机的,喜欢学习时的细致严谨执著坚定,充满挑战与惊喜,也喜欢它的体系结构的分层次分支脉却井井有,更喜欢调通程序的成就感、找到bug的希望感,也在和同学的交流中收获了技能和友谊。
- 但我可能更喜欢或者擅长别的学科。
我擅长计算机吗?
- 从现有专业知识来说,我是不擅长的。
- 但在一篇博文中提到,Facebook公司聘用聪明且热爱计算机的员工,聪明表示学习能力强,学习新知识速度快,热爱则是态度上的热诚投入、行为上的专注执著。
- 由于计算机不是我最热爱的学科,所以未来可能也不会特别擅长计算机。
第二部分:在计算机系里学习
挑战
迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业
- 迄今为止,我的代码量应该上万行了。最复杂的软件作业应该是上学期的编译原理学期大作业。
- 编译原理大作业需要将一个类C的代码转化为mips代码,并做优化,从类C代码到中间代码,再到中间代码的优化,再到中间代码转化为mips代码,综合起来应该有5000+的代码量。
- 整体实现的难度不大,但是工作量比较大。
- 不过回想大一到大三,从一个程序小白,到可以独立编写上千行代码,再到这学期的万行代码开发任务,中间有低迷也有奋起,但是每一个学期的项目实践任务都是巨大的挑战,我的计算机编程能力也在不断提升。
学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的计算机有关系吗”,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?
- 线性代数,是我们大一重课之一,同期还有数学分析、C语言程序设计,我当时就很困惑,线性代数为什么要用矩阵来算,人为设计矩阵的这些运算律是为了什么?数学分析也是,微分积分多是运用在物理计算中,计算机的学生学习这个有意义吗?C语言程序设计,Python写代码,变量随便用,各种库函数灵活调用,为什么还要学习C繁冗的语言?
- 到现在,我在项目中遇到云台欧拉角表示的万向节死锁问题,需要用四元数表示,我就理解了矩阵这一抽象的空间表示转换方式,这也是计算机图形学的基础。
- 而现在接触的神经科学中的EEG脑波分析,中的过滤、预处理、波形分析,都是基于分析学
- C语言,更是理解计算机运行的入门语言之不二选择。
- 但在大二,学习概率与统计的时候,我看过《计数之乐》和《统计与真理》,明白统计构成了我们的日常生活,是很多学科分支的基石,概率也是各种决策、科研的基础,所以我在尽全力去学好他们。
- 类似的问题“我为什么要...,它对...有什么用?”,我们会在不同的阶段遇到,会听不同人提起
- “我们为什么要读书?”
- “我们为什么要退学去创业?”
- “我们为什么要学英语?“
- ”在疫情面前,我们为什么要困在家里?”
- ......
- 这是正常人对自我行为的反思,这也是理性人追求行为目的的发问,而关于这一系列问题的得到的不同回答,自我给出的不同解答,决定了人生的不同路径。
- 而我现在面对的问题是“我为什么要学计算机,它对我未来的新专业有什么用?”
落差
你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?如果不能,请分析一下为什么。
吐槽
- 我记得上一次吐槽北航还是4个月前,吐槽北航老师的水平不如中科院,后来听国科大同学的“学习吐槽”,以及前面部分的知乎帖子,也就不觉得是个槽点了。
- 可能随着对社会各方面的了解,我的吐槽越变越少了,了解问题的背景、成因、可能的转化,越来越觉得自己吐槽无用、个体渺小。
理想的大学教育
- 我对理想大学教育的初瞰来源于《大学的精神——教育是让一个人成为最好版本的自己》,这本朋友的书籍,其中介绍了最顶尖的几所学校的精英教育,提倡通识教育、终生教育。
- 但西洋的教育体系和我国或者说前苏联的教育体制总是形成一种对比,通识和专业、自主和分配... 但专业教育、分配体制绝对有其时代意义和正确性,通识教育意味着更长的人才培养周期,并不是所有家庭乃至所有国家都能承受如此大的教育经费,某种意义上,也并不是所有人都认为全方面发展是有意义的。分配制度,可以保障一些冷门但必要的行业的基本人才储备,而且是先学后有兴趣还是先有兴趣再学,这对很多人来说都不是一个能轻易分清的问题。
- 综合上述两种教育模式,我的理想大学是通识教育、终生教育,以培养学高精尖人才为目标的学校,因为我希望我自己是一个全面的社会公民,也是一个能为社会做贡献的专业学者,而我的家庭也能负担的起相对优质的教育支出。
但北航或者说国内的大部分学校还是更多的倾向于专业教育,而且一旦选定专业之后,转专业的代价相对较大,这也是我的大学和我理想大学的区别。不过专业化的计算机工程教育培养了我的编程实践能力,这是对未来的科研是极其有帮助的。
第三部分:未来规划
向前
对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?
- IT行业,对我未来的深造来说,更像是“The road not taken"
- 我希望我可以做一名为某个我热爱并且擅长的领域做出独一无二的贡献的学者,只是应该不在计算机专业。
- 回到志愿填报、专业选择我记得当时在香港大学的招生简章上面看到理科、工科、商科、医科的区分,我一直不明白为什么要做这样的区分,直到看到一个回答中的一句话* ”理科是推进人类认知边界、探索世界原理的。工科是运用原理创造财富的“ *,相比起创造我更喜欢探索,更喜欢探路,更擅长理论相较实践,也许我更擅长理科。
- 既然我想用人工智能去探索人类智能,人工智能的计算机先修课差不多学完了,我是不是应该去学主要的人类智能的学问了——神经脑科学。
- 这也是一些寒暑假,同专业同学在学计算机,我在看神经脑科学方面的论文,在中科院、清华听学术报告、旁听组会的原因和动力。
- 未来我会读神经生物学的博士,但在未来五年内,必然会走计算机和神经脑科学的交叉,再到工作进入研究院或者高校,从助研到PI到做自己感兴趣对社会有贡献的研究。
未来四个月的软工课
- 回归课程,回归作业
- 作业要求有一句话,至于行至何处,你可以认为我说是以后的程序员生涯,也可以认为我说是未来四个月的软工课
- 我有时候在想,大学四年是一个人精力脑力都极其旺盛的时期,计算机科学也是一门如日中天蓬勃发展的学科,虽然这不是我最喜欢的专业,但却是所有专业必修的课程,能在大学深入学习一门使用广泛的学科是非常幸运的。
- 由于转专业,我时常感叹,眼前的这门课,可能是我修的计算机子领域的最后一门课,学习的时候也多了一份仪式感。
- 寒假由于暑研需要撰写CV,写完CV看到自己大学走过的路,只有自己知道哪些走的坚实,哪些是灌的水。
- 走的坚实一些,怠惰的时候多为未来考虑一些,灌水的时候想想看自己未来简历的感受。这写给*“以后的程序员生涯,也可以认为我说是未来四个月的软工课”*
软件工程作业0——The Road Not Taken的更多相关文章
- 在Linux下使用RAID--使用mdadm工具创建软件Raid 0(1)
在Linux下使用RAID--使用mdadm工具创建软件Raid 0(1) RAID即廉价磁盘冗余阵列,其高可用性和可靠性适用于大规模环境中,相比正常使用,数据更需要被保护.RAID是一些磁盘的集合, ...
- VMware Workstation(虚拟机软件) V10.0 简体中文版可以安装了
在虚拟机软件中VMware Workstation算是一款非常强大较稳定的软件了,今天 VMware Workstation 10.0正式发布了,最让人欣喜的是该版本终于有了简体中 文版了,从现在开始 ...
- UltimateDefrag磁盘碎片整理软件 v3.0.100.19汉化版
软件名称:UltimateDefrag磁盘碎片整理软件 v3.0.100.19汉化版软件类别:汉化软件运行环境:Windows软件语言:简体中文授权方式:免费版软件大小:3.25 MB软件等级:整理时 ...
- xTiNt 论坛发帖辅助软件 1.0 绿色版
软件名称:xTiNt 论坛发帖辅助软件 1.0 绿色版软件语言: 简体中文授权方式: 免费软件应用平台: Win7 / Vista / Win2003 / WinXP / Win2008 软件大小: ...
- 软件RAID 0
软件RAID 0的实现 RAID 0又称为Stripe或Striping,它代表了所有RAID级别中最高的存储性能.RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请 ...
- 软件工程作业 - word count
(编程和软件工程作业系列) 实践最简单的项目:WC 实践是理论的基础和验证标准,希望读者贯彻“做中学”的思想,动手实现下面的项目,并和别人的成绩相比较,分析产生差距的原因. 1. 实现一个简单而完整的 ...
- CentOS7+ApacheServer2.4+MariaDB10.0+PHP7.0+禅道项目管理软件8.0环境部署
CentOS7+ApacheServer2.4+MariaDB10.0+PHP7.0+禅道项目管理软件8.0环境部署 by:授客 QQ:1033553122 目录 一. 二. 三. 四. 五. 六. ...
- Atitit.软件仪表盘(0)--软件的子系统体系说明
Atitit.软件仪表盘(0)--软件的子系统体系说明 1. 温度检测报警子系统 2. Os子系统 3. Vm子系统 4. Platform,业务系统子系统 5. Db数据库子系统 6. 通讯子系统 ...
- C++实现的屏幕截图软件 v1.0
之前用win32做的屏幕截图软件,使用了好久,非常好用. 在2.0版本中增加了屏幕尺和颜色拾取功能,并且改用屏幕和内存DC双缓冲,彻底消灭了闪屏,可惜代码丢失了 好不容易找到1.0版本的代码,以后再重 ...
随机推荐
- 对Vue为什么不支持IE8的解释之一
在JavaScript对象中有一个Object.defineProperties(obj, props)方法 该方法主要用来给指定对象添加自定义属性 可以接收两个参数: 第一个参数 要定义或者修改属性 ...
- 瑞士一苹果店内iPhone突然爆炸致7人入院,iPhone还值得买吗?
与国产手机高歌猛进态势呈现"最萌发展差"的,是以三星.苹果为代表的海外手机厂商在过去一年的疲态.数据显示,2017年小米手机产量较2016年增长幅度达76%,OPPO和vivo则分 ...
- 全栈新视觉——前后端分离
1234 前端工程化从单纯的 HTML/CSS/JavaScript,到 gulp/webpack 以及 node.js.可能还需要其他的插件 sass.less.vue.react.angular. ...
- 给文本中的url加超级链接,同时滤过已加过链接的url
/** * 给文本中的url加超级链接,同时滤过已有链接的url * @param string $str [description] * @return [type] [description] * ...
- Flink命令行提交job (源码分析)
这篇文章主要介绍从命令行到任务在Driver端运行的过程 通过flink run 命令提交jar包运行程序 以yarn 模式提交任务命令类似于: flink run -m yarn-cluster X ...
- C++走向远洋——55(项目一3、分数类的重载、>>
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- paddlepaddle目标检测之水果检测(yolov3_mobilenet_v1)
一.创建项目 (1)进入到https://aistudio.baidu.com/aistudio/projectoverview/public (2)创建项目 点击添加数据集:找到这两个 然后创建即可 ...
- html+css+js+Hbuilder开发一款安卓APP,根本不用学Android开发!
我们知道,要做一款安卓APP,咱们得先学安卓开发语言,例如java,前端后端.那么没有这些开发语言基础,咱们怎么做呢?其实现在有比较好的开发方案就是做webAPP,咱们可以用web前端知识构建安卓客户 ...
- docker 学习路线
docker 学习路线 参考资料 知乎 docker 的学习路线 Docker - 从入门到实践 Docker 核心技术与实现原理 Docker 入门 <Kubernetes in Action ...
- 检测js对象是不是数组类型?
面试时候被人问如何检测一个未知变量是不是数组类型,丢脸啊,老祖宗的脸都丢没了,这都不会,回家啃书本去吧!!! var a = [];方法一:Array.isArray([]) //true type ...