2016-2017-2 《Java程序设计》预备作业2总结

古希腊学者普罗塔戈说过:「头脑不是一个要被填满的容器,而是一束需要被点燃的火把。」

在对计算机系的学生情况的调查中,我说:

最近几年,我有一个深刻的体会:了解学生是上好课的一个基础。如果老师不了解学生的基础,每周的学习情况,学习状态,学习效果,那么,不少同学从第三周就开始跟不上学习进度了,然后就放弃学习了,等着期末背背就过关了。这样四年的学习效果就像大学生上课为什么一定要认真听讲?所说的 有很多人上完了大学,思考方式还是那种「原生态」的模式:

所谓的原生态就没有经过系统刻意地训练,没有经过斧正,而是任由随机事件随机冲击产生随机结果的状态。如果你从大学毕业的时候,你的大脑里没有留下任何你的专业领域带给你的精神、信念、理论和体系,只是比走进大学的时候老了四岁,那你的思考方式很可能就是原生态的。

与个别老师凭感觉说「我们的学生一年不如一年,或某届学学生不行」不同,我收集不少教学数据,我的结论是:我们学生的素质是逐年提高的。从2013年起,数据说明,上我课的学生总体上一届比一届学生强,教学效果一年比一年好。

说我们的学生素质高,一方面是我们的学生的入学成绩总体一年比一年高,除了上课,其他的就只能从一些学科竞赛,运动会,辩论赛,四大歌手,毕业晚会上零星的感受到部分同学的优秀。

为下学期《Java程序设计》课程做准备,我设计了三次预备作业来了解学生,督促学生:

  • 预备作业01:你期望的师生关系是什么?: 让同学们了解「Trainer/Trainee」是最好的师生关系,让同学们对即将到来的翻转课堂有个心理准备,让同学们对即将到来学习任务,学习压力有个心理准备,副作用是让同学们学会了Markdown。

  • 预备作业02 : 体会做中学(Learning By Doing):让同学们了解「做中学(Learing By Doing)」的学习方法与刻意训练在技能获取中的重要性,进一步理解有学习压力的必要性,副作用是让同学们展示自己,老师了解学生,同学们之间加深交流了解。

  • 预备作业03:课程基础:利用搜商,打下课程的Linux基础,初步体会什么叫学习上的举一反三,融会贯通。老师教十个你会六个就及格了?不,应该是老师教十个,你会一百个个乃至更多,至少具备这样的潜能。

预备作业02 : 体会做中学(Learning By Doing)的内容如下图所示:

这周的学生作业,福州大学的张栋老师(博客)对作业评论说:

娄老师这个博客作业的题目,我觉得出的真心好。一般我们都是在课程开篇作业:「对课程了解多少,对课堂有什么期待。」 学生没上过课,也很难说出有什么了解和期待,似是而非的应付了。而且是以课程为中心的视角。娄老师这个题目,以学生为中心的视角,开篇作业应该是学生展示自己,老师了解学生的过程和目的。完全活跃和打开了学生的心扉,认识了不一样的学生和不一样的武艺。还蕴含了 增强学生自己体会能力之不易的意识。 之前就默默想引用到 下学期课程在寒假里的开篇作业了。

JUSTPUB的周筠老师(知乎,微博,豆瓣)说:

我看了你的学生的多篇博客,被这么富有启发性的问题引出的自述吸引了,真棒!

微软的邹欣老师(博客,微博,豆瓣)建议说:

标准如果稍微低点,「超过60%的人」,可能就会有更多的学生敢于表达自己的优点了...

即使这么高的标准,结果都令我大出意外。以超过周围90%的人为标准,信安系15级的同学们各种了不得,各种高手涌现:

  • 145209: 系四大歌手冠军
  • 155201: 多才多艺
  • 155202:踢毽子
  • 155205:多才多艺
  • 155207:钢琴
  • 155208:乒乓球
  • 155210:游戏,五子栱
  • 155211:滑雪,古筝
  • 155212:学习能力
  • 155213:双截棍
  • 155214:足球
  • 155215:演讲与辩论
  • 155216:弹跳的爆发力
  • 155219:琵琶
  • 155220:乒乓球
  • 155222:足球
  • 155223:羽毛球
  • 155224:羽毛球,刻章
  • 155225:书法
  • 155226:唱歌,软件使用
  • 155227:转笔
  • 155228:长跑,多才多艺
  • 155229:舞蹈,钢琴
  • 155230:游戏
  • 155231:葫芦丝
  • 155232:跑步
  • 155233:动手实践能力
  • 155236: 游戏
  • 155237: 多才多艺
  • 155238:羽毛球,书法,游戏
  • 155239:音乐,吉它
  • 155301:乒乓球,游戏
  • 155302:心算能力
  • 155303:二胡
  • 155304:排球
  • 155305:钢琴
  • 155306:主持
  • 155307:英语,游戏
  • 155308:水彩画,体育运动
  • 155309:球类,手游
  • 155310:素描
  • 155311:羽毛球
  • 155312:游泳
  • 155313:钢琴
  • 155315:英语
  • 155316:柔韧性
  • 155317:中医
  • 155318:理解力
  • 155320:葫芦丝
  • 155321:长笛,英语听力
  • 155322:太极,多才多艺
  • 155323:游戏
  • 155324:游戏
  • 155325:绘画
  • 155326:绘画
  • 155327:绘画
  • 155328:电子琴,英语
  • 155329:销售
  • 155330:摄影
  • 155331:电子竞技
  • 155332:书法
  • 155333:历史
  • 155335:方向感
  • 155336:足球
  • 155337:曳步舞
  • 155338:钢琴

同学们分享了他们获取这些技能的学习经验:

  • 坚持,毅力
  • 压力竞争促进学习
  • 主动思考,多方比对验证
  • 兴趣
  • 刻意练习
  • 做中学
  • 要总结
  • 反馈
  • 量变引起质变
  • 严师出高徒
  • ......

这一次我系统了解到了信安系同学的优秀,感觉不努力教好他们,任由他们上完了大学,思考方式还是原生态模式,作为老师真是对不起良心。同学们掌握了做好一件事情的正确方法,学好专业课中的程序设计不是一件难事。

我相信这次作业不但让老师了解了学生,也让同学们有了更深入的了解。自我感觉良好一下,我认为老师当教练是实现「以学生为主体,以老师为主导」的最好的方法,这次作业是一个很好的范例。

我们学校要建设「特色突出,水平一流」的学校,我们就要教出「特色突出,水平一流」的学生。这几年我一直身体力行实践「做中学」,在以下几个方面进行刻意训练:

  • 五笔:要求学生会五笔,老师先学会
  • 减肥:五个月减肥30多斤
  • 乒乓:刻意训练在技能获取上的重要性
  • 背单词:学好英语,多一个世界

同学们通过自己的技能获与老师有了共鸣,那么问题来了,《Java程序设计》要怎么学?一定理解编程是用来解决实际问题的,可以从解决小问题开始,不停的用,最后好成绩只是个副作用。

邹欣老师(博客,微博,豆瓣)在软件开发不是闭卷考试一文中说:

实际的项目中的问题,都是有解的,而且大多数是多项式时间内有解。

我们在现实项目中的 「解题能力」,取决于下面这些因素:

  1. 对问题的了解
  2. 对技术的了解
  3. 估计任务的能力
  4. 沟通和管理风险的能力
  5. 拒绝的能力

我希望通过我们课程的训练让大多同学掌握Java技术,学会了解问题,通过PSP方法掌握估计任务的技能,通过团队增强沟通和管理风险的能力以及学会拒绝。

邹欣老师(博客,微博,豆瓣)在技能的反面 - 魔方和模仿中说:

Bill 说技能的反面是 ”Problem Solving” – “解决问题”, 这个听起来有点绕, 我们看看IT 人士熟悉的一个例子吧。 一个IT 专业的大学生来面试, 简历上写 “技能: 精通 Visual Studio C# 编程”。 于是面试官请他实际用VS IDE 写一段程序 (冒泡排序)。 一个 “不精通”的面试者的编程过程实际上就是一个“解决问题”的过程。 例如:

  • 嗯, 怎么开始一个C# 的命令行程序呢?
  • 定义数组是怎么弄的? 是 “int [] arr” 还是 “int arr[]”, 还是 ArrayList, 还是 Array
  • 嗯, 为什么编译没过呢, 哦, 这里少一个分号。
  • 嗯, 怎么设断点? 怎么定义命令行参数? 额, 我要查一查…

你发现他把时间都花在「解决 (低层次) 问题」上了, 你想考察的「算法技能」、 「C# 程序设计技能」 都无暇顾及。注意,这是在他认为非常精通的编程工具和编程语言中出现这样的问题。 你要这样的员工么?

通过身体力行实践「做中学」,我深刻理解了「刻意训练」在技能获取中的作用,同学们的技能获取经验也体现了「刻意训练」。

邹欣老师(博客,微博,豆瓣)下面的一句话,有没有「刻意训练」的经历的人体会是不一样的:

那怎么提高技能呢? 答案很简单, 通过不断的练习, 把那些低层次的问题都解决了, 变成不用经过大脑的自动操作, 然后才有时间和脑力来解决较高层次的问题。

对于编程技能,我对我的前驱课程《程序设计基础(C语言程序设计)》做了个调查。我不得不说,非常感谢徐小青老师给我打下了良好的基础。我们的同学大多在《程序设计基础(C语言程序设计)》中有了4000行到5000行的代码经历。我想在《Java程序设计》中再有5000行以上的刻意训练,实践提高,解决同学们在信息安全专业的学习中程序设计能力不达标的问题。这样信息安全专业的学习才有可能做到时水平一流。

当然,我提了几个《程序设计基础(C语言程序设计)》学习中我认为必须掌握但同学们觉得较难的问题:

  • 学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?

理解复杂声明非常重要,数组指针,指针数组;函数指针,指针函数的概念是基础,其他的复杂声明都是这四个的组合。后面的课程中有这样的声明:

void (signal (int signo, void (func)(int))) (int);

signal是个什么东东?以前我在课上提问,能正确回答的几乎没有。

考研中也常有这样的考题:

((x[4])())[4]这个声明中的x是什么东东?

  • 学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?

int main(){

printf("Hello World");

while(1);

}

不理解流与文件的区别,不知道缓冲区,这个代码的结果大多学过C的回答不对。我们后续专业课程需要的基础没打好。通过fopen/fread/fwrite/fclose掌握C编程中「初始化,完成业务,清理工作」的模式非常重要,文本文件和二进制文件的区别以及如何用I/O函数读取是最常用的,我监考过李晓东老师的C语言课程,有这方面的考题,我相信老师是讲过的,学生的基础还是不够好,后面我会写一篇C语言与Java对文件处理的对比的博客对学生指导。

  • 学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?
  • 在C语言里面,什么是模块?你写过多个源文件的程序吗?
  • 学过了C语言,你知道什么是「高内聚,低耦合」吗?这个原则如何应用到高质量程序设计中?

C语言解决问题的基本方法大多同学没有掌握,比较主动同学搜索一下,但理解不深。同学们几乎所有的代码都在一个main函数中,不知道一个XXX.c就是一个模块,没有多模块编程的经历,更不用什么「高内聚,低耦合」以及如何实现了。我建议同学们抽空读读王垠的编程的智慧。感谢迅雷的范飞龙博士(博客微博)的推荐和对我们学生的悉心指导。

  • 学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。

学过Java的同学都知道,Java水平的高低和对Java API的熟悉和应用能力紧密相关,在《Java程序设计》课程中我专门写了学习指导博客积极主动敲代码,使用Junit学习Java程序设计

C语言是一个比较简单的程序设计语言,其标准库函数我全部测试过,掌握了用法,这是我学习的众多编程语言中唯一的。《Java程序设计》课程上了十多年,Java也用了十多年,不少API我都没用过。

「不要重复造轮子 Stop Trying to Reinvent the Wheel」可能是每个程序员入行被告知的第一条准则。这八十多个学生只有一个在拷贝数组是调用了一下strcpy。可以用qsort排序,用 bsearch查找,大多同学是不知道的,告诉他们有这些函数,函数的声明不少是看不懂的,更不用说是应用了。

  • 你知道什么是断点吗?给出自己调试程序的例子。

每年毕业设计验收,大创项目验收都有学生找我,不少问题单步跟踪一下就出来了。调试器不光用来除错,还是很好的学习工具,我在课上写过一篇代码驱动的程序设计学习来教同学们如何用gdb来学C语言,基本的调试技能半小时就能学会,参考一下我编写的Linux下C程序设计实验指导, 举一反三在四年的学习中都受益,学会对自己Debug将终身受益。

为了考查学生的实际情况,我留了这个作业:

  • 写一个程序,统计自己C语言共写了多少行代码。

统计代码行数,行数不包括空行 (一行中没有字符或只有tab,空格), 注释行 (没有代码, 只有注释),不少同学说代码都丢了,那么可以试试统计这里的单文件c c++库

我们也要培养专门人才,我留了这个作业:

  • 毕业后大多数人从事的工作的要求是“提笔能写,开口能说,问策能对,遇事能办”,非常重要的技能是公文写作能力,你觉得自己写作能力如何?要怎么提高?

公文写作的重要性,同学们也许参加工作后才能体会,毕业生调研,不少人后悔没选姬瑞环老师的课,说在学校听说姬老师要求严格。很多人毕业了才能感受到要求严格的老师才是好老师。

写作技能也要训练,我们课上要求每周至少交一篇学习博客,如果能把作业按公文的要求来做,我相信同学们毕业时收获会不一般。


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

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



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


2016-2017-2 《Java程序设计》预备作业2总结的更多相关文章

  1. 2017《java技术预备作业》

    2017<java技术预备作业> 1.阅读邹欣老师的博客,谈谈你期望的师生关系是什么样的? 亦师亦友,很多人这样说,确实,倘若师生之间如果中间有些隔阂最终吃亏的始终是学生.我认为师生之间应 ...

  2. 2017《JAVA技术预备作业》 1502 陈明宇

    1.阅读邹欣老师的博客,谈谈你期望的师生关系是什么样的? 我期望的师生关系应该是亦师亦友的关系,美丽的校园是我们学生居住生活最久的地方而老师则是和我们接触最为密切的人.在课堂上,老师是辛勤的园丁,向我 ...

  3. Week11《java程序设计》作业总结

    Week11<java程序设计>作业总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 答: 2. 书面作业 本次PTA作业题集多线程 1. 源代码 ...

  4. week10《java程序设计》作业总结

    week10<java程序设计>作业总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 答:: 2. 书面作业 本次PTA作业题集异常 1. 常用异常 ...

  5. 20145202马超《JAVA》预备作业1

    20145202马超<JAVA>预备作业1 你觉得自己专业吗?对专业的期望是什么? 我觉得自己很不专业,我对专业的期望:老师之前讲过德国的一个研究,学习分为5个档次,第三个档是能够自己发现 ...

  6. 2017<java技术>预备作业计科冀浩然

    1.阅读邹欣老师的博客,谈谈你期望的师生关系是什么样的? 我期望的师生关系是相互融洽的,老师能够在上课的时候尽量多的教我们专业知识,可以尽量多和我们进行互动,课下能和我们如同朋友一般就可以了. 2.你 ...

  7. 2017C语言程序设计预备作业

    Deadline:2017-9-30 23:00 一.学习使用MarkDown 本学期的博客随笔都将使用MarkDown格式,要求熟练掌握MarkDown语法,学会如何使用标题,插入超链接,列表,插入 ...

  8. 计科1702冯亚杰C语言程序设计预备作业

    阅读邹欣老师的博客--师生关系,针对文中的几种师生关系谈谈你的看法,你期望的师生关系是什么样的? 答:首先老师和学生之间要互相尊重,我认为这是必要的.在第一点的基础上师生要互相帮助,互相配合,共同进步 ...

  9. Java程序设计第一次作业

    虽说这学期Java比上学期的C语言要简单些许,但是初次面对java程序,还是有点难度的.

  10. 201671010127 2016—2017—2 Java怎样解决Java程序中中文乱码的问题。

    这是本次第二次分享新手在编程中遇到的问题,相信很多Java新手和我一样,在Java编程中会遇到中文乱码的情况,下面我就给大家分享我遇到问题和解决问题的具体过程. 我先用Notepad++写了一个如下的 ...

随机推荐

  1. 弹出页面遮罩层,以及web端和移动端阻止遮罩层的滑动。

    最近项目遇到了遮罩层的一些问题,总结一下: 弹出遮罩层 遮罩层弹出有非常多的方法,这里只写出本人用的代码,使用jq操作dom的方法进行实现的. <style>.box{position:a ...

  2. window对象的属性及事件。

    不同的运行环境有不同的“顶层对象”,而在浏览器的环境中,顶层对象就是window对象.window就是指当前的浏览器窗口. 例:var a = 1: window.a; //1 1.window对象的 ...

  3. JavaScript基本语法(五)

    BOM 浏览器对象模型 BOM (浏览器对象模型),它提供了与浏览器窗口进行交互的对象. 一.window对象 Window对象表示整个浏览器窗口. 所有浏览器都支持 window 对象.它表示浏览器 ...

  4. css相对定位和绝对定位

    相对定位,是对原来元素的位置为参照物进行定位: 绝对定位,如果父级没有定位,则针对HTML为参照物进行定位:如果父级有定位,则针对父元素为参照物进行定位

  5. [转]利用JitPack发布自己项目让别人可以在dependencies中compile的简单方法

    JitPack的地址为:https://jitpack.io/ 发布 登陆 jitpack 在编辑框中输入github的网址,完成后点击LookUp 使用 点击 Get it. 之后网页就会自动导航到 ...

  6. SVN(Cornerstone)-添加忽略文件

    1.打开CornerStone,找到偏号设置,找到Subversion选项 2.去看"Use default global ignores"前面的"勾",删除& ...

  7. android studio 导入项目太慢(卡条)

    原因: 下载的项目和你当前已经下载的grandle 不一致, 导致导入的时候到网上下载相应的版本. 最简单的办法,修改你这个需要导入的项目. 需要修改的文件: 1. xxx-project/.idea ...

  8. 解决PKIX:unable to find valid certification path to requested target 的问题

    这两天在twitter服务器上忽然遇到这样的异常: e: sun.security.validator.ValidatorException: PKIX path building failed: s ...

  9. 项 目 管 理 知 识 体 系 指 南 (PMBOK2008)

    项 目 管 理 知 识 体 系 指 南 (第4版) PMBOK2008 输入 工具与技术 输出 4.项目整合管理 4.1 制定项目章程 4.1.1.1 项目工作说明书 4.1.2.1 专家判断 4.1 ...

  10. SQLBackupAndFTP The server principal "NT AUTHORITY\SYSTEM" is not able to access the database "xxxx"

    Windows server 2012中使用SQLBackupAndFTP备份数据库时遇到一个错误: ERROR: The server principal "NT AUTHORITY\SY ...