此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/5522
(1)回想一下你曾经对计算机专业的畅想
当初你是如何做出选择计算机专业的决定的?
答:选择计算机专业,一是因为好奇,在大学之前对计算机的了解是少之又少,只听说计算机能够解决一切事情,所以十分好奇它怎么这么厉害,好奇它是如何工作的,我觉得不论学习任何东西,兴趣一定是最好的老师,只有对一个东西有兴趣,才有学习的动力;二是因为计算机的前景好,比较容易就业,可选择的领域较广,所以我选择了计算机专业。
你认为过去接触到的课程是否符合你对计算机专业的期待,为什么?
答:大致符合,大学四年学了很多课程,让我体会到了计算机解决问题范围之广,体会到了它的无所不能。但是很多课程学的还是太过浅显,所以是大致符合。
你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗?
(注:不可以回答 "不是","是"。请把这当成以后工作时面试题,需要回答足够长度,提供足够信息,让对方了解你。比如,给出为什么。)
答:目前而言,计算机是我喜欢的领域,通过计算机解决一些问题时,会让我心情愉悦,我觉得一些项目也是十分有趣。
在现在这个阶段,计算机还不算我擅长的领域,因为我需要学习的东西还有很多,对各种语言的掌握还不算精通,不过,我相信只要付出努力,不断学习,不断进步,计算机会成为我擅长的领域。
(2)考取研究生,对照前人们走过的路和描述未来发展,现在的你自我感觉你已经具备的专业知识、技能、能力有哪些?
离成为一个合格的计算机学生,在专业知识、技能、能力上还差距哪些?
答:我现在所具有的专业知识和技能还太少,能够看懂简单的代码,只能编写对于一些简单的代码,能上来说,具有刻苦学习的能力。
差距上还是很大,在计算机方面现在的我更像一张白纸,需要学习的东西太多太多了,语言方面还不太行,项目经验也比较匮乏。
(3)每天都是一个人生选择的十字路口,学术研究、工程项目、社会实践 (?) ,不同的选择有不同的努力方向。
对照以上你阅读的前人们的经历,你的选择是什么?
在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
针对你的选择,你给自己的本学期的规划是什么?
答:我选择学术研究,想先充实自己的知识量,把基础打好,多看优秀的文献。在学术研究方面,优势就是比较有耐心,耐得住寂寞;劣势就是英文储备量不太够,很难看懂英文文献。
规划:在自己感兴趣的领域上选择优秀的论文进行阅读,阅读完对作者的思路创新点进行总结,学会python。
(4)你对这门课的期待是什么?
你打算平均每周拿出多少个小时用在这门课上?
答:我希望通过学完这门课能够锻炼自己的实践操作能力和团队合作能力,对软件工程有一个更深的了解。
我打算平均每周拿出10个小时用在这门课上。
通读《构建之法》,发布随笔1篇,要求列出5个问题,可以是读后不理解的,或者读后反对的。要有观点、有证据或分析。字数不是直接的考核标准,但是要求长到能把观点表述清楚。
答:(1)在读到72页第10小条异常这一部分我产生了很多疑问,首先是在C++中如何处理异常,其次是异常处理所做的是终止程序还是将程序恢复,最后,虽然我还没有学过C#但是由于在课本70页最下面提到在异常部分,C++和C#是不一样,所以我想知道C++和C#在异常处理方面有什么区别。通过百度,我解决了前两个问题,第一个问题:在C++中,我们常常会使用
try{}
...
catch(){}
块来进行异常处理。
第二个问题:异常处理一般有两种模型,一种是"终止模型",一种是"恢复模型"。"终止模型":在这种模型中,将假设错误非常关键,将以致于程序无法返回到异常发生的地方继续执行。一旦异常被抛出,就表明错误已无法挽回,也不能回来继续执行。"恢复模型":异常处理程序的工作是修正错误,然后重新尝试调动出问题的方法,并认为的二次能成功.。对于恢复模型,通常希望异常被处理之后能继续执行程序。在这种情况下,抛出异常更像是对方法的调用--可以在Java里用这种方法进行配置,以得到类似恢复的行为。(也就是说,不是抛出异常,而是调用方法修正错误.)或者,把try块放在while循环里,这样就可以不断的进入try块,直到得到满意的结果。
对于最后一个问题,由于对C#这一门语言不太了解。目前还未解决这一问题:C和C#在异常处理方面有什么区别?
(2)在读到课本101时,我对“工作流用精确的语言(通常是UML)把用户的活动描述出来”这一句话产生了疑问,我并不懂什么是UML,为什么称他为一种语言?经过查阅资料,我知道了UML是 Unified Modeling Language的缩写,它叫做统一建模语言,是用来对软件密集系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。所以这个意思是UML是软件产品开发的一种标准吗?为什么把它称为一种语言?如果它是一种语言的话和C有什么差别?
(3)课本278页,最上面讲到“冒烟测试”,我很疑惑,作者讲了它的由来,但我对于“冒烟测试”真正的含义还不是很了解,我的疑问在于“冒烟测试”如果不通过可以继续后面的工作?
(4)课本69页goto,之前对于goto语句貌似见过但没有了解过,当看到课本上又出现goto语句时,我便去了解了一下:C 语言中的 goto 语句允许把控制无条件转移到同一函数内的被标记的语句。感觉和break语句有点像,有一个疑问,他俩的具体区别是什么?为什么不太使用goto语句?
(5)对于课本370页到374页中主要讲了作坊式软件工程的劣势,我了解到了现在“云”、“大数据”、“人工智能”和“创新”已经替代了“作坊”,我的疑问在于对于“作坊”的谈论已经完全消失了吗?课本中讲了它的劣势,我想知道它有没有用武之地?
4.很多人有不为大家所知的本事,而这个能力可以超过周围90%的人。比如课堂中教师提到,如果表现得不像高度近视,如何伪装得不像脸盲,能做40个俯卧撑。当然,也可能是篮球、足球、钢琴、ACM、演讲。
请给出你超出朋侪的特殊技能,并告诉我们,你如何通过何种努力、花了多久获得这样的成就。
答:我的特殊技能就是乒乓球吧。在我第一次玩乒乓球的时候就发现自己竟然会打,我觉得可能是因为我经常观看乒乓球的比赛,对它的总体规则有了了解,所以第一次实践的时候就会打,但现在由于我并没有经常性的玩也不太看比赛了,所以水平逐渐下降。
5.采访本课程往届同学(含外校和毕业生,以《构建之法》作为教材的。不含刚好你熟悉的一位软件工程专家)。 现代软件工程这门课已经上了好几年了,以前有很多学生做过团队项目(说不定包括本校的学生),请你们找一个以前的团队采访一下:
当时的项目有多少用户,给用户多少价值? 现在还有人用吗?
这个项目能否给我们团队继续开发,源代码/文档还有么?
项目开发有什么经验和教训
对学好软件工程有什么建议
对18级某师哥进行了采访:项目用户有30来个。价值就是大家都通过项目学到了东西,现在没人用了。
源代码没了。
经验就是团队合作很重要,一定要掌握项目开发的规章制度,教训是一定做好开发记录。软件工程学习过程一定要在实践中进行,只是理论学习不可行,应该多动手,多开站立会议多讨论多总结。
6.以下统计精确到一百行。
你目前的代码量是多少?
你认为优秀的和一般的计算机专业学生,(根据你的理想选择以下两问中的一个)为了有资格入职软件公司/互联网公司,需要多少代码量?从事高校教学科研工作呢?
你计划在本课程结束时,完成多少代码量?这些代码量分布在整个学期中,每周应完成多少代码量?
目前代码量是0,大学期间也没做过什么项目。
我认为从事高校教学科研工作需要至少10000行吧。
我计划在本课程结束时,完成2000行代码量,每周完成100-200行代码量。
7.阅读心得
1)你为何要来上课并且认真参与
读完这篇文章感觉字字珠玑,在大学期间几乎没有听过课,觉得自己自学就行,老师讲的又不好,纯粹就是浪费时间,以各种理由拒绝听课,每次都以玩手机度过整个课堂,所以出来混都是要还的,现在的我就是问啥啥不会,干啥啥不行。终于又给了我一次机会,让我重新做人,重新步入课堂。
大学四年的经验告诉我,上课不听课,下课自己学,对我而言也是不太可能的,手机只能是越玩越好玩,带来的最大弊端是会让自己的专注力下降,生活的浑浑噩噩。
就像文章中所言,老师的知识面肯定远远地高于学生,那在老师身上肯定能学到以前所不知道的东西,而且,认真听课也是对老师的尊重,所以认真听课是极其有必要的。
2)你在大学中体验到了哪种师生关系
在大学里体验到路人甲/路人乙的师生关系,经常就是老师讲完就走,学生上课不听下课就把这门课拋在脑后,不实践,不总结,不反思。导致学生最后碌碌无为,什么东西都没有学到。
读完文章之后,我认为一个好的师生关系应该是教师应该作为学生的引导者,引导学生进行学习,学生通过独立思考,总结学习内容,进行实践,教师再对学生的学习成果进行反馈。