2016-2017 第2学期

课程介绍

编程类课程,76学时(44理论+32实验),学期末还有1周的课程设计。

问题与现状

  1. 4个班共120人,教师无法逐一检查每个学生的编程实验。
  2. 纸质作业质量不高。 好的作业无法得到激励,差的作业无法得到相应的提醒。
  3. 对不想学的学生,没有一个有效的辅助措施。对想学的学生,没有一个较好的提升平台或者项目。
  4. 期末一张卷考核。虽然也有平时成绩,但主要还是看期末成绩。有的学生平时不学习,而寄希望于期末一次考试。然而期末考卷这种形式,主要考查的是知识点,难以反应出学生真正的编程能力。
  5. 实验有的同学能完成,还有很多同学无法完成,甚至有的学生完全放弃。
  6. 课堂虽然注重互动,但手段还是提问,叫起某个学生回答。难以掌握学生对问题的掌握程度。

教学思路与方法

  1. 思路:

    • 过程监控:让学生将精力放在平常的作业与实验上。
    • 增加师生互动:课堂上+课后。
    • 自动评测:自动化批改学生的编程实验。
  2. 方法:

    • 助教制度:主要对每周作业进行评分。开始助教还会写每周总结,后期为了降低助教工作量,由老师统一写总结。
    • 博客作业:在博客园-班级博客上布置每周必须完成的作业,有明确的截止日期。每周助教和老师对作业进行批改,共15次作业。10分制,抄袭、不交每次-10分。课堂上会对前一次作业进行讲解。
    • 增加课堂互动:使用雨课堂实现课前发放预习课件、课堂上学生手机端浏览、答题)
    • 自动评测:使用PTA线上评测系统进行代码自动批改。将大部分语法类实验题做成PTA的题库。
    • 代码管理:Git。让同学一开始就使用业界流行技术管理代码。
    • 资源发布:QQ群发布教学资源(视频、PPT)

满意度调查与分析

1.博客作业与助教制度:

从作业形式上来讲,方式比较新颖。助教与老师每周给分这种即时反馈对学生有很强的督促作用。积极的反馈:“从来没有这么认真的完成作业。”、"为了拿到高分花费了很多时间"。消极的反馈:“感觉整周都在做Java作业”、“作业量太大、格式要求苛刻”、“评分标准不一致”。详细的博客作业问卷调查链接

问卷调查中基本情况如下:

  1. 博客作业这种作业形式:有将近49%的人觉得博客作业这种形式更好,只有7.61%的学生觉得不好,不好的原因主要是“花的时间太多、要花更多时间完成博客、评分标准不太统一”。
  2. 相比较纸质作业:54%的同学认为博客作业“需要付出更多的精力,但对知识掌握、能力培养确实有提升”。
  3. 作业量:有超过54%的同学认为量多,但是努力一下还是能完成。分析:这实际上就是我们所要的效果,设定一些标准让学生踮起脚尖能够得着,这样的作业能更好的提升学生。
  4. 存在的问题**:有66位同学,认为“又要做PTA、又要做博客作业,精力分散”。其他有30人左右认为“存在作弊现象、题目质量不够高、作业参考资料不够多、评分不够客观”
  5. 可以改进的地方:排名前3依次是“多在实验课辅导博客作业的内容”、“作业的参考资料应该多一些”、“增设讨论区供大家讨论”
  6. 更期待的Java作业形式:47.8%博客作业+PTA,只有13%的同学喜欢传统的"纯粹的纸质作业+纸质实验报告+自己上机练习"。
  7. 主要槽点:对评分标准、对作业格式、对作业量、作业讲解。

分析与结论:

  1. 总的来说学生还是接受PTA+博客作业这种形式,只有13%的同学喜欢传统的“纸质作业+纸质实验报告+自己上机联系”。但是在“评分标准、对作业格式、对作业量、作业讲解”这块还是有不少槽点。
  2. 还有一个突出的问题是,有66名同学认为“又要做PTA、又要做博客作业,精力分散“,如果能将博客作业与PTA有机融合起来,相信会有更好的效果。
  3. 可以改进的地方主要集中作业辅导与作业质量这块,即如何帮助学生完成作业这个环节。传统的教学模式中,教师课堂讲、学生课后学然后做作业,碰到困难的地方自己解决或者与同学交流,缺乏帮助学生的梯子。在国外慕课实践当中,分布在各地的学生则是通过论坛来进行交流。我们是否应在课后给予学生完成作业以适当的帮助呢?我认为,答案是肯定的(好像以前有一些论文有这方面的结论)。如果是一周两次课这样的安排,首先上课并布置作业,然后在实验课上主要针对布置得作业进行辅导,相信会给予学生更多的帮助。让学习能力一般的学生不会处于完全无助的状态。课后讨论区这种形式,也尝试过,但似乎新世代的同学不怎么玩论坛,也没有在论坛上进行讨论的习惯。娄老师曾使用蓝墨云班课实现课后的讨论,似乎效果还不错。这点还有待摸索,和新任助教商讨好还是希望能以论坛的形式(博客园群组,虽然上学期效果并不好,没有学生在上面讨论)给大家以更多的课后帮助。至于博客作业的参考资料,应该做到详细与明确。
  4. 其他反思:作业内容应大幅减少语法类题目,让同学在编程中去掌握语法,而不是以书面作业的形式来掌握语法。作业内容应紧密结合PTA实验内容,不要让学生双线作战。
  5. 助教制度:每周一次助教与老师给学生作业评分,给学生带来即时反馈,让学生时刻把握本章知识掌握程度,从理论上来说是好的。通过学生线下的反馈,学生明显更重视作业。为了得到高分,会很细致的完成作业。这就对我们的作业提出了更高的要求。不能让学生的精力浪费在低质的作业上。总的来说,助教制度能提高一门课程的活力(学生的参与度),为未来的以学生为主的教学理念提供了一个基本的保证。
  6. 教师、助教保证下的博客作业制度可以将传统的以考试为导向的课程学习转变为以平常作业为导向的课程学习。这实际上也符合过程监控、形成性评价等理念。而作业的好坏就非常重要。如何成就一份好的作业?邹欣老师在不断地实践当中,也提出了作业要不断迭代、作业的优胜略汰是有助于形成一份好作业的。而博客作业的开放性、数字化特性,也有利于基于作业的交流、迭代、持续改进。张敏老师的软件工程课程作业则是通过石墨这个文档协作工具,在老师、助教和企业界人士的不断迭代中逐渐形成。为未来其他学校的软件工程课程提供一个重要的参考,这也是博客开发性的一个好处。

2.自动评测(PTA):

PTA问卷调查链接

问卷调查中基本情况如下:

  1. 通过PTA掌握Java基础语法相较传统方法(自己做实验、无验证、无检查):认为PTA更好的只有28%,差不多的却有 69%,不好的有3%。
  2. 觉得不好的原因:(60/90)出错没有足够提示、(52/90)自己花费在编程上时间不够,其他原因:本机能过的程序PTA上过不了、不理解题意、题目不明有歧义。
  3. PTA题目:46% 题量太多、太难、47%题量适中,难度适中。
  4. 对于考试形式:66% “传统的期末考试,做一张卷子”。只有21%的同学,支持使用PTA机考代替期末考试。还有不少同学留言:不要考试,根据平时作业成绩决定考试成绩。
  5. 对PTA的建议:

    53,每个人可以随时查看自己的实验完成度,比如50%,80%。50,增设题目讨论区,大家在上面探讨题目解决方法。

    35,增加设计更好的题目。34,不要每周公布PTA排名,让大家可以按照自己的节奏完成实验。33,减少习题量。
  6. 其他建议:提升用户界面、借鉴lintcode,找不到bug,错误提示不明确、题目要说清楚。

分析与结论:

  1. 虽然觉得PTA更好的有28%,但是大部分觉得不够好的原因主要在于a)PTA出错提示不太直观。有的同学认为本机通过的程序,PTA上过不了,那就应该是题目出问题了。但根据以往经验,往往是学生自己编程的时候没有考虑到所有情况,或者有时候题意理解错误。一般来说PTA上的编程题目,要求更严格一点,但是出错提示却不够详细。这就造成了学生对PTA的不满。b)自己花费在编程上时间不够。很多人清醒地认识到这点,然而却无法投入大量时间去攻克题目。这点需要在以后的课程,由老师提出明确的要求与措施,确保他们PTA的基础题目一定要完成。
  2. 46%的同学觉得体量太多。其实从题目数量上来看,与传统实验课的题目差不多。但是传统的语法练习题目,检查少、做错了也没有反馈,学生觉得大概做对也就不深究。而PTA的判题系统要保证每题答案完全正确,这就造成了占用时间较多却依然通过不了。
  3. 只有21%的同学支持使用PTA机考代替期末考试、还有不少同学希望只根据平时作业成绩(博客作业)来决定考试成绩,说明大家对真正能考核编程能力的考试还是比较害怕的,也反映传统考试与博客作业的局限性。
  4. 对PTA的建议,是我们今后努力改进的方向。如果学生能实时的知道自己的试验完成度,这就相对能比较量化的把我自己的学习进度。而关于题目讨论区辅助完成PTA,我也是赞同的。语法练习的目的不是为了让同学都做不出来,而是通过练习让同学掌握语法,而讨论区可以让他们在完成练习的过程中交流、在交流中学习。下学期准备联合助教设立专门的讨论区,每周在讨论区上对当周的PTA题目进行解答。

3.增加师生互动(雨课堂):

雨课堂问卷调查链接

预习课件说明:将课堂讲授内容的重点浓缩到少于12页PPT(手机竖版PPT,内容少)。

问卷调查中基本情况如下:

  1. 课前推送预习课件:72%有帮助。
  2. 对预习PPT的态度:79%, 好、花费的时间可以接受。
  3. 预习PPT中出现的知识点:77%,不论难易与否,最好课堂上再讲一遍。有的人认为,“难的可以详细讲,易的可以简单概括讲”。
  4. 雨课堂什么功能好:

    (53/86)人,课前预习课件、课堂课件浏览。

    (46/86)人,课后浏览课件。

    (38/86)人,课前或课中的习题。

    还有人认为签到笔点名快、对页面点击收藏、对不懂的页面点击不懂、反馈留言、弹幕、其他。
  5. 其他建议:开弹幕增强与学生交流,很多人觉得预习ppt早一点点发布,感觉每页ppt留一个做笔记的地方会好一点,习题最好能够在做完后显示答案和解析。

分析与结论:

  1. 总的来说雨课堂工具的使用反响非常好。在课前预习、课堂课件浏览方面效果不错。在课堂教学效果方面有一定提升。下学期要联和助教,将剩下的预习课件做完,培养起学生预习的习惯。
  2. 有53人左右习惯课堂上的课件浏览(课件实时推送到手机)。这是我没想到的。在我在讲台上妙语如珠、卖力讲解的时候,很多同学却喜欢自己看课件。不过也算意料之中,每个人的理解能力、学习习惯都是个性化的,教师统一进度的课堂讲解肯定不能满足每个人的教学需求。如果能以学生的学为主,让学生按照自己的节奏来学习那是很好的。翻转课堂、mooc给了我们这样的可能,但在切换到这些之前雨课堂或多或少能让学生按照自己的进度来学习。
  3. 在我的理念中,在未来的教学中,课堂教学更多的应该是学生老师讨论、交流、重难点讲解的地方。据研究,学生通过传统的课堂讲授方式获取知识只能得获取到约20%,而在传统教学中课堂讲授却占据教师、学生较大比例的时间,可以说传统的课堂教授在知识传授这块效率低下、投入产出比不高。传统的课堂讲授法必将被扬弃,教师的精力应该更多的放在教学数据分析、课后作业设计、实验设计、考核等。但是在未来到来之前,如果能用雨课堂之类的手段为传统的课堂讲授发增加一些互动的可能,能将传统课堂讲授的最后一班岗站好,也是很有意义的。同时雨课堂的互动性(课前、课中习题,弹幕讨论)也应该会为我们未来的教学提供更多的可能。

4.教学资源发布、翻转:

自己录制了异常集合两个章节的mooc视频,还有一些实验课的操作视频。因为无平台发布,只好通过QQ群的方式发布资源。以前尝试过使用这些视频资源做翻转课堂,详见翻转课堂调查链接。总的来说将每个知识点做成小段的教学视频,并辅以课前问题,对学生在知识理解上是有帮助的。

这里主要说一下问题:没有教学平台发布,不知道学生完成情况如何。只是主观上感觉,对学生应该是有帮助的。但是无法跟踪学生学习进度。并且,课堂上好的教学效果能否切实的内化为学生的能力,这里要打一个问号。因为那个学期实践下来,并未觉得学生编程能力有一个突破性的提高。只能通过实验课上个别优秀同学完成加分题叫我检查的这种方式,让我知道这几个同学编程能力还不错。但个人感觉,是个人能力最终决定了其编程表现而不是翻转课堂起的作用。

5. 平时成绩与期末卷面成绩相关性

还未完成

6. 学习行为与博客分数的相关型分析

请参考博客作业教学数据分析系统。结论是:篇幅大(字数多)、图片多的博客作业更容易得高分。

问题

  1. 系统能力培养不够
  2. 现有体系只能让想学的学生学得更好,无法带动每个学生学起来。
  3. 120人每周批改作业工作量巨大。然而助教似乎不太可持续。
  4. 虽然课堂讲授效果还不错。但传统的、良好的课堂讲授,在多大程度上能帮助学生真正的培养起编程与系统的能力。还不清楚。

改进

1.博客作业:

  1. 内容上:进一步减少语法题,转而重视系统能力的培养,比如增加面向对象大作业设计题目。
  2. 合并PTA与博客作业,避免分散学生精力。
  3. 作业评分由10分制,变成等级制:-2(抄袭、未交),0(虽提交、质量不合格), 1(及格), 2(优秀)。主要是为了降低助教的工作量,减少评分标准不一带来的评分不一致的现象。

2. 课堂改进:

  1. 雨课堂预习课件补全:Java基础、Java基本语法、Java面向对象三部分的预习课件。
  2. 雨课堂弹幕功能:能否将弹幕功能引入课堂讨论。
  3. 课堂上应该讲些什么?只讲重难点、系统分析?更重视师生互动?

3. PTA

  1. 增加:PTA语法考试题目,整个学期应该有两次上机小考(基本语法、面向对象基础)或者再多加一次(综合考试,包含集合、异常、多线程等内容)。考试时间任意。是否将平常考试纳入平时成绩?
  2. 进一步改进题目PTA题目。确定每次作业中的必做题目(每周3-4题)
  3. 怎么把PTA的教学数据(实验完成率)用起来?通过数据驱动每个学生。
  4. 增设讨论区,每周答疑。
  5. 怎么把实验课充分利用起来,辅助学生完成看起来较多的作业。

4. 利用Git管理源代码

  • 利用命令行Git管理Eclipse项目?可行吗?
  • 让学生统计每周自己完成的代码行数?

5. 系统能力培养

将学期作业如何与课程设计更好的联系起来?

6.Java学习的三个阶段

\[基本语法->面向对象设计能力->应用(做真正能用的软件)
\]

st=>start: Start
e=>end: End
op1=>operation: 基本语法
op2=>operation: 面向对象设计
op3=>operation: 应用
st->op1->op2->op3->e

Java语言程序设计课程学期总结的更多相关文章

  1. JAVA语言程序设计课程评价

    紧张的又短暂的一个学期结束了,这个学期也许将成为我人生中一个重要的转折点,作为一名半路出家的选手,在初次了解Java语言时我感到非常的迷茫与不知所措.因为之前很多同学都是通过假期时间在家自学,刚转入新 ...

  2. C语言程序设计课程总结

    第一次教授C语言程序设计课程,相比计算机组成原理.arm体系结构等偏向硬件的课程,C的教学方式要灵活一些.计算机组成原理课程偏向理论,哈尔滨工业大学的计算机组成原理是国家精品课,增加了mooc+spo ...

  3. Java语言程序设计-助教篇

    1. 给第一次上课(软件工程)的老师与助教 现代软件工程讲义 0 课程概述 给学生:看里面的第0个作业要求 2. 助教心得 美国视界(1):第一流的本科课堂该是什么样?(看里面的助教部分) 助教工作看 ...

  4. C语言程序设计课程设计自查表格

    课程设计自查表格 序号 项目 完成与否(完成打勾) 1 格式是否符合标准(缩进是否规范) 2 是否模块化设计(使用函数分解系统功能) 3 函数名否易懂(不得使用f1(int a1,int a2)这样的 ...

  5. 2019-暑假作业-Java语言程序设计

    本文于2017年创建,最后更新2019-07-16 任务列表 1.学会使用Markdown做笔记 本篇随笔就是使用的Markdown语法.养成做笔记的习惯! 参考资料: 极简MarkDown排版介绍( ...

  6. 《JAVA语言程序设计》上课笔记

    教学目标:1.使学生了解JAVA课程的性质.定位.作用:为什么要学习JAVA?让学生知道如何学好JAVA: 教学内容: 一.        问几个问题 1.             你们到这里来干什么 ...

  7. Java语言程序设计复习提纲

     这是我在准备Java考试时整理的提纲,如果是通过搜索引擎搜索到这篇博客的师弟师妹,建议还是先参照PPT和课本,这个大纲也不是很准确,自己总结会更有收获,多去理解含义,不要死记硬背,否则遇到概念辨析题 ...

  8. 0031 Java学习笔记-梁勇著《Java语言程序设计-基础篇 第十版》英语单词

    第01章 计算机.程序和Java概述 CPU(Central Processing Unit) * 中央处理器 Control Unit * 控制单元 arithmetic/logic unit /ə ...

  9. Java语言程序设计(基础篇)第一章

    第一章 计算机.程序和Java概述 1.1 引言 什么是程序设计呢? 程序设计就是创建(或者开发)软件,软件也称为程序. 1.2 什么是计算机 计算机是存储和处理数据的电子设备,计算机包括硬件(har ...

随机推荐

  1. I/O和管道

    一:I/O设备 I/O(Input/Output),即输入/输出,通常指数据在内部存储器和外部存储器或其他周边设备之间的输入和输出. 标准输入(STDIN):0 默认接受来自键盘的输入 标准输出(ST ...

  2. Java中如何实现j并发更新数据库同一条数据

    分情况来说:普通单应用并发.多应用或多台服务器并发 情况一:普通单应用并发 使用关键字synchronized就可实现. 情况二:多应用或多台服务器并发 因多个应用之间并非同一个jvm(应用)内,因此 ...

  3. Python的字典和JSON

    Python的字典和JSON在表现形式上非常相似 #这是Python中的一个字典 dic = { 'str': 'this is a string', 'list': [1, 2, 'a', 'b'] ...

  4. C++ STL基本容器使用

    1:关联容器和顺序容器 c++中有两种类型的容器:顺序容器和关联容器,顺序容器主要有:vector.list.deque等.其中vector表示一段连续的内存地址,基于数组的实现,list表示非连续的 ...

  5. java8接口定义增强

    java1.7之前,接口中只允许有全局常量和抽象方法,而1.8之后允许在接口中扩充default修饰的普通方法和static修饰的静态方法 其目的是在修改接口中方法的时候,子类就不必去一一修改 pac ...

  6. [LeetCode] Find Pivot Index 寻找中枢点

    Given an array of integers nums, write a method that returns the "pivot" index of this arr ...

  7. MySQL InnoDB 索引原理

    本文由  网易云发布. 作者:范鹏程,网易考拉海购 InnoDB是 MySQL最常用的存储引擎,了解InnoDB存储引擎的索引对于日常工作有很大的益处,索引的存在便是为了加速数据库行记录的检索.以下是 ...

  8. python学习记录 - python3.x中如何实现print不换行

    python3.x中如何实现print不换行   大家应该知道python中print之后是默认换行的, 那如何我们不想换行,且不想讲输出内容用一个print函数输出时,就需要改变print默认换行的 ...

  9. ●杜教筛入门(BZOJ 3944 Sum)

    入门杜教筛啦. http://blog.csdn.net/skywalkert/article/details/50500009(好文!) 可以在$O(N^{\frac{2}{3}})或O(N^{\f ...

  10. Educational Codeforces Round 19

    A. k-Factorization 题目大意:给一个数n,求k个大于1的数,乘积为n.(n<=100,000,k<=20) 思路:分解质因数呗 #include<cstdio> ...