0. 学习别人的经验和体会。 同学们在上这门课的时候,都是大二,大三,有的是跨专业考研过来的。觉得在大学里,到教室来听课有意思么?请看:你为何要来上课并且认真参与, 另外,请看:你也可以把你的课堂生活过得像这样, 如果你的老师和助教做不到,请把博客转给他们看。    
你在学校里的困难和迷茫,别人一定有过。请看看别人怎么学习的,有些是科班,有些是野路子,有些成功,有些失败。 请读完下面所有博客 (读这些博客你不吃亏,你也不上当!)。读完后,写一篇博客,选下面至少 3 个文章(在博客中加上原文的链接)谈谈自己的感想,你现在的条件比他们如何? 你对计算机的热爱仅仅是口头的么? IT 专业的技术道路, 职业道路,社会道路怎么计划呢?
 http://www.cnblogs.com/xiaozhi_5638/p/4485805.html  (偏科生自学摸索的道路)
http://www.cnblogs.com/geniusalex/p/4928713.html (速成的培训班和打基础的大学教育有区别么)

 http://www.cnblogs.com/Tpf386/p/4798437.html 很多同学看不起大学老师按部就班地教课,他们心想,我看视频也能学会的,为何要来听课?请看这个学生学习的经历。
    https://news.cnblogs.com/n/531362/   半路出家,认真学习,不断在实践中进步。

 http://www.cnblogs.com/blog470130547/p/4222870.html   
 http://www.cnblogs.com/unruledboy/p/DevCareer.html 
 http://coolshell.cn/articles/4561.html
    http://blog.csdn.net/haoel/article/details/1688104
http://www.cnblogs.com/freeflying/p/4796369.html
http://www.cnblogs.com/geniusvczh/archive/2011/12/16/2290808.html 
http://www.cnblogs.com/AndersLiu/archive/2011/04/19/programming10years.html
IT小小鸟的故事: 
 http://book.douban.com/subject/4006425/discussion/22803733/
https://book.douban.com/subject/4006425/discussion/22803961/

 http://book.douban.com/subject/4006425/discussion/22802960/   
补充阅读:
    不要轻易在简历上写我热爱编程,我热爱学习    
请看正式的作业要求: http://www.cnblogs.com/ChildishChange/p/7363123.html   

1.  从第一章的 “四则运算程序” 例子出发, 逐步构建一个能解决实际问题的 “软件”。

http://www.cnblogs.com/xinz/p/7417960.html  

2.  软件有很多种,也有各种分类办法:

ShrinkWrap (在包装盒子里面的软件,软件在软盘/CD/DVD上);   Web APP (基于网页的软件);   Internal Software (企业或学校或某组织内部的软件);Games (游戏);   Mobile Apps (手机应用);    Operating System (操作系统);    Tools (工具软件)

     选取对你最相关的一类软件,  请回答:

1) 此类软件是什么时候开始出现的, 这些软件是怎么说服你(陌生人)成为他们的用户的?  他们的目标都是盈利么?  他们的目标都是赚取用户的现金么?还是别的?

2) 你个人第一次用此类软件是什么时候,你当时多大,具体在什么学校读几年级,老师是谁,同桌叫啥?软件是如何到你手里的?例如:邮购,下载,互相拷贝,从应用商店购买,等等。 (这个部分必须详细写,不然这道题目得0分,我要看看全世界的学生怎么抄袭这一段的)。

3)我们知道有些软件是收费的,有些是“免费” 的, 那么,软件公司为何会给你免费使用这个软件呢? 写这个软件的工程师们,他们的工资如果不从你(用户)这里来, 从哪里来呢? 目前你们当地的软件工程师的工资大约是多少,请给出尽量详细的分析,精确到年收入多少万元人民币。

4) 你是如何学会用这软件的?它给你什么好处,坏处? 这些软件是如何处理 bug 的?  如何更新新版本的?  你估计软件团队更新一个主要版本花了多少 人月? 请写上人月的定义. 如果你们宿舍(或者你和另外三四个同学)要做同样水平的软件,请估计你们需要多少时间?

5) 同一类型的软件之间是如何竞争的?你现在还用它么,你为何选择这个产品,而不是它的竞争对手?

6)5年后, 这种软件运行的硬件会有什么变化, 软件再过 5 年还会存在么,为什么?

7)列举你在使用上述软件的时候观察到的 “特殊”现象,它们和硬件有什么不同?  这些能说明软件的某些本质特性么?

同学在写文献综述类的文章的时候, 要参考很多别人的描述或研究成果。 这是无可厚非的, 因为一个人无法亲自经历或验证那么多事情,总要援引间接经验、论断、描述。  关键是 -- 注明引用来源。引用来源不能简单地说 “百度”,而是要指向具体的文章。  如果不注明,就会出大问题。 虽然很多同学以后不会去写科研论文, 但是这个要求坚持,重要引用没有说明的,文章要扣分直到 0 分为止。

3.  成功的程序,成功的软件,成功的软件企业

“写程序” 这个活动大多数情况下是个人行为。 我们听说的优秀程序员似乎都是单打独斗地完成任务。同学们在大学里也认识一些参加ACM 比赛的编程牛人,  他们写的ACM 比赛的程序是软件么?   “写程序” 和 ”做软件“ 有区别么? 请采访这些学生。

Edsger Dijkstra 曾经提到:“Software engineering, of course,presents itself as another worthy cause,but that is eyewash: if you carefully read its literature and analyse what its devotees actually do,you will discover that software engineering has accepted as its charter ‘How to program if you cannot.’”[i]

软件工程是不是教那些不怎么会写程序的人开发软件? 你怎么看? 请采访一个编程特别厉害的学生 (例如学校ACM 队的队员)。

我们说 软件企业 = 软件 + 商业模式
下面提到的一个游戏团队, 有很好的软件,但是商业模式和其他软件之外的因素呢?有没有考虑到?
http://news.cnblogs.com/n/528911/

4.  科学(science),工程 (engineering)和手艺 (craftsmanship)[这个题目可以在期末的时候做]

你所在的学校有计算机科学专业和软件工程专业么?相关专业的教学计划和毕业出路有什么不同?采访这些不同专业的老师/同学。

如果是计算机系,问老师: 你发现了计算机科学的什么客观规律

如果是软件工程,问老师:你构建了什么样的软件?你发现了工程的什么规律?

如果是搞ACM 等算法比赛的同学,问他们:你最近又在练习什么手艺

阅读本书有关软件工程和计算机科学的区别的内容,并看其他文章,谈谈你的看法。

文章举例:http://www.drdobbs.com/architectureand-design/software-engineering-computer-science/217701907

http://www.computer.org/cms/Computer.org/ComputingNow/homepage/mostread/MostRead-SW-SoftwareEngineeringAnIdeaWhoseTimeHasCome.pdf

http://www.exceptionnotfound.net/software-development-is-not-software-engineering-do-we-want-it-to-be/

5. 有人认为,现在绝大多数编程语言都是以英语为基础,中国人编程还要学习英语,这增加了不必要的障碍。  如果有 “中文编程”, 则是解决中国程序员编程效率一个秘密武器,请问它是一个 “银弹” 么,它能极大增加中国程序员的效率么? 
参考:
http://weibo.com/2210132365/BiYTws242
http://www.chinesepython.org/ 
http://baike.baidu.com/subview/545069/545069.htm 
6. 创建个人技术博客 (建议是 cnblogs.com), 快速看完整部教材,列出你仍然不懂, 或者不同意的 5 到 10 个议题,发布在你的个人博客上。
如何提出有价值的问题?如何进行有价值的讨论? 请看这个文章:http://www.cnblogs.com/rocedu/p/5167941.html ,以及 在互联网时代如何提问题。 还有这些要点:
① 在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文
② 列出一些事例或资料,支持你的提问 。
③ 说说你提问题的原因,你说因为自己的假设和书中的不同而提问,还是不懂书中的术语,还是对推理过程有疑问,还是书中的描述和你的经验(直接经验或间接经验)矛盾?
一个模板可以是这样: 
我看了这一段文字 (引用文字),有这个问题 (提出问题)。 我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。

【或者】我反对作者的观点(提出作者的观点,自己的观点,二者差别,以及理由)。

大学生应该能写出自己的思考, 而不是摘抄书本内容。

提示:编程经验不多的同学,建议看16章 “创新”, 提出自己的问题。
7. 课上同学们应该根据自己的爱好和情况组成 5 - 7  人的项目小组。 并且报告 老师/助教。
7.1: 请每个小组在 cnblogs.com 上面创建团队博客,第一个博客把小组成员都介绍一下。
既然是一个团队, 就要有团队的一些规矩,大家先要讲清楚,责任/义务/权利/利益是什么,如何衡量各自的贡献,并让同学们都明确(书面签名)同意团队的要求。 
这些要求中要包括这样一条:团队在Alpha 阶段之后会选出一名队员,TA 要自己寻找下一个队伍。
#团队博客作业1#  
7.2: 现代软件工程这门课已经上了好几年了,以前有很多学生做过团队项目(说不定包括本校的学生),请你们找一个以前的团队采访一下:
- 当时的项目有多少用户,给用户多少价值? 现在还有人用吗?
- 这个项目能否给我们团队继续开发,源代码/文档还有么?
- 项目开发有什么经验和教训
- 他们对学好软件工程有什么具体、可以操作的建议
写成一个博客   #团队博客作业2# 

8. 软件工程的各种名词、工具的起源和变化
了解这个行业的基本概念,编程语言,工具,可以引用相关资料并注明来源
名词:
按时间顺序列表, 展示 “软件” , “软件工程”,瀑布模型,Object-Oriented, Mythical Man*Month, Code Complete (代码完成), Structured Query Language, 4GL, CoCoMo,Y2K 问题,  I18N, Agile Methodology,SCRUM, 这些词汇是如何出现的 - 何时、何地、何人提出。
参考资料:

http://en.wikipedia.org/wiki/John_Tukey

http://linux.cn/article-4778-weibo.html 
http://buzzorange.com/techorange/2015/01/26/margaret-hamilton/
http://en.wikipedia.org/wiki/Margaret_Hamilton_%28scientist%29 
同样,写博客的时候,引用资料时请说明来源。
编程语言
汇编语言,COBOL,LISP PASCAL, C,  PL/1, C++, Object-C, BASIC, Unix Shell, Perl, Java, Python, C#, Swift, Go, Kotlin, ...
选取相互有关系的三到四个语言, 描述他们的起源,发展,演化,每个语言在鼎盛时期大约有多少使用者,它们创造了什么样的产品。
你是怎么学习这些语言的?对于一个准备成为软件工程师的大一学生,你认为学习各种计算机语言应该有什么样的次序?
参考资料:
https://en.wikipedia.org/wiki/Generational_list_of_programming_languages   
https://www.info.ucl.ac.be/~pvr/paradigmsDIAGRAMeng108.pdf   
https://webhome.csc.uvic.ca/~mcheng/330/spring.2016/index.html  
https://softwareengineering.stackexchange.com/questions/10675/ideal-programming-language-learning-sequence  
集成代码编辑环境 (Integrated Development Environment, IDE):

在Unix,PC,Mac 上面大家都用什么编程, 按时间先后,列出各个工具第一版出现的时间, 鼎盛时期的用户量(估计),和主要优缺点。

提示:Vi/VIM,Emacs,Turbo Pascal, Turbo C, Visual C (包括VC6.0), Visual Studio, XCode, Eclipse, Android Studio, VS Code, Source Insight
提示:请看年度的编程工具排名。 

源代码管理工具/项目管理工具:

搜索一下 Unix SCCS,  Microsoft Visual Source Safe, Microsoft TFS、Git & GitHub,Mercurial、Bitbucket、Trac、Bugzilla、Rationale, Issue,Jira)

按时间次序,列出各个工具出现的时间,鼎盛时期的用户量(估计),和主要优缺点。

9. 我们不是在真空里谈软件工程, 软件要运行在硬件芯片上面, 下面看看一个计算机芯片的发展历史:
http://perspectives.mvdirona.com/2014/09/august-21-2014-computer-history-museum-presentation/  
http://mvdirona.com/jrh/TalksAndPapers/DileepBhandarkarAmazingJourneyFromMainframesToSmartphones.pdf
https://www.youtube.com/watch?v=7ptXpNFY3XM
请回答: ① 软件的发展历史有什么纪录片/PPT 可以参考?  ② 软件和芯片的发展有什么相互依赖,相互拉动的关系? 能否举例说明?
10. 开发软件有很多种方式,从软件运行的平台来看,可以在下面的平台运行:
  • 网页 (只要有浏览器就可以访问软件或服务)
  • Windows 平台 (例如最新的Windows 10 支持 PC,Surface,Mobile,甚至Xbox 运行)
  • 安卓平台
  • iOS 平台 (Mac 和 iPhone)

请找一个同学结对 (参看本书结对编程的内容),两人共同工作 (不能分开干活),从上面的列表中选取两个平台,在每个平台上,写一个最简单的 "Hello World" 类型的程序,把写程序的经历写成博客发布出来,内容包括:

- 什么平台, 用什么编程语言,什么软件构建环境 (IDE),什么软件工程的工具,开发的流程大概是什么,最后程序的源码,和用户界面是什么?

(可以从网上查找相关资料,甚至源程序都可以参考其他人的, 但是要自己把程序编译,运行)

11. 这么多作业,似乎压力很大啊! 请看别的同学的体会:本科,本科,美国硕士。
请看TED 的演讲, 谈谈你对压力的看法,以及怎么和别人合作, 帮助别人,把压力转化为动力,在互相帮助的环境中成长。

[i] 来源: http://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036.html

现代软件工程 第一章 【概论】练习与讨论相关推荐

  1. 现代软件工程 第一章 概论 第9题——邓琨

    我采访了一只开发了天津8890便民服务网站系统的团队. - 当时的项目有多少用户,给用户多少价值? 现在还有人用吗? 答:当时项目有近万用户,为天津市民提供便民服务平台,例如联系修理家电.水电气.咨询 ...

  2. 数据结构c语言版第一章答案,《c语言数据结构》第一章概论自测题答案

    <<c语言数据结构>第一章概论自测题答案>由会员分享,可在线阅读,更多相关<<c语言数据结构>第一章概论自测题答案(4页珍藏版)>请在人人文库网上搜索. ...

  3. 数据结构与算法——慕课作业——第一章 概论 + 第二章 线性表

    重点题: 第一章:小测-2.4.7 第二章:小测-3 & 编程-2.3 第一章 概论 part 1: 小测验 答案: 1.C你选对了 解析:  A.向量:直接访问型线性结构  B.散列表:目录 ...

  4. 【操作系统】第一章 概论 冲鸭!!

    第一章 概论 1.1 操作系统做什么? P1 操作系统是? 操作系统的目标 1.2 操作系统的功能 P2 计算机系统的组成 操作系统设计目的 用户视角 系统视角 操作系统的定义 1.3 计算机系统体系 ...

  5. 分子生物学 第一章 概论

    文章目录 第一章 概论 1.1.1分子生物学的概念以及发展简史 1.2.1分子生物学研究概况 第一章 概论 1.1.1分子生物学的概念以及发展简史 广义的定义: 在分子水平上解释生物学现象. (难以与 ...

  6. 数据结构 第一章 概论

    第一章 概论 数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合 数据:描述客观事物的符号.是能被计算机识别.处理的符号的集合. 数据对象:数据元素集合.数据子集 数据元素:是组成数据 ...

  7. 模式识别与机器学习·第一章——概论

    模式识别与机器学习·第一章--概论 开篇 模式识别 模式 识别 机器学习 研究目的 发展历史 模式识别简史 机器学习简史 系统方法 系统目标 假说的获得 系统的构成 小结 开篇 这系列博客主要用来回忆 ...

  8. 软件工程第一章绪论————(2019.12.27学习笔记)

    第一章绪论 第一节软件工程概念的提出与发展 1. 软件危机 1968年,北大西洋公约组织(NATO)在联邦德国的国际学术会议创造软件危机(Software crisis)一词.用来描述因为软件生产率, ...

  9. 软件工程 | 第一章:软件工程学概述

    软件工程学概述 一.前言 二.软件危机 1.典型表现 2.产生原因 3.消除危机途径 三.软件工程 1.概述 2.软件本质特征 3.软件工程基本原理 4.软件工程方法学 1️⃣传统方法学 2️⃣面向对 ...

  10. 语音识别原理与应用 洪青阳 第一章 概论

    目录 第一章 语音识别概论 1.1 语音的产生和感知 1.2 语音识别过程 1.3语音识别发展历史 第一章 语音识别概论 语音识别的基础理论包括语音的产生和感知过程.语音信号基础知识.语音特征提取等. ...

最新文章

  1. 如何通过网站SEO诊断来做竞争对手的分析?
  2. 【学习笔记】JAVA IO与NIO(new IO)的对比与不同IO模型的理解
  3. 劫起|再谈Linux epoll惊群问题的原因和解决方案
  4. 【安富莱二代示波器教程】第8章 示波器设计—测量功能
  5. 剥开比原看代码09:通过dashboard创建密钥时,前端的数据是如何传到后端的?
  6. 开发 Windows 8 Bing地图应用(2)
  7. dajngo3新建app,并且访问
  8. Flutter 系列文章:Flutter Text 控件介绍
  9. 深度学习TensorFlow生产环境部署(模型部署篇)
  10. matlab2c使用c++实现matlab函数系列教程-prod函数
  11. matlab 传递函数 画出频率响应,MATLAB环境下频率响应曲线的绘制方法
  12. Linux下Gogs二进制安装配置
  13. 数列收敛,极限值唯一
  14. 手机开机后android,手机开机后出现Android字样然后就自动关机了
  15. server2008服务器进不了桌面,解决windows server 2008 r2 登录进入桌面只显示一片蓝色背景...
  16. 矢量网络分析仪的基本原理
  17. Xtrabackup 数据备份工具使用方法
  18. S5P4418 Android实时时钟框架介绍
  19. 六年如逆旅,我亦是行人:一个顾问的六年安全从业经历
  20. centos7 下greenplum 安装初始化使用

热门文章

  1. 数据库作业 用Python读取Excel 数据 存放到mysql中
  2. Ubuntu的下载安装教程--本人亲测
  3. ugui 转轮_Unity3D的FingerGesture插件
  4. Arcgis 创建切片包(*.tpk)
  5. Linux基础课程汇总-辛舒展-专题视频课程
  6. 服务器和客户端TSL协议不一致
  7. JavaSE_面向对象_学习笔记
  8. java模板方法模式_Java设计模式之模板方法模式
  9. 用python爬取全网百度网盘资源的神器
  10. 【Week 1】Preferences and Ratings