天天看点

2016-2017-2学期《程序设计与数据结构》教学进程

2016-2017-2学期《程序设计与数据结构》教学进程

目录

  • 考核方式
  • 课前准备
  • 教学进程
    • 第00周学习任务和要求
    • 第01周学习任务和要求
    • 第02周学习任务和要求
    • 第03周学习任务和要求
    • 第04周学习任务和要求
    • 第05周学习任务和要求
    • 第06周学习任务和要求
    • 第07周学习任务和要求
    • 第08周学习任务和要求
    • 第09周学习任务和要求
    • 第10周学习任务和要求
    • 第11周学习任务和要求
    • 第12周学习任务和要求
    • 第13周学习任务和要求
    • 第14周学习任务和要求
    • 第15周学习任务和要求
    • 第16周学习任务和要求
  • 个人项目
  • 团队项目
  • 学习资源

参考「《程序设计与数据结构》 课程教学」中的考核方式。

返回目录

课程基础

  • 阅读「使用博客园进行学习」,并建立个人技术博客
  • 加入「课程答疑小组」,提问前请阅读「如何提问」.
  • 阅读「使用开源中国托管代码」并完成作业。把老师和助教加为项目组成员,这样老师和助教才能看到
2016-2017-2学期《程序设计与数据结构》教学进程
  • 在实验楼注册账号(注意体现学号信息),然后点击配套实验课程进入实验楼实验环境,点击『加入私有课程』,《程序设计与数据结构》的课程码:

    R7D83NU2

    ,

    个人信息

    填“学号+姓名”。
  • 教材学习导读: 《Java程序设计与数据结构教程(第二版)》学习指导
  • 学习方法指导:积极主动敲代码,使用JUnit学习Java
  • 老师的教学总结:每周必读

预备作业

  • 预备作业01:你期望的师生关系是什么?: 让同学们了解「Trainer/Trainee」是最好的师生关系,让同学们对即将到来的翻转课堂有个心理准备,让同学们对即将到来学习任务,学习压力有个心理准备,副作用是让同学们学会了Markdown。
  • 预备作业02 : 体会做中学(Learning By Doing):让同学们了解「做中学(Learing By Doing)」的学习方法与刻意训练在技能获取中的重要性,进一步理解有学习压力的必要性,副作用是让同学们展示自己,老师了解学生,同学们之间加深交流了解。
  • 预备作业03:课程基础:利用搜商,打下课程的Linux基础,初步体会什么叫学习上的举一反三,融会贯通。老师教十个你会六个就及格了?不,应该是老师教十个,你会一百个乃至更多,至少具备这样的潜能。

学习方法

  1. 进度很重要:注意前紧后松,必须跟上每周的进度,教材阅读与总结,教材上的练习,问答小组,项目。我和助教们会认真对待每一位同学,请你不要因为困难而放弃,坚持下来,会发现自己的不可思议。
  2. 问答很重要:遇到知识难点请多多提问,这是你的权利更是您对自己负责的义务。问答到课程讨论小组,提问请阅读一下「如何提问」,答疑注意事项.
  3. 实践很重要:解决书中习题,实践教材中实例,完成个人和团队项目,才算真的消化了课程内容。可以通过实验楼的课程配套环境或自己安装的虚拟机在实践中进行学习.实践时参考「积极主动敲代码,使用Junit学习Java程序设计」。
  4. 学习总结、实验报告很重要:总结学习与实践中的问题,得到老师和同学们的反馈,是进步的捷径。学习完成后在博客园中把学习过程通过博客(随笔)发表,博客标题「学号 2016-2017-2 《程序设计与数据结构》第x周学习总结」

总结模板(Markdown)如下:

# 学号 2016-2017-2 《程序设计与数据结构》第X周学习总结

## 教材学习内容总结

尽量简单的总结一下本周学习内容
尽量不要抄书,浪费时间
看懂就过,看不懂,学习有心得的记一下

## 教材学习中的问题和解决过程
- 问题1:XXXXXX
- 问题1解决方案:XXXXXX
- 问题2:XXXXXX
- 问题2解决方案:XXXXXX
- ...

## 代码调试中的问题和解决过程
- 问题1:XXXXXX
- 问题1解决方案:XXXXXX
- 问题2:XXXXXX
- 问题2解决方案:XXXXXX
- ...

## [代码托管](码云学习项目链接)

(statistics.sh脚本的运行结果截图)

## 上周考试错题总结
- 错题1及原因,理解情况
- 错题2及原因,理解情况
- ... 

## 结对及互评

### 评分标准

1. 正确使用Markdown语法(加1分):
    - 不使用Markdown不加分
    - 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    - 排版混乱的不加分
2. 模板中的要素齐全(加1分)
    - 缺少“教材学习中的问题和解决过程”的不加分
    - 缺少“代码调试中的问题和解决过程”的不加分
    - [代码托管](链接)不能打开的不加分
    - 缺少“结对及互评”的不能打开的不加分
    - 缺少“上周考试错题总结”的不能加分
    - 缺少“进度条”的不能加分
    - 缺少“参考资料”的不能加分

3. 教材学习中的问题和解决过程, 一个问题加1分

4. 代码调试中的问题和解决过程, 一个问题加1分

5. 本周有效代码超过300分行的(加2分)
    - 一周提交次数少于20次的不加分
    
6. 其他加分:
    - 周五前发博客的加1分
    - 感想,体会不假大空的加1分
    - 排版精美的加一分
    - 进度条中记录学习时间与改进情况的加1分
    - 有动手写新代码的加1分
    - 课后选择题有验证的加1分
    - 代码Commit Message规范的加1分
    - 错题学习深入的加1分
    - 点评认真,能指出博客和代码中的问题的加1分
    - 结对学习情况真实可信的加1分
    
7. 扣分:
    - 有抄袭的扣至0分
    - 代码作弊的扣至0分
    - 迟交作业的扣至0分

### 点评模板:
- 博客中值得学习的或问题:
    - xxx
    - xxx
    - ...
- 代码中值得学习的或问题:
    - xxx
    - xxx
    - ...
- 基于评分标准,我给本博客打分:XX分。得分情况如下:xxx

- [参考示例](http://www.cnblogs.com/haoliberale/p/6580822.html#3650972) 

### 点评过的同学博客和代码
- 本周结对学习情况 
    - [结对同学学号1](博客链接)
    - 结对照片
    - 结对学习内容
        - XXXX
        - XXXX
        - ...
- 上周博客互评情况
    - [学号1](博客链接)
    - [学号2](博客链接)
    - [学号3](博客链接)
    - [学号4](博客链接)
    - ...
    
## 其他(感悟、思考等,可选)

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写的总结的渲染效果大概如下:

2016-2017-2学期《程序设计与数据结构》教学进程

第0周学习指导

学习目标

  1. 了解课程上课方式
  2. 做好心理预期

  1. 现代软件工程讲义 0 课程概述
    • 师生关系:trainer/trainee
    • 负担与压力:现在辛苦是因为欠帐,现在的努力可以发现自己的不可思议
  2. 现代软件工程 习而学的软件工程教育:
    • 编程也一样
    • 学习科学日益主流的观念:从「情景学习」出发,当一名「认知学徒」,它的要点有:
      • 找到学习共同体:因为大量知识存在于学习共同体的实践中,不是书本中,所以有效的学习不是关门苦练,而是找到属于自己的学习小团体。如程序员在类似于github这样的网站练习编程。
      • 隐性知识显性化:隐性知识是使人们有能力利用概念、事实以及程序来解决现实问题的知识。
      • 模仿榜样:榜样可以是现实生活中的导师,也可以是网上的导师;
      • 培养多样性:在多种情境中实践,以此强调学习广阔的应用范围。如裁缝出师并不是已经练习了一万小时,而是能够缝制出足够好的,各种各样的衣服。
  3. 现代软件工程讲义 1 软件工程概论: 程序和软件的不同
  4. 为什么一定要自学?:善于自学的人,最终会形成一个重要的能力:融会贯通。
  5. 做中学:实践,刻意练习
  6. 技能的反面 - 魔方和模仿: 通过不断的练习, 把那些低层次的问题都解决了, 变成不用经过大脑的自动操作, 然后才有时间和脑力来解决较高层次的问题。
2016-2017-2学期《程序设计与数据结构》教学进程
  1. 软件开发不是闭卷考试: 对问题的了解,对技术的了解,估计任务的能力, 沟通和管理风险的能力,拒绝的能力
  2. 编程的智慧:反复推敲代码,写优雅的代码,写模块化的代码,写可读的代码,写简单的代码,写直观的代码,写无懈可击的代码,正确处理错误,防止过度工程,

学习任务

  • 阅读以上博客,鼓励发学习体会博客

第一周(2.27-3.05)

  • 了解Java程序设计语言
  • 掌握Java程序编辑/编译/运行/调试的方法
  • 了解程序开发过程和
  • 了解面向对象三要素
  • 了解解决问题的一般方法

  • 教材:学习指导在这,重点内容,考试内容都有
  • 积极主动敲代码,使用Junit学习Java程序设计
  • Intellj IDEA 简易教程
  • Java程序设计的DOS命令基础
  • 使用码云和博客园学习简易教程
  • 视频:下载地址 密码:nws1

  • 教材第一章
    • 编辑、编译、运行教材上代码,参考「积极主动敲代码,使用Junit学习Java程序设计」
    • 代码中不懂的内容仔细阅读教材,参考Java API帮助文档
    • 代码托管到git@OSC,参考一下使用开源中国托管代码
    • 完成课后自测题,并参考答案学习
    • 完成课后练习题
    • 完成程序设计项目:至少完成PP1.1, PP1.2
    • 有问题去答疑论坛提问,不在微信群和QQ群解答学习问题
  • 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第一周学习总结”
    • 提高学习效率,提高写博客效率:尽量少摘抄书上的内容,主要写有疑惑和有收获的内容
    • 截止时间:本周日 24:00,不按时发博客要扣1分,优秀博客加1分
    • 不按上面的模板写的要重写,否则会扣1分
    • 严禁抄袭,违反者列入立此存照-抄袭作业者的曝光台

第二周(3.06-3.12)

  • 掌握Java字符串
  • 理解变量并会使用
  • 掌握Java基本数据类型
  • 掌握表达式
  • 会用Scanner类进行输入

  • 教材第二章
    • 代码托管到git@OSC,
    • 完成程序设计项目:至少完成PP2.2, PP2.4, PP2.6, PP2.08, PP2.10
    • 课堂考试题目和参考答案在这,每周考核答案,考完核对一下,找出自己做错的题目修正并学习相关知识点,学习成果要在学习博客中体现。重点内容以及错的多的知识点会多次考核
    • 常来这看看自己的成绩,每周更新,排名靠后的,不及格的要努力了,第四周起会对排名靠后的同学加强知道和要求
  • 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第二周学习总结”
    • 截止时间:本周日 24:00,不按时发博客并提交要扣1分,优秀博客加1分

第三周(3.13-3.19)

  • 理解并掌握对象创建
  • 掌握String类的使用
  • 理解包与代码组织
  • 会用常见的类如:Math,Random,NumberFormat,DecimalFormat
  • 会用包装类

  • 使用码云和博客园学习简易教程:如何交作业
  • 积极主动敲代码,使用Junit学习Java程序设计:Java 学习方法,掌握前要常看
  • 使用JDB调试Java程序:调试能力与编程水平关系极大
  • Intellj IDEA 简易教程:打交道最多的工具
  • Java程序设计的DOS命令基础:有同学非要在Windows下学习,补补基础吧
  • 做中学之Vim:vim 要不断学习,精进
  • 进度条和学习过程可视化:避免学习半途而废

  • 教材第三章
    • 完成程序设计项目:至少完成PP3.1, PP3.3, PP3.5
  • 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第三周学习总结”
  • 参考实验一 Java开发环境的熟悉(Linux + Eclipse)和Intellj IDEA 简易教程

    完成实验一

    • Eclipse 内容换成IDEA
    • 练习(通过命令行和IDEA两种方式实现)换成前两周项目内容
    • 周五实验课上进行验收:PP1.1,PP1.2,PP2.2, PP2.4, PP2.6, PP2.08, PP2.10
    • 下周日 24:00前发表博客,标题“学号 实验一《Java开发环境的熟悉》实验报告”

第四周(3.20 - 3.26)

  • 理解流程控制
  • 理解并应用布尔运算
  • 掌握分支语句的编写:if...else;switch...case
  • 掌握循环语句的编写:while;do...while;for
  • 理解并应用数组

  • 视频:下载地址,参考8,9,10,40

  • 教材第4章,第7章
    • 完成程序设计项目:至少完成PP4.1, PP4.8, PP4.15,PP7.1, PP7.5
  • 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第四周学习总结”

第五周(3.27 - 4.02)

  • 理解类与对象
  • 会自定义类
  • 理解方法的作用
  • 了解方法设计的问题
  • 会用UML建模工具
  • 熟悉Java Collection API

  • Java Collections API和泛型

  • 视频:学习云班课中的相关视频
    • 视自己的情况与教材学习二选一或都选
  • 教材第5章
    • 完成程序设计项目:至少完成PP5.3, PP5.6, PP5.13
    • 有问题去云班课和答疑论坛提问,不在微信群和QQ群解答学习问题
    • 复习云班课中课堂考试题目和参考答案与解析,注重查漏补缺
  • 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第五周学习总结”

第六周(4.03 - 4.09)

  • 理解继承和代码复用
  • 理解抽象类
  • 理解方法重载
  • 熟悉Java多线程API

  • 教材第8章
    • 完成程序设计项目:至少完成PP8.1, PP8.8
    • 常来这看看自己的成绩,每周更新,排名靠后的,不及格的要努力了,第4周起会对排名靠后的同学加强知道和要求
  • 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第六周学习总结”

第七周(4.10 - 4.16)

  • 理解多态
  • 掌握抽象类和接口使用
  • 理解方法覆盖和动态绑定
  • 熟悉Java与密码学相关的API

  • 教材第9章
    • 完成程序设计项目:至少完成PP9.3, PP9.4,PP9.8
  • 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第七周学习总结”
  • 把Eclipse 换成IDEA,参考实验二 Java面向对象程序设计 完成实验并在本周日 24:00前发实验报告博客

第八周(4.17 - 4.23)

  • 熟悉异常继承体系
  • 掌握异常处理
  • 熟悉Java IO API

  • Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)第十六章
  • 教材第10章
    • 完成程序设计项目:至少完成PP10.1, PP10.2, PP10.7
  • 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第八周学习总结”

第九周(4.24 - 4.30)

  • 了解数据库相关基本概念
  • 会用常见的SQL语句
  • 初步掌握MySQL的使用
  • 了解SQLite的使用
  • 熟悉Java 网络编程的API

  • Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)第22章
  • 教材第21章
    • 完成程序设计项目:至少完成PP21.1, PP21.3
  • 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第九周学习总结”

第十周(5.01 - 5.07)

  • 了解Android开发的一般流程
  • 了解Android
  • 熟悉Java 密码学相关的API
  • 了解混合密码系统

  • Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)第23,24章
  • 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《程序设计与数据结构》第十周学习总结”

第十一周(5.08 - 5.14)

  • 结对项目
    • 在团队博客发表一篇随笔介绍一下项目内容、目标、实现计划(以周为单位)、成员、分工等
    • 给出项目托管链接,项目模板如下:
      • src:源代码
      • test:测试代码
      • bin/out:可执行代码
      • docs:项目相关参考文献、项目文档、报告
      • lib:项目依赖的jar库文件
      • dist: 打包部署
      • README.md: 项目简介
      • ...
    • 参考关于用户需求的调查完成项目需求分析
    • 参考现代软件工程讲义看看如何做项目
    • 参考如何提出靠谱的项目建议 NABCD写出团队项目的NABCD。
    • 参考以下工具构建项目原型:(更多工具参考程序开发与信息安全工具箱)
      • Axure RP
      • Mockup
      • PowerDesigner
      • 墨刀
      • JustInMind

第十二周(5.15 - 5.21)

    • 在本周日(5.22) 24:00前发博客介绍项目进展、成员贡献、与计划相符情况、改进措施等

第十三周(5.22 - 5.28)

第十四周()

第十五周(5.29 - 6.04)

后续学习预告

第十六周(6.05 - 6.11)

课程总结要求

  • 课程总结:这个总结写的好的会被选出来出成一本博客书,大家认真写一下,被选中的会送你一本。
  • 文中的链接都要配上二维码,可以使用草料二维码工具或博客园的功能,点击自己每篇文章的最下面的微信图标就有二维码:
2016-2017-2学期《程序设计与数据结构》教学进程

发表一篇博客

  • 学号 2016-2017-2《程序设计与数据结构》课程总结
    • (按顺序)每周作业链接汇总
      • 预备作业1:简要内容
      • 预备作业2:简要内容
      • 预备作业3:简要内容
      • 第一周作业:简要内容
      • 第二周作业:简要内容
    • 自认为写得最好一篇博客是?为什么?
    • 作业中阅读量最高的一篇博客是?谈谈经验
    • 作业中与师生交互最多的一篇博客是?谈谈收获
    • (按顺序)实验报告链接汇总
      • 实验一 实验名称:简要内容
      • 实验二 实验名称:简要内容
    • 代码托管链接:
      • 给出statistic.sh的运行结果,说明本学期的代码量目标达到没有?
      • 加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得
      • 积极主动敲代码做到没?教材实践上有什么经验教训?
    • 课堂项目实践
      • 参考2016-2017-2 《Java 程序设计》课堂实践项目
        • 课堂实践链接(没有的可以不列)
          • 实践名称:简要内容
        • 课堂实践对提高应用能力有帮助吗?
        • 课堂实践上自己有什么经验教训?
        • 课堂实践上对老师有什么教学建议?
    • 你有什么项目被加分,谈谈你的经验
      • 优秀作业(给出链接)
      • 总结(给出链接)
      • 项目(给出链接)
      • 教程(给出链接)
    • 你有什么项目被扣分,谈谈你的教训
      • 不动手实践
      • 迟交作业
      • 不验收代码
    • 课程收获与不足
      • 自己的收获(投入,效率,效果等)
      • 自己需要改进的地方
      • 结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
    • 给开学初的你和学弟学妹们的学习建议
      • 如果重新学习这门课,怎么做才可以学的更好
      • 下学期有什么可行的计划提升学习效果?
    • 问卷调查
      • 你平均每周投入到本课程有效学习时间有多少?
      • 每周的学习效率有提高吗?你是怎么衡量的?
      • 蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
      • 你觉得这门课老师应该继续做哪一件事情?
      • 你觉得这门课老师应该停止做哪一件事情?
      • 你觉得这门课老师应该开始做什么新的事情?
    • 对[谢涛老师]https://home.cnblogs.com/u/vertextao/)的工作给矛评价或建议
    • 其他任意发挥
    • 给出你的总结中涉及到的链接的二维码
      • 码去项目链接: 二维码
      • 预备作业1: 二维码
      • 实验一 实验名称:二维码
      • 实践名称:二维码

四则运算

  • 参考现代软件工程 第一章 【概论】练习与讨论
  • 参考口算伴我成长自动出题系统v2.9 进行改进
  • 代码量不低于1000行

词频统计

  • 收集近二十年CET-4(or CET-6)的试题
  • 统计最常用的1000词汇
  • 调用词典API制作电子书

其他

基本要求

  • 单元测试要不少于产品代码的行数
  • git 提交在函数级别上
  • 对系统进行UML建模
  • 团队合作要有代码规范,风格要一致

逆向Android项目

要求:

  • 至少两人一个团队(总分25*人数)

移动学习之网站(做的好有开发费用支持)

移动学习之Android App(做的好有开发费用支持)

博客园客户端

课程学习资源

教材与参考资料

  • Java学习笔记(第8版)
  • Java和Android 开发学习指南(第2版)()
  • Effective java 中文版(jjhou,Effective java)
  • 实现模式 (Implementation Patterns)
  • Android编程权威指南( Android programming: the big nerd ranch guide)
  • 程序设计实践(The Practice of Programming)
  • 构建之法(电子版)
  • 图解密码技术
  • Java 加密与解密的艺术 (Kindle)
  • 程序员必读书单 1.0

Java API

  • Java 8 API官方版
  • Java API chm版:特别推荐

MOOC & 视频

  • 翁恺-程序设计入门—Java语言
  • 翁恺-面向对象程序设计-Java语言
  • 极客学院-Java语言开发知识体系图
  • 极客学院-Android 0基础极速养成计划

  • Java Technology Concept Map

欢迎关注“rocedu”微信公众号(手机上长按二维码)

做中教,做中学,实践中共同进步!

2016-2017-2学期《程序设计与数据结构》教学进程
  • 原文地址:http://www.cnblogs.com/rocedu/p/6064239.html
  • 推荐网站:博客园、新浪微博、扇贝背单词、DKY背单词小组、有道云笔记、豆瓣读书
  • 版权声明:自由转载-非商用-非衍生-保持署名| Creative Commons BY-NC-ND 3.0

如果你觉得本文对你有帮助,请点一下左下角的“好文要顶”和“收藏该文”