软件工程第1次作业
软件工程第1次作业
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 班级博客 |
这个作业的要求在哪里 | 作业要求 |
我在这个课程的目标是 | 系统地提升软件工程能力 |
这个作业在哪个具体方面帮助我实现目标 | 调整心态, 做好规划 |
第一部分:结缘计算机
-
你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?
选择计算机专业是因为兴趣。我第一次编程是在小学的时候,那时在图书馆买到了一本Visual Basic教学书,大概读了一段时间,印象最深刻的有两件事,一是做出了一个计算器程序,二是完全无法理解指针是什么。虽然没有完全学懂,不过大概从那时起觉得自己是喜欢编程的。之后到中学接触了信息学竞赛,比较系统地学习了编程,在校外参加比赛的时候极大地开阔了眼界,知道了很多大牛,从那之后开始在网络上看各种博客,学到了很多的技术,逐渐地相信自己喜欢计算机并且适合学计算机。
因为接触计算机的时间比较长,有一些经验的积累。在过去遇到的比赛等活动中也有一些比较好的表现,所以觉得自己也比较适合学计算机。而且也有兴趣,自己有做过网站开发,游戏开发,学过不少编程语言,有动力一直学习下去。应当是有比较好的基础条件。
但是和很多博主比差距是极大的,轮子哥(博客M)高二就自己开发了游戏,高三自己实现了一个编译器,大学开始造各种轮子。以及其他的很多博主,例如千里冰封中学时期就开始研究编程语言类型系统,Milo Yip中学时期就已经在开发商业游戏。对比自己,感觉一直在学习,但是输出和实践较少,内化不足。应该多实践,多总结,抓住各种机会开阔眼界,从思维模式上学习各路大佬。
-
计算机是你喜欢的领域吗?是你擅长的领域吗?
我确信自己是喜欢计算机的,因为我会自发的在空余时间学习计算机技术,不是因为计划或者压力,而是因为我可以从中获得乐趣。有一次寒假开始时我做了很多计划,学英语学数学等等,在假期快结束的时候,很多计划没有完成,但是我却在计划之外的学习了Erlang语言,这是完全基于兴趣的。
从学习经历来看,计算机应该是我最擅长的领域了。是否擅长应该只能够比较得出,相比于其他课程,计算机类的课程让我感到的压力更小,并且课程里计算机实践的内容越多,我的成绩通常也就越高,这让我相信自己是擅长计算机的。
-
你热爱这一专业吗?你对计算机的热爱是怎样的?仅仅是口头的吗?
如博客L中提到的,“有兴趣,有热情,并不代表你就一定行”。曾经我是相信自己热爱计算机的,但是和许多博主对比后我产生了怀疑。感到自己投入的精力不够,钻研的精神不足,很多时候浅尝辄止,没有深入精通。职业和兴趣是不同的,今后还应该鞭挞自己,在一个方向上更加深入的研究学习。
第二部分:在计算机系里学习
-
你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?如果不能,请分析一下为什么。
在北航上了许多的课,感觉大部分必修课质量是比较好的,学完后可以感到有所收获,但是感觉培养方案灵活性比较低。博客H和博客B中表达了一些对学校的不满,我认为本质原因是课程设计者的想法和学生的需求不服。国外的许多大学,例如Standard和UC Berkeley,他们的培养方案就更加自由一些,选课上有很大的自由。不同的学生可能有不同的兴趣和发展需求,有的同学想做理论,有的同学想做软件开发。UC Berkeley给学生提供了一个课程路线图,不管计算机理论还是软件开发都有着推荐的课程和学习顺序。但是在北航计算机学院学习,感觉重点是必修课,选修课覆盖面比较少,有些计算机方向没有课程,而且一些选修课的质量不高。
不过发展是需要过程的。现阶段北航教学质量,教学制度还比不上世界名校,但是可以看到所有课程每年都在改进,培养方案也在不断迭代。我相信主要是经验不足,没有硬性的问题,只要教学一直在有效的改进,北航的未来会更好。
-
迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。
中学期间我写的代码主要是算法题,后来有自己做一些网站等项目,大学开始才写一些有规模的程序。总共写的代码应该有数万行了。
最复杂的项目是编译原理课设写的编译器,为了锻炼自己尽可能使用C++比较新的特性,自己实现了错误处理以及格式化字符串等功能,也尽可能的按照面向对象思想维护可扩展性,并且花了大量的时间在编译优化上,总共做了8类的优化,最后代码有1万多行,编译器的最终效果还是比较令我满意的。
-
科班出身和北大青鸟有什么区别?
曾经在资源网站上一瞥培训班的课程,我认为主要有三点区别:
自学能力:北大青鸟的课程更多是机械是的学习,讲师已经把所有的知识系统的总结好了,需要记忆的内容也罗列出来了,学生就只是”肌肉记忆“般的学习。相比之下,北大青鸟教的内容科班基本上都不教,因为各种软件,编程语言的官方文档已经讲的很清楚了,科班出身的学生有着很强的学习能力,可以自己内化新知识,产生系统的理解。因此新技术出现时科班学生可以很快适应,北大青鸟的学生则不一定。
研究能力:高校会教给学生研究的能力,如果解决一个问题需要这个世界上还不存在的知识,科班出身的学生会尝试去创造这样的知识。这样的研究能力是北大青鸟无法培养的。
数理基础:完成理工科高等教育的学生有着良好的数理基础,因此可以运用科学的方法论,有效的通过实验,建模等手段去刻画并解决现实世界中的问题。北大青鸟出身的学生通常不具备良好且扎实的数理基础。
-
学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的计算机有关系吗”,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?
因为我在高中的时候看吴恩达的机器学习公开课程,发现自己数学知识很缺乏,很多地方看不懂,所以一直告诉自己数学一定要学好,数学学多少都不嫌多的,很多难题可以用精妙的数学工具来建模解决。因此为了拓宽自己的数学知识,也选修了数学二学位。
虽然过去没有疑问,但是在计算机学院学习了几年后,我产生了相反的疑问。在做深度学习的时候,我苦思冥想应该怎样设计模型,在很多次失败的设计后感觉有些沮丧,我开始思考自己到底喜欢的是什么,自己在做的工作和计算机好像没有太大关系,机器学习和模式识别更像是在做数学的工作。所以我目前存在着这样的疑问,计算机科学它的边界是什么?计算机专业的学生适合做的是理论还是应用呢?
马克思曾说,”世界上任何一门学科如果没有发展到能与数学紧密联系在一起的程度那就说明该学科还未发展成熟“。即便是社会科学,如今也开始发展量化社会科学。数学可以给予我们客观准确的指导,任何学科都是。
第三部分:未来规划
-
对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?
在本科这几年里我也经历了几次试错,先后尝试过一些方向,最后发现自己比较喜欢也比较适合更加狭义上的计算机科学方向,系统方面的工作。
自进入大学以来我就下定了出国留学的目标,因此目前仍然是在积累学术方面的经验,多提升自己在系统方向上的能力,也多做实践,尽量参与到开源社区的工作当中去,主要以留学发展学术道路为主。
未来希望从事系统架构设计方面的工作,因为在未来很长一段时间仍然是在学校为主,我希望自己能够在开源社区积累一定的经验,这样团队合作能力和项目工程能力都能够有所提升,有助于未来社会和职业道路的发展。
-
你们马上就要面临实习了,你打算在企业内实习还是在实验室实习?
从学长学姐以及我的了解来看,企业实习通常是一个更好的选择,因为我们做的研究工作最终都是要落地的,换句话说研究潮流是跟着需求在变化的,在企业里可以知道实际的产业中存在的问题是什么,我们究竟需要什么样的技术,更加宽泛的说,企业实习对于一个未入社会的学生来说可以拓宽眼界,这样更加有助于自己未来的选择。而且一个好的企业的研究环境是不亚于实验室的,希望之后能够在企业实习并做自己想做的工作。
-
实习经验究竟有多重要?是否需要马上开始积累实习经验?
沈向洋说过,实习是给你钱让你学习,这是最好的一段时光。博客M中也提到了实习带来了很多的成长。不管是在未来从事学术道路还是进行工作,实习可以帮助我们了解这个职业真正在做的是什么,也可以从实习中了解到自己的不足,也能在实践中学到领域知识,对于未来的发展和选择都有很大的帮助。从很多博主的总结来看,实习经历对一个人非常重要,而且越早越好。