此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/5522
1.建博客(1分)
在 cnblogs.com (博客园)建账号(1分)。
关注 杨贵福(0分)。
答:已完成。
2.博客作业(10分)
(1)回想一下你曾经对计算机专业的畅想
答:当初高考完,对大学很多专业都不太了解,听说计算机专业好就业,就选择了学习计算机。我觉得过去几年里所学的课程还是比较符合我对计算机专业的期待的,有理论课和专业课,理论课为我学习计算机专业打下了一定的基础,而专业课是伴随着大量的实践的,想要学好计算机专业,和动手连习有着不可分割的关系。我很喜欢计算机这个领域,因为通过编程人员的努力,可以实现很多功能,这在我看来是很奇妙的,并且也和我们的生活息息相关,这让我觉得计算机行业是有它存在的意义的。但是,这却不是我擅长的领域,虽然对于计算机专业的一些基础知识和技能有一定的掌握程度,但是动手能力还是不好,这也是我接下来要努力的方向。
(2)考取研究生,对照前人们走过的路和描述未来发展,现在的你自我感觉你已经具备的专业知识、技能、能力有哪些?
离成为一个合格的计算机学生,在专业知识、技能、能力上还差距哪些?
答:目前了解了c语言,Java语言的语法、数据结构等其他计算机专业的基础知识、能够做一些简单的程序设计并实现程序。但是上了几周课之后,发现大多数同学都在学习python语言,这是我要学习的一个方面,最重要的是我要利用这几年锻炼自己的动手能力,争取完成几个完整的项目。
(3)每天都是一个人生选择的十字路口,学术研究、工程项目、社会实践 (?) ,不同的选择有不同的努力方向。对照以上你阅读的前人们的经历,你的选择是什么?在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?针对你的选择,你给自己的本学期的规划是什么?
答:根据前人们的经历,我的选择是认真做好学术研究,在这个基础上进行一定的社会实践。我对自己未知领域有很强烈的期待和向往,也喜欢接触新鲜事物,适应能力也比较强。但是实践经验比较少,没有单独完成过什么大的项目,以后我要多多动手,多学多练。
(4)你对这门课的期待是什么?你打算平均每周拿出多少个小时用在这门课上?
答:我希望通过学习这门课,可以对程序开发有一个系统的认识,可以了解程序开发中的一些流程和各个步骤需要完成哪些工作,以及在团队中如果与同事合作。我打算平均每周拿出12小时左右用在这门课上,认真完成作业,争取学到一些新知识。
3.博客作业(10分)
通读《构建之法》,发布随笔1篇,要求列出5个问题,可以是读后不理解的,或者读后反对的。要有观点、有证据或分析。字数不是直接的考核标准,但是要求长到能把观点表述清楚。
(1)有没有什么标准可以判断一个软件是“足够好”了呢?
书中第16页提到软件工程的一个重要任务,就是在时间、成本等多种约束条件下决定一个软件什么时候能“足够好”,可以发布。那么究竟一个软件开发到什么程度了可以算是“足够好”了呢?
(2)一个程序中有绝对互相独立的层次吗?
书中第26页讲到:如果软件中有互相独立的几个层次,那么在测试组中可以分类,....比如只修改了“用户界面”的代码,则只需运行“用户界面”的单元测试。可能是我的认知有限,我认为一个程序好像很难有互相独立的层次,就像上文中提到的修改了用户界面的代码,但是整个程序的运行不只是需要界面,还需要相关的逻辑操作,那只测试用户界面这样可以吗?
(3)一定要成为领域的专家,才能创新吗?
书中16.1.5小节提到一个迷思:要成为领域的专家,才能创新。我认为这两者的因果关系不一定是这样,一个人有所创新就代表已经对这一领域的专研程度很深了,不然怎么创新得出来呢,那这不就是专家了吗?那为什么一定要成为领域的专家,才能创新呢?
(4)为什么可以经常发布可用的软件,间隔能短则短呢?
在书中第114页提到敏捷开发的原则有一条:经常发布可用的软件,发布间隔可以从几周到几个月,能短则短。这样做用户不会很烦吗?大多数人对一个新的软件都需要一个或长或短的适应时间,而且原来的软件用的好好的,为什么要选择换一个新的软件呢?那这条原则存在的意义在哪呢?
(5)对于一个软件,到底是创新更重要,还是扎实的技术基础更重要?
书中第374页讲述了一个魔方创新的实例,果冻从一开始的魔方的唯一代理,逐渐的被同学们追赶上甚至超越,这其中的原因就在于同学们的创新。但是我认为果冻的魔方基础应该是最好的,技术很扎实,而其他同学玩魔方并不像果冻那么熟练,只是在某些方面做了某种改进而已,那这算不算是一种投机取巧呢?同样对于一个软件,是不是应该首先有过硬的技术支持,然后再考虑创新吗?
4.博客作业(10分)
很多人有不为大家所知的本事,而这个能力可以超过周围90%的人。比如课堂中教师提到,如果表现得不像高度近视,如何伪装得不像脸盲,能做40个俯卧撑。当然,也可能是篮球、足球、钢琴、ACM、演讲。请给出你超出朋侪的特殊技能,并告诉我们,你如何通过何种努力、花了多久获得这样的成就。
答:我认为自己很有耐心、承受压力的能力比较强大、心态也比较平和。有耐心是因为我很喜欢小孩子,经常在课余时间做助教、家教之类的,我非常喜欢和小朋友们在一起,同时他们也在无形中增加了我的耐心程度,对于他们所提出的问题我都会细心的解答,孩子们也很喜欢我。而心态这方面,主要是自己善于调节,特别是在一些大型考试前的复习阶段,我基本上都是不骄不躁,不受外界影响,踏踏实实地按照自己的节奏来,这也导致了我在考试的时候从不会紧张,从而可以平稳或超常的发挥。
5.博客作业 (10分)
采访本课程往届同学(含外校和毕业生,以《构建之法》作为教材的。不含刚好你熟悉的一位软件工程专家)。 现代软件工程这门课已经上了好几年了,以前有很多学生做过团队项目(说不定包括本校的学生),请你们找一个以前的团队采访一下:
- 当时的项目有多少用户,给用户多少价值? 现在还有人用吗?
- 这个项目能否给我们团队继续开发,源代码/文档还有么?
- 项目开发有什么经验和教训
- 对学好软件工程有什么建议
答:项目为实验室管理系统。当时有90多名用户,用户包括老师和同学,老师通过这个系统管理实验室更加容易了,同学们使用实验室也更方便。由于后期没有人员维护,所以现在没有人在用了,因此也不能再继续开发了,一些开发时的文档已经没有了。学长根据当时用户使用的情况,建议我在开发软件之前一定明确好用户的需求,做好需求分析,以免出现一些多余的、根本没用的功能。对于学好软件工程这门课,学长给我的建议是一定不要怕麻烦,多读书多练习,不要怕花费时间过长,多付出才有回报。
6.博客作业 (5分)
以下统计精确到一百行。你目前的代码量是多少?你认为优秀的和一般的计算机专业学生,(根据你的理想选择以下两问中的一个)为了有资格入职软件公司/互联网公司,需要多少代码量?从事高校教学科研工作呢?你计划在本课程结束时,完成多少代码量?这些代码量分布在整个学期中,每周应完成多少代码量?
答:我目前的代码量大概是2100行左右,我认为优秀的计算机专业学生进入互联网公司至少需要7000行的代码量,而优秀的计算机专业学生则需要20000行的代码量,从事高校教学科研工作至少需要15000行的代码量。我计划在本课程结束时完成8000行的代码量,平均每周应完成500行。
7.阅读材料,写心得(10分)
以下两篇博客必读,并务必写一些心得:
(1)你为何要来上课并且认真参与 [http://www.scalerstalk.com/816-attention]
(2)你在大学中体验到了哪种师生关系 [http://www.cnblogs.com/xinz/archive/2011/05/16/2048044.html]
答:
(1)打开第一篇博客就看到“认真听讲是一种能力”这句话,我真的十分赞同。为什么小学生每节课设置为40分钟,中学生为45分钟,而大学已经是90分钟甚至更长。正是因为我们随着年龄的增长,注意力集中的时间变得越来越长,而重点又是认真二字。近几年开始,不论是校园里还是教师里,都在贴各种上课关机的标语,这反应出的就是我们当代大学生上课期间并没有做到认真听讲。课上老师讲的知识都是精华,老师讲一节课的效果可能比我们自学几个小时还好。到最后考试时也不难看出,得高分的大多是上课认真听课、积极与老师讨论的同学。所以,认真听讲真的是一种能力,而且是一种很出众的能力,一个人最美的,就是认真思考时的样子。
(2)读了第二篇博客里边的几种师生关系,我觉得在大学中体验到的是这里边没有包含的一种师生关系,我在这几年的学习中体会到了亦师亦友这个词的含义。可能是由于我们学院的传统,老师和同学们之间的关系都很亲近,老师在教授我知识的同时,也教会了我许多做事的方法,同时又给了我很多鼓励和支持。在我准备考研的这段时间,由于撞上毕业季,学校方面有很多事情,但是老师们都会以我们的学习为重,争取能自己处理的绝不“打扰”我们,为我们创造了很好的学习环境,同时也积极的为我们搜集各种资料和信息,耐心的解答我们的各种问题。