2017-2018-1学期《程序设计与数据结构》教学进程
目录
- 考核方式
- 课前准备
- 教学进程
- 第00周学习任务和要求
- 第01周学习任务和要求
- 第02周学习任务和要求
- 第03周学习任务和要求
- 第04周学习任务和要求
- 第05周学习任务和要求
- 第06周学习任务和要求
- 第07周学习任务和要求
- 第08周学习任务和要求
- 第09周学习任务和要求
- 第10周学习任务和要求
- 第11周学习任务和要求
- 第12周学习任务和要求
- 第13周学习任务和要求
- 第14周学习任务和要求
- 第15周学习任务和要求
- 第16周学习任务和要求
- 个人项目
- 团队项目
- 学习资源
考核方式
参考「《程序设计与数据结构》 课程教学」中的考核方式。
返回目录
课前准备
课程基础
- 加入云班课
-
在实验楼注册账号(注意体现学号信息),然后点击配套实验课程进入实验楼实验环境,点击『加入私有课程』,《程序设计与数据结构》的课程码:R7D83NU2
,个人信息
填“学号+姓名”。
教材学习导读: 《Java程序设计与数据结构教程(第二版)》学习指导
学习方法指导:积极主动敲代码,使用JUnit学习Java
老师的教学总结:每周必读
教学进程
学习方法
进度很重要:注意前紧后松,必须跟上每周的进度,教材阅读与总结,教材上的练习,问答小组,项目。我和助教们会认真对待每一位同学,请你不要因为困难而放弃,坚持下来,会发现自己的不可思议。
问答很重要:遇到知识难点请多多提问,这是你的权利更是您对自己负责的义务。问答到课程讨论小组,提问请阅读一下「如何提问」,答疑注意事项.
实践很重要:解决书中习题,实践教材中实例,完成个人和团队项目,才算真的消化了课程内容。可以通过实验楼的课程配套环境或自己安装的虚拟机在实践中进行学习.实践时参考「积极主动敲代码,使用Junit学习Java程序设计」。
学习总结、实验报告很重要:总结学习与实践中的问题,得到老师和同学们的反馈,是进步的捷径。学习完成后在博客园中把学习过程通过博客(随笔)发表,博客标题「学号 2017-2018-1 《程序设计与数据结构》第x周学习总结」
总结模板(Markdown)如下:
# 学号 2017-2018-1 《程序设计与数据结构》第X周学习总结
## 教材学习内容总结
尽量简单的总结一下本周学习内容
尽量不要抄书,浪费时间
看懂就过,看不懂,学习有心得的记一下
## 教材学习中的问题和解决过程
(一个模板:我看了这一段文字 (引用文字),有这个问题 (提出问题)。 我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。【或者】我反对作者的观点(提出作者的观点,自己的观点,以及理由)。 )
- 问题1:XXXXXX
- 问题1解决方案:XXXXXX
- 问题2:XXXXXX
- 问题2解决方案:XXXXXX
- ...
## 代码调试中的问题和解决过程
- 问题1:XXXXXX
- 问题1解决方案:XXXXXX
- 问题2:XXXXXX
- 问题2解决方案:XXXXXX
- ...
## [代码托管](码云学习项目链接)
(statistics.sh脚本的运行结果截图)
## 上周考试错题总结
- 错题1及原因,理解情况
- 错题2及原因,理解情况
- ...
## 结对及互评
### 点评模板:
- 博客中值得学习的或问题:
- xxx
- xxx
- ...
- 代码中值得学习的或问题:
- xxx
- xxx
- ...
- 其他
### 本周结对学习情况
- [结对同学学号1](博客链接)
- 结对照片
- 结对学习内容
- XXXX
- XXXX
- ...
## 其他(感悟、思考等,可选)
xxx
xxx
## 学习进度条
| | 代码行数(新增/累积)| 博客量(新增/累积)|学习时间(新增/累积)|重要成长|
| -------- | :----------------:|:----------------:|:---------------: |:-----:|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第一周 | 200/200 | 2/2 | 20/20 | |
| 第二周 | 300/500 | 2/4 | 18/38 | |
| 第三周 | 500/1000 | 3/7 | 22/60 | |
| 第四周 | 300/1300 | 2/9 | 30/90 | |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
参考:[软件工程软件的估计为什么这么难](http://www.cnblogs.com/xinz/archive/2011/04/05/2005978.html),[软件工程 估计方法](http://www.cnblogs.com/xinz/archive/2011/04/06/2007294.html)
- 计划学习时间:XX小时
- 实际学习时间:XX小时
- 改进情况:
(有空多看看[现代软件工程 课件
软件工程师能力自我评价表](http://www.cnblogs.com/xinz/p/3852177.html))
## 参考资料
- [《Java程序设计与数据结构教程(第二版)》](https://book.douban.com/subject/26851579/)
- [《Java程序设计与数据结构教程(第二版)》学习指导](http://www.cnblogs.com/rocedu/p/5182332.html)
- ...
上面模板中用Markdown写的总结的渲染效果大概如下:
返回目录
第0周学习指导
学习目标
- 了解课程上课方式
- 做好心理预期
学习资源
- 现代软件工程讲义 0 课程概述
- 师生关系:trainer/trainee
- 负担与压力:现在辛苦是因为欠帐,现在的努力可以发现自己的不可思议
- 现代软件工程 习而学的软件工程教育:
- 编程也一样
- 学习科学日益主流的观念:从「情景学习」出发,当一名「认知学徒」,它的要点有:
- 找到学习共同体:因为大量知识存在于学习共同体的实践中,不是书本中,所以有效的学习不是关门苦练,而是找到属于自己的学习小团体。如程序员在类似于github这样的网站练习编程。
- 隐性知识显性化:隐性知识是使人们有能力利用概念、事实以及程序来解决现实问题的知识。
- 模仿榜样:榜样可以是现实生活中的导师,也可以是网上的导师;
- 培养多样性:在多种情境中实践,以此强调学习广阔的应用范围。如裁缝出师并不是已经练习了一万小时,而是能够缝制出足够好的,各种各样的衣服。
现代软件工程讲义 1 软件工程概论: 程序和软件的不同
为什么一定要自学?:善于自学的人,最终会形成一个重要的能力:融会贯通。
做中学:实践,刻意练习
技能的反面 - 魔方和模仿: 通过不断的练习, 把那些低层次的问题都解决了, 变成不用经过大脑的自动操作, 然后才有时间和脑力来解决较高层次的问题。
软件开发不是闭卷考试: 对问题的了解,对技术的了解,估计任务的能力, 沟通和管理风险的能力,拒绝的能力
编程的智慧:反复推敲代码,写优雅的代码,写模块化的代码,写可读的代码,写简单的代码,写直观的代码,写无懈可击的代码,正确处理错误,防止过度工程,
学习任务
返回目录
第一周(9.4-9.10)
学习目标
- 了解问题解决的一般方法
- 了解软件工程基本过程
- 掌握算法分析的方法
- 理解渐进复杂度,增长函数
学习资源
- 教材:学习指导在这,重点内容,考试内容都有
- 阅读 「反作弊」:任何时候发现同学们有抄袭作业,抄袭代码的情况,即时课程总成绩清零
- 云班课PPT
学习任务
- 教材第十二章
- 编辑、编译、运行教材上代码,参考「积极主动敲代码,使用Junit学习Java程序设计」
- 代码中不懂的内容仔细阅读教材,参考Java API帮助文档
- 代码托管到git@OSC,参考一下使用开源中国托管代码
- 完成课后自测题,并参考答案学习
- 完成课后练习题
- 完成程序设计项目:无
- 完成云班中本周课下考试
- 有问题去答疑论坛提问,不在微信群和QQ群解答学习问题
- 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第一周学习总结”
- 提高学习效率,提高写博客效率:尽量少摘抄书上的内容,主要写有疑惑和有收获的内容
- 截止时间:本周日 24:00,不按时发博客要扣1分,优秀博客加1分
- 不按上面的模板写的要重写,否则会扣1分
- 严禁抄袭,违反者总成绩清零
返回目录
第二周(9.11-9.17)
学习目标
- 开设团队项目博客
- 下载Java Collection API源代码,下载工具
- 掌握Java中泛型类,泛型方法的设计
学习资源
- 现代软件工程讲义 目录
- Java Collections API源码分析
- 上穷碧落下黄泉-源码追踪经验谈
学习任务
- 开设团队项目博客,分配《构建之法》学习内容,提出不少于十个问题
- 下载Java Collection API源代码,下载工具搭建源码分析环境
- 掌握Java中泛型类,泛型方法的设计
- 复习Java开发,调试的内容,Git的内容
- 建议把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第二周学习总结”
- 提高学习效率,提高写博客效率:尽量少摘抄书上的内容,主要写有疑惑和有收获的内容
- 截止时间:本周日 24:00,优秀博客加1分
- 严禁抄袭,违反者总成绩清零
返回目录
第三周(9.18-9.24)
学习目标
- 初步理解穷举和分治的算法设计思想
- 掌握线性和二分查找算法
掌握各种排序算法
学习资源
- 教材:学习指导在这,重点内容,考试内容都有
- 阅读 「反作弊」:任何时候发现同学们有抄袭作业,抄袭代码的情况,即时课程总成绩清零
云班课PPT
学习任务
- 教材第十三章
- 编辑、编译、运行教材上代码,参考「积极主动敲代码,使用Junit学习Java程序设计」
- 代码中不懂的内容仔细阅读教材,参考Java API帮助文档
- 代码托管到git@OSC,参考一下使用开源中国托管代码
- 完成课后自测题,并参考答案学习
- 完成课后练习题
- 完成程序设计项目:13.1 13.3 13.6 13.7
- 完成云班中本周课下考试
- 阅读知其所以然(以算法学习为例)(参考知其所以然(续),知其所以然(三):为什么算法这么难?)
- 研究一个查找或排序算法(寻找该算法的原始出处;原始的出处其实也未必就都推心置腹地和你讲得那么到位,自己揣摩;不仅学习别人的思路,整理自己的思路也是极其重要的)
- 有问题去答疑论坛提问,不在微信群和QQ群解答学习问题
- 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第三周学习总结”
- 提高学习效率,提高写博客效率:尽量少摘抄书上的内容,主要写有疑惑和有收获的内容
- 截止时间:本周日 24:00,不按时发博客要扣1分,优秀博客加1分
- 不按上面的模板写的要重写,否则会扣1分
- 严禁抄袭,违反者总成绩清零
返回目录
第四周(9.25 - 10.1)
学习目标
返回目录
第五周(10.2 - 10.8)
学习目标
- 掌握Java Collections API的基本结构
- 理解Collection的抽象设计
- 掌握Collection实现的Java相关技术:继承/多态/泛型/接口
- 掌握栈的应用
- 掌握栈的实现(数组,链式)
- 分析Java Stack API
学习资源
- 教材:学习指导在这,重点内容,考试内容都有
- 阅读 「反作弊」:任何时候发现同学们有抄袭作业,抄袭代码的情况,即时课程总成绩清零
- 云班课PPT
学习任务
- 教材第十四章
- 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第五周学习总结”
- 提高学习效率,提高写博客效率:尽量少摘抄书上的内容,主要写有疑惑和有收获的内容
- 截止时间:本周日 24:00,不按时发博客要扣1分,优秀博客加1分
- 不按上面的模板写的要重写,否则会扣1分
- 严禁抄袭,违反者总成绩清零
返回目录
第六周(10.09 - 10.15)
学习目标
- 理解queue抽象数据类型
- 会用queue解决问题
- 掌握queue的实现(数组,链表)
- 分析Java Collections API中queue相关的类
学习资源
- 教材:学习指导在这,重点内容,考试内容都有
- 阅读 「反作弊」:任何时候发现同学们有抄袭作业,抄袭代码的情况,即时课程总成绩清零
- 云班课PPT
学习任务
- 教材第十五章
- 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第六周学习总结”
- 提高学习效率,提高写博客效率:尽量少摘抄书上的内容,主要写有疑惑和有收获的内容
- 截止时间:本周日 24:00,不按时发博客要扣1分,优秀博客加1分
- 不按上面的模板写的要重写,否则会扣1分
- 严禁抄袭,违反者总成绩清零
返回目录
第七周(10.16 - 10.22)
学习目标
- 理解树抽象数据类型
- 会用树解决问题
- 掌握树的遍历方法
- 掌握二叉树的实现(数组,链表)
- 会用二叉树表示决策树
- 分析Java Collections API中树相关的类
学习资源
- 教材:学习指导在这,重点内容,考试内容都有
- 阅读 「反作弊」:任何时候发现同学们有抄袭作业,抄袭代码的情况,即时课程总成绩清零
- 云班课PPT
学习任务
- 教材第十六章
- 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第七周学习总结”
- 提高学习效率,提高写博客效率:尽量少摘抄书上的内容,主要写有疑惑和有收获的内容
- 截止时间:本周日 24:00,不按时发博客要扣1分,优秀博客加1分
- 不按上面的模板写的要重写,否则会扣1分
- 严禁抄袭,违反者总成绩清零
返回目录
第八周(10.23 - 10.29)
学习目标
- 理解二?查找树
- 掌握二叉查找树的实现
- 掌握二叉查找树的应用
- 理解平衡二?树
- 分析Java Collections API中树相关的类
学习资源
- 教材:学习指导在这,重点内容,考试内容都有
- 阅读 「反作弊」:任何时候发现同学们有抄袭作业,抄袭代码的情况,即时课程总成绩清零
- 云班课PPT
学习任务
- 教材第十七章
- 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第八周学习总结”
- 提高学习效率,提高写博客效率:尽量少摘抄书上的内容,主要写有疑惑和有收获的内容
- 截止时间:本周日 24:00,不按时发博客要扣1分,优秀博客加1分
- 不按上面的模板写的要重写,否则会扣1分
- 严禁抄袭,违反者总成绩清零
返回目录
第九周(10.30 - 11.05)
学习目标
- 理解堆和优先队列
- 理解堆和优先队列的关系
- 掌握堆的实现
- 掌握堆排序的实现
- 分析Java Collections API中堆和相关的类
学习资源
- 教材:学习指导在这,重点内容,考试内容都有
- 阅读 「反作弊」:任何时候发现同学们有抄袭作业,抄袭代码的情况,即时课程总成绩清零
- 云班课PPT
学习任务
- 教材第十八章
- 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第九周学习总结”
- 提高学习效率,提高写博客效率:尽量少摘抄书上的内容,主要写有疑惑和有收获的内容
- 截止时间:本周日 24:00,不按时发博客要扣1分,优秀博客加1分
- 不按上面的模板写的要重写,否则会扣1分
- 严禁抄袭,违反者总成绩清零
返回目录
第十周(11.06 - 11.12)
学习目标
- 理解图与有向图、无向图
- 理解带权图
- 会应用带权图
- 理解图的广度优先遍历和深度优先遍历
- 掌握最小生成树算法
- 掌握图的实现
学习资源
- 教材:学习指导在这,重点内容,考试内容都有
- 阅读 「反作弊」:任何时候发现同学们有抄袭作业,抄袭代码的情况,即时课程总成绩清零
- 云班课PPT
学习任务
- 教材第十九章
- 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第十周学习总结”
- 完成课上内容的选做
- 提高学习效率,提高写博客效率:尽量少摘抄书上的内容,主要写有疑惑和有收获的内容
- 截止时间:本周日 24:00,不按时发博客要扣1分,优秀博客加1分
- 不按上面的模板写的要重写,否则会扣1分
- 严禁抄袭,违反者总成绩清零
返回目录
第十一周(11.13 - 11.19)
学习目标
- 掌握Hash 函数的实现
- 理解哈希表中的冲突问题
- 分析Java Collection API中的Hash 实现
学习资源
- 教材:学习指导在这,重点内容,考试内容都有
- 阅读 「反作弊」:任何时候发现同学们有抄袭作业,抄袭代码的情况,即时课程总成绩清零
- 云班课PPT
学习任务
- 教材第十九章
- 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第十一周学习总结”
- 提高学习效率,提高写博客效率:尽量少摘抄书上的内容,主要写有疑惑和有收获的内容
- 截止时间:本周日 24:00,不按时发博客要扣1分,优秀博客加1分
- 不按上面的模板写的要重写,否则会扣1分
- 严禁抄袭,违反者总成绩清零
返回目录
第十二周(11.20 - 11.26)
学习目标
学习资源
学习任务
返回目录
第十三周(11.27 - 12.3)
学习目标
学习资源
学习任务
- 团队项目
- 截止时间:本周日 24:00,不按时发博客要扣1分,优秀博客加1分
- 严禁抄袭,违反者列入立此存照-抄袭作业者的曝光台
返回目录
第十四周(12.04-12.10)
学习目标
学习资源
学习任务
- 团队项目
- 截止时间:本周日 24:00,不按时发博客要扣1分,优秀博客加1分
- 严禁抄袭,违反者列入立此存照-抄袭作业者的曝光台
返回目录
第十五周(12.11 - 12.17)
学习目标
学习资源
学习任务
- 团队项目
- 截止时间:本周日 24:00,不按时发博客要扣1分,优秀博客加1分
- 严禁抄袭,违反者列入立此存照-抄袭作业者的曝光台
后续学习预告
返回目录
第十六周(12.18 - 12.24)
学习目标
学习资源
课程总结要求
- 课程总结:这个总结写的好的会被选出来出成一本博客书,大家认真写一下,被选中的会送你一本。
- 文中的链接都要配上二维码,可以使用草料二维码工具或博客园的功能,点击自己每篇文章的最下面的微信图标就有二维码:
发表一篇博客