20200910-2 博客作业
此作业的要求参见: 作业要求 20200910-2 博客作业。
1.建博客(1分)
Q1: 在 cnblogs.com (博客园)建账号(1分)。
A: 已建立,请查看昵称: WenqiangXie
Q2: 关注 杨贵福(0分)。
A:
Q3: 加入本班 https://edu.cnblogs.com/campus/nenu/2020Fall。
A: 已加入。
2.博客作业(10分)
参见 [http://www.cnblogs.com/easteast/p/7403491.html],阅读其中给出的材料及评论,并回答下面几个问题:
(1)回想一下你曾经对计算机专业的畅想
Q1: 当初你是如何做出选择计算机专业的决定的?
A: 首先,我从初中开始,就对计算机产生了浓厚的兴趣,并且期望未来从事相关的工作。高考之后,在选择专业的时候,我综合自己对计算机相关专业的兴趣和了解到的各专业就业前景,选择了软件工程专业。
Q2: 你认为过去接触到的课程是否符合你对计算机专业的期待,为什么?
A: 我任务大部分符合。首先,大学学习即学习了计算机基础课程,如果C语言、数据结构和相关的数学课程,也学习了一些应用性较强的课程,如 WEB开发、 C#开发等,这些课程即锻炼了我对基础内容的理解,也提供了实践的能力。也有一些不符合,主要时一些比较复杂的课程,限于课时和基础等原因,没有深入的学习,如计算机网络,只学习了较为浅显的内容,对很多有趣的实现细节而避开了。
Q3: 你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗?
A: 我觉得计算机是我喜欢的领域。我可以在计算机领域的相关知识学习和对相关前沿技术的发展的了解中获得快乐,我也很感谢掌握的计算机技术,使我获得了一份不错的技能。虽然现在并不是很擅长,但我希望通过我的努力,有计算机的相关领域可以成为我的擅长领域。
(注:不可以回答 "不是","是"。请把这当成以后工作时面试题,需要回答足够长度,提供足够信息,让对方了解你。比如,给出为什么。)
(2)考取研究生,对照前人们走过的路和描述未来发展,
Q1: 现在的你自我感觉你已经具备的专业知识、技能、能力有哪些?
A:
a. 基础的编程技能。我了解了多种编程技术,并在实际的项目中运用过多种编程技术。如在科学计算中使用的Python和Matlab,也对工业环境的JS, HTML, C#, Java有一些了解。
b. 快速学习的能力。我可以根据项目需求,较为快速的学习相关技术,为项目提供支持。
c. 发现和解决问题的能力。我有一定的发现问题的能力,乐于在开发过程中设想未来开发可能出现的问题,和复盘之前开发过程的问题。这有助于提升为了的开发质量,也使得可以更快的发现存在的问题,更早的采取预防措施。
Q2: 离成为一个合格的计算机学生,在专业知识、技能、能力上还差距哪些?
A:
a. 基础知识有欠缺。对计算机科学的基础学科欠缺较多,如离散数学,很多常用算法的设计和思想等。
b. 编程的能力还很欠缺。不能在项目中自如的使用各种语言的特性,来提升程序的可读性,鲁棒性和性能。
c. 学习的能力还要提升。计算机科学发展极快,又和众多学科交叉,在平常项目中,会发现学习的能力还是不够,需要掌握更好的学习方法,可以更快的从文献中提取关键的有用的信息。
d. 英语语言的欠缺。
(3)每天都是一个人生选择的十字路口,学术研究、工程项目、社会实践 (?) ,不同的选择有不同的努力方向。对照以上你阅读的前人们的经历,
Q1: 你的选择是什么?
A: 我目前选择学术研究。这是我本科二年级后努力的方向和目标,目前还没有改变的意愿和契机。
Q2: 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
A: 我认为优势在于我在本科期间在导师的带领下,参加过一些研究工作,比其他同学更早有过相关的研究经历,也在实际的课题中积累了一些实验经验、储备了一些相关知识。劣势我认为一是我数学能力较弱,不能很好的进行理论分析,其次是英语语言嫩里较弱,对越多文献和撰写论文不利。
Q3: 针对你的选择,你给自己的本学期的规划是什么?
A: 首先是尽快提升英语语言能力,主要包括是阅读能力和写作能力。现在已经开始进行相关的训练了。其次是对基础知识的学习,如数学,统计学等,这方面也在进行。
(4)你对这门课的期待是什么?
Q: 你打算平均每周拿出多少个小时用在这门课上?
A: 对这门课程最直接的期待是希望这个课程可以让我较快的掌握为项目选择合适架构的能力。准备每周花费10 ~ 12小时。
3.博客作业(10分)
通读《构建之法》,发布随笔1篇,要求列出5个问题,可以是读后不理解的,或者读后反对的。要有观点、有证据或分析。字数不是直接的考核标准,但是要求长到能把观点表述清楚。
如何提出有价值的问题? 请看这个文章:http://www.cnblogs.com/rocedu/p/5167941.html ,以及 在互联网时代如何提问题。 还有这些要点:
① 在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文
② 列出一些事例或资料,支持你的提问 。
③ 说说你提问题的原因,你说因为自己的假设和书中的不同而提问,还是不懂书中的术语,还是对推理过程有疑问,还是书中的描述和你的经验(直接经验或间接经验)矛盾?
一个模板可以是这样:
我看了这一段文字 (此处引用文字),有这个问题 (此处给出具体问题描述)。 我查了资料,有这些说法(此处引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。
【或者】我反对作者的观点(引用作者的观点,给出自己的观点,以及给出反对的理由)。
研究生应该能写出自己的思考, 而不是摘抄书本内容。
提示:编程经验不多的同学,建议看16章 “创新”, 提出自己的问题。
A:
-
书本21页开始介绍单元测试,但例子都是单独的小例子,我很疑惑,如何组织一个大项目的单元测试结构。
-
书本23页中,提到了测试要覆盖更多的情况,请问如何更快更好的找出足够覆盖面积的测试用例。
-
书本中以C#为例说明了简单的单元测试如何编写,但这是否通用,单元测试如何与其他常用的框架集成?
-
科学计算中不太强调单元测试,请问如何在科学计算的项目中引入科学计算,以保证代码的争取性;
-
单元测试和项目的工作量大致如何分配?在课本中没有发现这方面的描述,但计算用时时特别需要该数据。
4.博客作业(10分)
(1)很多人有不为大家所知的本事,而这个能力可以超过周围90%的人。比如课堂中教师提到,如果表现得不像高度近视,如何伪装得不像脸盲,能做40个俯卧撑。当然,也可能是篮球、足球、钢琴、ACM、演讲。
Q1: 请给出你超出朋侪的特殊技能,并告诉我们,你如何通过何种努力、花了多久获得这样的成就。
A: 修电脑。看中专课表,学习了两个星期。
Q2: 与你的特殊技术类似的,你还有一棵计算机专业以外的同学不具备的技术树。如果跨专业,请不要借口自己原本是某某专业的,因此基础不好,你是计算机系的研究生。
A:
技能树
高级语言
1. C语言,顺利完成C语言和数据结构课程,每节课的作业都认真完成,leetcode刷题50道;
2. Python语言, 为三篇论文编写程序;
3. Matlab语言, 为三篇论文编写程序;
4. Typescript + CSS, 完成三个商业项目;
5. C#, 完成两个业余的自我项目。
软件实现
1. 阅读各类官方文档的能力。
(2)请给出你当前的技能树与技术偏好,列举目前你已经具备了哪些专业知识和能力。请参照邹欣老师给出的工程师水平要求列表https://www.cnblogs.com/xinz/p/3852177.html,包括不限于这些,逐点给出自己具备的能力,这些能力将帮助你在接下来课程中的小组项目里做出贡献(并得到分数)。请提供具体的数据来辅助证明掌握的技能, 例如“学了 C语言”是不够的,还应提供“交过8次实验作业,最长的代码达到200多行,最难的是多线程那个实验……”。确保技能是具体的且可衡量的,请搜索 SMART - Specific Measurable Achievable Realistic Timely 。
A:
类别 | 具体技能 | 回答 |
---|---|---|
语言 | 最拿手的计算机语言 | Matlab,代码量接近5000 |
语言 | 第二拿手的计算机语言 | Python,代码量接近4000 |
软件实现 | 有没有在别人的代码基础上改进 | 有,利用过开源的论文实现 |
软件实现 | 你是怎么读懂别人的代码的 | 配合论文,框架文档以及项目的README |
软件实现 | 你在开发过程种碰到的最复杂的bug是什么?是如何解决的 | 源码依赖的开源库头文件实现有问题,查阅相关文档和动手做了实验后,修改相关头文件实现解决了 |
软件测试 | 你如何测试自己的代码 | 编写测试用例和手动测试相结合 |
软件测试 | 你如何测试别人的代码 | 没有测试过 |
5.博客作业 (10分)
采访本课程往届同学(含外校和毕业生,以《构建之法》作为教材的。不含刚好你熟悉的一位软件工程专家)。 现代软件工程这门课已经上了好几年了,以前有很多学生做过团队项目(说不定包括本校的学生),请你们找一个以前的团队采访一下:
Q1: 当时的项目有多少用户,给用户多少价值? 现在还有人用吗?
A: 在每个阶段都会找20人左右是试用,并采访体验。具体可以看博客内容。从结课以后就没有再继续做下去了,目前没有人在用。
Q2: 这个项目能否给我们团队继续开发,源代码/文档还有么?
A: 可以的,我们发布的博客可以看这个链接https://www.cnblogs.com/ylsfsq/。
Q3: 项目开发有什么经验和教训?
A: 确定了项目的题目后,要明确好每个组员需要负责的工作内容,工作量大的时候做好合理的分工就能避免浪费时间。
Q4: 对学好软件工程有什么建议?
A: 书本上的知识只能是书本上的,最重要的还是在实践中去切身体会一下,在过程中遇到了某个问题的时候,可能会突然明白理解书上内容的用意。
6.博客作业 (5分)
以下统计精确到一百行。
Q1: 你目前的代码量是多少?
A: 预估5100行。
Q2: 你认为优秀的和一般的计算机专业学生,(根据你的理想选择以下两问中的一个)为了有资格入职软件公司/互联网公司,需要多少代码量?从事高校教学科研工作呢?
A: 我认为需要20000行,这样才可以熟练的根据项目需要,设计和实现实验。
Q3: 你计划在本课程结束时,完成多少代码量?这些代码量分布在整个学期中,每周应完成多少代码量?
A: 完成5000行,分布在每周中评价完成500行。但这只是估计,早期会少一点,后面项目进行中会多一点。
7.阅读材料,写心得(10分)
以下两篇博客必读,并务必写一些心得:
(1)你为何要来上课并且认真参与 [http://www.scalerstalk.com/816-attention]
A:
我想我直接的原因就是我需要一个成绩,最低要求是及格,更好是可以拿到优秀的分数。而这,也许可以不来上课、不认真参与就可以获得,但也有重大的风险,我不认为我应该为了逃课的时间这种收益不明的操作来承担这种风险,我愿意选择通过每节课必到并认真参与来降低这种风险,获得更好的成绩,我需要的成绩。毕竟,如果当有一些收益更大的情形需要我通过放弃课程时间来获取,我相信每个人都有不少合情合理的渠道请假。这相当意义上来说,不止公平,甚至超值。
至于文章解释的一堆,课程是必要的,是有经验的人设置的诸如此类。我不认同,也不反对,每个人的条件不同,认知水平与辨别能力不同,这导致不能绝对的说正确还是错误,我遇到过很无聊但也真的有用的课程,让我受益匪浅;也遇到过毫无意义,甚至让我怀疑学校录取教师门槛的课程,肯定也有不少我认为毫无意义却内含珠玉的课程。但唯一不变的是,每节课我按时参与,布置的作业认真完成,因为这样可以让我获得很好的平时成绩,我需要这个。唯一不同的是我付出的方式,很多课程,认真的跟着老师,质疑、讨论和提升,在这个过程中,不断更新自己的知识和经验,也有一些课程,不迟到不早退,认真完成作业,然后认真刷题,因为我知道,这个“经验丰富”的老师只是在不断的摧毁我的三观和价值体系,甚至他教的我敢写到试卷上的话,我的考试不用通过了。
所以,非要说为何来上课并认真参与,最直接且不可拒绝的原因是,我需要这个成绩,至少及格,努力优秀。其次才是,我希望从可敬的、更加优秀的教师身上汲取到让自己提升的营养。
(2)你在大学中体验到了哪种师生关系 [http://www.cnblogs.com/xinz/archive/2011/05/16/2048044.html]
我在大学体验到多种教师类型,既有现学现教,共同进步的Buddies / Buddies类型,也有关于在课程内事无巨细,一手包办的Baby-sitter / Babies类型,Stranger / Stranger类型也遇到不少。大部分教师都让我很感激,也都从他们身上学到了不少东西,对我帮助良多。Buddies / Buddies类型的老师,我们最终亦师亦友;一手包办的老师在学习的时候觉得内容很多,又被时时的催着完成作业,细心的帮助纠正作业中的错误,当时只是拿到了一个不错的成绩,但考研时,这门课作为基础课程,知识点方方面面都被老师关照并教诲过,让我的复习省力不少,回想起来,更是感激。Stranger / Stranger类型也有,我凭借着卷面分安然度过考试,但该教师可以让全班同学愤愤不平,形同陌路,不论是否承他恩者,想来为人处世,也是自有水平。
作者说Coach / Trainee (健身教练 / 健身学员) 的关系时最理想的,想来对于大部分课程,便是如此吧。毕竟如无论师还是学生,都已是成年人,没有谁为谁负责,但都得对自己的工作负责,这是成年人最舒服的状态。教师完成他的工作,认真教书、认真出题、认真评分,学生认真上课、认真准备、认真考试。最终,学生学到知识,拿到好成绩,教师也成功的完成工作。这对双方都是最好的结果。