论文部分内容阅读
在移动平台软件开发技术课程教学中,我们总结出了“渐进式案例驱动教学法”,以案例驱动教学,由浅入深,由易到难,循环渐进,逐步深入,既直观又有目的性,并结合“启发式”和“互动式”教学方法,使学生积极思考问题,从而提高学生独立分析问题、解决问题和主动探索知识的能力,也极大地激发了学生的学习热情。
一引言
随着IT产业的发展,国内大中专院校普遍都开设了计算机相关专业,近几年出现了需求市场暂时性的饱和,特别是刚刚毕业的,没有工作经验或仅具备入门级能力水平的IT人才略显过剩。我学院属于“三本”学校,生源质量相对较差,面对存在巨大潜力的IT产业,并没有开设传统的计算机专业,而是把其中的一个教学重点放在移动平台技术应用上,实施特色教学,针对就业市场的盲点有的放矢地培养人才。
然而要想达到理想的教学目的也并非易事,除社会上存在的培训班外,几乎没有正规院校开设这门课程,教学资源稀少,缺乏借鉴性经验。但在这种情况下,我们经过两年的尝试基本取得了预期效果,经课程组探索总结出这样的教学方法,即渐进式案例驱动教学法。
移动平台软件开发技术这门课程主要目的是使学生掌握一门具体软件技术(如Android或者IOS平台),达到熟练应用的程度,最终以独立开发一个完整的应用程序或者游戏娱乐软件为考核标准,但是理论上仍然属于程序设计课程范畴。程序设计的常规教学法是从基本语法、语句开始介绍,讲解每条语句时都会有相应的举例说明,随着语句的增多,逐渐引入一些简单的程序段。这种方法的好处是在概念上对程序设计语句有较清晰的认识,容易掌握每条语句的语法规则,便于教师讲解各种概念。但是这种传统的教学模式有一个明显的不足,即学生在学习过程中,只是被动地去理解和记忆教师介绍的各种语法知识和基本的语句概念,无法从综合应用的整体角度去理解每条语句的作用及应用范围,学生只见树木、不见森林,课程最后编应用程序时,学生往往无从下手。所以我们在教学中采用渐进式案例驱动教学法,以案例驱动教学,有意识地举一些综合性的例子,由浅入深,由易到难,循环渐进,逐步深入,综合比较,既直观又有目的性,做到有的放矢,并结合“启发式”和“互动式”教学方法,使学生积极思考问题,从而提高学生独立分析问题、解决问题和主动探索知识的能力,也极大地激发了学生的学习热情。
二教学案例
第一步,为了进一步吸引学生,用动画模拟粒子效果实现一个烟花的效果,五彩纷纷,绚丽夺目。当学生看到这个案例的运行效果后品头论足的同时,会对这个燃放烟花的效果是用什么技术实现的、如何实现的等问题产生浓厚的兴趣,将学生的好奇心和求知欲调动起来后,让学生大胆想象和假设应该是如何实现的。
第二步,给出这个案例需要的技术知识,画布、画笔、形状绘制、线程技术、双缓冲视图类、简单碰撞检测等。简单回顾已经学习过的线程技术,画布、画笔、多边形形状绘制等知识在本案例中的使用方式。引出本次课程需要掌握新内容:认识双缓冲视图类的使用和如何应用线程技术和碰撞检测实现一个动画效果。
第三步,分解案例,对一个粒子动画过程进行分析,并演示效果。
第四步,应用动画实现原理,通过动画连环册演示并讲解在现实中动画是如何在视觉中产生的,以及帧频及速度对动画效果的影响。把这个动画产生的现实过程与技术实现过程对应,介绍技术使用方法和经验技巧。
第五步,代码开发过程演示,让学生亲眼看着老师如何具体地应用相关技术点协同实现这个动画过程,并进一步说明,同时考虑编码规范、代码设计等需要注意的问题。代码如下(篇幅有限,仅列出关键代码):
1应用程序启动类(代码略)
Android程序的入口类,继承自Activity类,设置要
2绘制线程
//绘制线程类或者叫刷屏线程类,继承自Thread线程类
public class DrawThread extends Thread {
……
//方法:线程的执行方法,用于绘制屏幕和计算帧速率,主要功能是当循环标志位为真时
//反复执行画布的绘制工作,同时为保证线程同步应用了加锁和解锁功能。
public void run() {
Canvas canvas = null;//声明一个Canvas对象
while (flag) {
canvas = surfaceHolder.lockCanvas(null);//通过为画布加锁获取BallView的画布对象
bv.doDraw(canvas); //调用BallView的doDraw方法进行绘制
if (canvas != null) { //如果canvas不为空
surfaceHolder.unlockCanvasAndPost(canvas);//解锁并将画布对象传回
}
}
Thread.sleep(sleepSpan); //线程休眠一段时间,这里的休眠时间是固定的,后期进//行代码优化时,应该使用动态的休眠时间。
}
}
}
3小球视图类(代码略)
小球视图类,创建小球对象初始化小球图片资源和绘制自己的功能
4小球运动逻辑
/ /逻辑线程类或者叫计算线程类,继承自Thread线程类
public class BallThread extends Thread {
……
public void run() {//方法:线程的执行方法,负责根据物理公式计算小球的位置坐标并修改//小球对象的相关属性
while (flag) {
current = System.nanoTime();//获取当前时间,单位为纳秒
//获取从玩家开始到现在水平方向走过的时间
double timeSpanX =(double) ((current - father. timeX) / 1000 / 1000 / 1000);
//处理水平方向上的运动
ball.x = (int) (ball.startX + ball.v_x * timeSpanX);
//处理竖直方向上的运动
if (ball.bFall) {//判断球是否已经移出挡板
……
第六步,布置课堂练习一,模仿刚刚老师写的一个粒子的动画案例,自己实现一遍。练习二,实现一个小球的从高处落下运动动画。练习三,实现燃放烟花的效果。对于练习二和练习三,在老师的引导下(老师不做代码示范)完成,同时老师需要随时解答学生的提问,并在大多数学生完成的时候,给出老师的代码示例,并根据辅导情况进行总结。
在巡回辅导的过程中,将制作的既快又比较有新意的程序,通过多媒体教学网络,播放给全班同学观看。
三教学体会
大量的事实证明,如果一个人对某个事物没有丝毫兴趣,是很难全身心地去学习和探究该事物的。渐进式案例驱动教学法采用“先实例,后语法”的教学方式,在备课时结合教学内容设计一些有趣的程序,上课首先让学生观看有趣的程序运行效果,有效地激发了学生的好奇心和求知欲,使学生产生强烈的学习欲望,然后分析案例的实现方法,进而引出案例中用到的技术及功能。
在渐进式案例驱动教学法这种教学尝试中有如下体会:
第一,有助于培养学生的观察、思维等能力。案例教学方法在充分调动学生主动学习积极性的前提下,引入并讲授新知识、新方法,这有助于培养学生的思维能力、观察力、想象力及创新意识。
第二,案例的设计是关键。案例要有趣,又要与教学内容结合,可以结合学生已学习过的内容准备小综合案例,还能起到温故而知新的作用。
第三,本教学方法可以更好地适应不同程度的学生。在传统的程序设计语言教学中,在讲过语句规则之后,给出一个一般只含有课本上已学过的简单语句的简单实例,仅仅是说明其语法及功能,程序本身往往没有多大的实用性及有趣性,而在本教学方法中,为了程序有趣,用到了一些教材外的知识,使得学习能力较强的并且对此感兴趣的同学可以学到更多的知识。
第四,本教学方法可以使学生更快、更深入地掌握整个技术框架。只学得一个个孤立的知识,很难达到综合应用的能力,必须在实践环境中更快、更好地掌握技术并获得解决实际问题的能力。
第五,案例教学法可以大大提高课堂教学效率。首先,由于这种教学方法是以激发学生的学习兴趣为起点。其次,由于每个实例中不仅有要讲的新的技术知识,还含有丰富的各种实用案例的基本设计思想,这使得在宝贵的课堂教学时间里,使学生学到更多的有实用价值的知识与设计方法,提高学生的设计能力。
在教学过程中,采用渐进式案例驱动教学法具有很强的引导性和扩展性,将理论与实践有机地结合起来,有意识地激发学生的学习兴趣,增强学生学习的主动性,通过综合比较,学生可以很容易地、全面地掌握所学知识,提高解决实际问题的能力。教师在本教学方法中由知识的传授者、灌输者转变为学生主动学习的帮助者、促进者,我们使用此种方法取得了很好的教学效果,深受学生的欢迎。
参考文献
[1]李宁.Android应用开发实践[M].机械工业出版社,2012,1.
[2]余志龙.GoogleAndroidSDK开发范例大全(第三版)[M].人民邮电出版社,2011.11.
[3]郝玉龙..Android程序设计基础[M].清华大学出版社,2011.10.
一引言
随着IT产业的发展,国内大中专院校普遍都开设了计算机相关专业,近几年出现了需求市场暂时性的饱和,特别是刚刚毕业的,没有工作经验或仅具备入门级能力水平的IT人才略显过剩。我学院属于“三本”学校,生源质量相对较差,面对存在巨大潜力的IT产业,并没有开设传统的计算机专业,而是把其中的一个教学重点放在移动平台技术应用上,实施特色教学,针对就业市场的盲点有的放矢地培养人才。
然而要想达到理想的教学目的也并非易事,除社会上存在的培训班外,几乎没有正规院校开设这门课程,教学资源稀少,缺乏借鉴性经验。但在这种情况下,我们经过两年的尝试基本取得了预期效果,经课程组探索总结出这样的教学方法,即渐进式案例驱动教学法。
移动平台软件开发技术这门课程主要目的是使学生掌握一门具体软件技术(如Android或者IOS平台),达到熟练应用的程度,最终以独立开发一个完整的应用程序或者游戏娱乐软件为考核标准,但是理论上仍然属于程序设计课程范畴。程序设计的常规教学法是从基本语法、语句开始介绍,讲解每条语句时都会有相应的举例说明,随着语句的增多,逐渐引入一些简单的程序段。这种方法的好处是在概念上对程序设计语句有较清晰的认识,容易掌握每条语句的语法规则,便于教师讲解各种概念。但是这种传统的教学模式有一个明显的不足,即学生在学习过程中,只是被动地去理解和记忆教师介绍的各种语法知识和基本的语句概念,无法从综合应用的整体角度去理解每条语句的作用及应用范围,学生只见树木、不见森林,课程最后编应用程序时,学生往往无从下手。所以我们在教学中采用渐进式案例驱动教学法,以案例驱动教学,有意识地举一些综合性的例子,由浅入深,由易到难,循环渐进,逐步深入,综合比较,既直观又有目的性,做到有的放矢,并结合“启发式”和“互动式”教学方法,使学生积极思考问题,从而提高学生独立分析问题、解决问题和主动探索知识的能力,也极大地激发了学生的学习热情。
二教学案例
第一步,为了进一步吸引学生,用动画模拟粒子效果实现一个烟花的效果,五彩纷纷,绚丽夺目。当学生看到这个案例的运行效果后品头论足的同时,会对这个燃放烟花的效果是用什么技术实现的、如何实现的等问题产生浓厚的兴趣,将学生的好奇心和求知欲调动起来后,让学生大胆想象和假设应该是如何实现的。
第二步,给出这个案例需要的技术知识,画布、画笔、形状绘制、线程技术、双缓冲视图类、简单碰撞检测等。简单回顾已经学习过的线程技术,画布、画笔、多边形形状绘制等知识在本案例中的使用方式。引出本次课程需要掌握新内容:认识双缓冲视图类的使用和如何应用线程技术和碰撞检测实现一个动画效果。
第三步,分解案例,对一个粒子动画过程进行分析,并演示效果。
第四步,应用动画实现原理,通过动画连环册演示并讲解在现实中动画是如何在视觉中产生的,以及帧频及速度对动画效果的影响。把这个动画产生的现实过程与技术实现过程对应,介绍技术使用方法和经验技巧。
第五步,代码开发过程演示,让学生亲眼看着老师如何具体地应用相关技术点协同实现这个动画过程,并进一步说明,同时考虑编码规范、代码设计等需要注意的问题。代码如下(篇幅有限,仅列出关键代码):
1应用程序启动类(代码略)
Android程序的入口类,继承自Activity类,设置要
2绘制线程
//绘制线程类或者叫刷屏线程类,继承自Thread线程类
public class DrawThread extends Thread {
……
//方法:线程的执行方法,用于绘制屏幕和计算帧速率,主要功能是当循环标志位为真时
//反复执行画布的绘制工作,同时为保证线程同步应用了加锁和解锁功能。
public void run() {
Canvas canvas = null;//声明一个Canvas对象
while (flag) {
canvas = surfaceHolder.lockCanvas(null);//通过为画布加锁获取BallView的画布对象
bv.doDraw(canvas); //调用BallView的doDraw方法进行绘制
if (canvas != null) { //如果canvas不为空
surfaceHolder.unlockCanvasAndPost(canvas);//解锁并将画布对象传回
}
}
Thread.sleep(sleepSpan); //线程休眠一段时间,这里的休眠时间是固定的,后期进//行代码优化时,应该使用动态的休眠时间。
}
}
}
3小球视图类(代码略)
小球视图类,创建小球对象初始化小球图片资源和绘制自己的功能
4小球运动逻辑
/ /逻辑线程类或者叫计算线程类,继承自Thread线程类
public class BallThread extends Thread {
……
public void run() {//方法:线程的执行方法,负责根据物理公式计算小球的位置坐标并修改//小球对象的相关属性
while (flag) {
current = System.nanoTime();//获取当前时间,单位为纳秒
//获取从玩家开始到现在水平方向走过的时间
double timeSpanX =(double) ((current - father. timeX) / 1000 / 1000 / 1000);
//处理水平方向上的运动
ball.x = (int) (ball.startX + ball.v_x * timeSpanX);
//处理竖直方向上的运动
if (ball.bFall) {//判断球是否已经移出挡板
……
第六步,布置课堂练习一,模仿刚刚老师写的一个粒子的动画案例,自己实现一遍。练习二,实现一个小球的从高处落下运动动画。练习三,实现燃放烟花的效果。对于练习二和练习三,在老师的引导下(老师不做代码示范)完成,同时老师需要随时解答学生的提问,并在大多数学生完成的时候,给出老师的代码示例,并根据辅导情况进行总结。
在巡回辅导的过程中,将制作的既快又比较有新意的程序,通过多媒体教学网络,播放给全班同学观看。
三教学体会
大量的事实证明,如果一个人对某个事物没有丝毫兴趣,是很难全身心地去学习和探究该事物的。渐进式案例驱动教学法采用“先实例,后语法”的教学方式,在备课时结合教学内容设计一些有趣的程序,上课首先让学生观看有趣的程序运行效果,有效地激发了学生的好奇心和求知欲,使学生产生强烈的学习欲望,然后分析案例的实现方法,进而引出案例中用到的技术及功能。
在渐进式案例驱动教学法这种教学尝试中有如下体会:
第一,有助于培养学生的观察、思维等能力。案例教学方法在充分调动学生主动学习积极性的前提下,引入并讲授新知识、新方法,这有助于培养学生的思维能力、观察力、想象力及创新意识。
第二,案例的设计是关键。案例要有趣,又要与教学内容结合,可以结合学生已学习过的内容准备小综合案例,还能起到温故而知新的作用。
第三,本教学方法可以更好地适应不同程度的学生。在传统的程序设计语言教学中,在讲过语句规则之后,给出一个一般只含有课本上已学过的简单语句的简单实例,仅仅是说明其语法及功能,程序本身往往没有多大的实用性及有趣性,而在本教学方法中,为了程序有趣,用到了一些教材外的知识,使得学习能力较强的并且对此感兴趣的同学可以学到更多的知识。
第四,本教学方法可以使学生更快、更深入地掌握整个技术框架。只学得一个个孤立的知识,很难达到综合应用的能力,必须在实践环境中更快、更好地掌握技术并获得解决实际问题的能力。
第五,案例教学法可以大大提高课堂教学效率。首先,由于这种教学方法是以激发学生的学习兴趣为起点。其次,由于每个实例中不仅有要讲的新的技术知识,还含有丰富的各种实用案例的基本设计思想,这使得在宝贵的课堂教学时间里,使学生学到更多的有实用价值的知识与设计方法,提高学生的设计能力。
在教学过程中,采用渐进式案例驱动教学法具有很强的引导性和扩展性,将理论与实践有机地结合起来,有意识地激发学生的学习兴趣,增强学生学习的主动性,通过综合比较,学生可以很容易地、全面地掌握所学知识,提高解决实际问题的能力。教师在本教学方法中由知识的传授者、灌输者转变为学生主动学习的帮助者、促进者,我们使用此种方法取得了很好的教学效果,深受学生的欢迎。
参考文献
[1]李宁.Android应用开发实践[M].机械工业出版社,2012,1.
[2]余志龙.GoogleAndroidSDK开发范例大全(第三版)[M].人民邮电出版社,2011.11.
[3]郝玉龙..Android程序设计基础[M].清华大学出版社,2011.10.