论文部分内容阅读
一、引言
《计算机程序设计》是工学类全日制本科生的公共基础课程,也是计算机专业学生的核心基础课程之一。目前,国内高校的程序设计课程选用的教学语言为C/C++,也有部分学校选取Pascal等语言作为第一门计算机语言进行教学。就本校的具体情况而言,大部分学生在大一下学期学习计算机程序设计,还有小部分学生将在大学二年级进行该课程学习,所选用的教学语言为C++语言。
《程序设计课程设计》针对计算机专业学生开设。之前的课程设计内容为使用VC开发一个类似于“五子棋”的游戏,主要的的知识扩展点在于了解和掌握Windows程序开发框架、消息循环-处理机制、MFC基础类库以及若干与图形绘制相关的API。相对而言,MFC的学习曲线对于大多数学生比较突兀。很多学生感觉即使完成了程序的设计,也无法完全理解其中的细节封装。此外,这种“固定命题”式的课程设计对于学生的创造性激发有限。
近年来,随着智能手机、平板电脑等移动设备的普及,嵌入式应用程序的开发在各个领域受到关注。比较典型的有基于iOS和基于Android的开发[1]。其中,由于设备限制等原因,Android平台的开发更加流行和受到关注[2]。基于上述原因,我校从2011年秋季学期开始,将《程序设计课程设计》的实习内容改为基于Android平台的应用软件开发。
本文就新的实践教学环境中所遇到的问题,以及其中的经验、教训进行了总结;探讨了实践教学中对学生学习兴趣的激发/引导方法。
二、所面临的问题
具体说来,在新的实践教学环节中,对于教师和学生,所面临的主要问题包括如下几个方面:
1) 教学语言和课程设计使用语言存在脱节:Android平台上的开发语言为Java,与C/C++之间存在一定的差异。
2) 开发平台需要熟悉:在学习前导课程《计算机程序设计》时,主要的软件实习环境为微软的VisualStudio;而Android应用开发需要使用各类Java开发平台,以开源工具Eclipse为主。大多数同学在上这门课之前并没有Eclipse的使用经验。
3) 桌面应用与嵌入式设备应用之间存在存在差异:桌面应用程序主要处理的对象是窗口、对话框等元素,而Android程序主要的处理对象在于处理Activity、Intent等元素,此外还要考虑电话、短信等中断消息。
4) 同MFC开发相比,Android应用开发是一个较为新颖的事物,并且其API版本本身尚在发展过程之中。事实上,对于这方面的内容,从事教学老师也学要一个熟悉和学习的过程。
三、教学准备及实施方式
针对上述问题,在教学实施过程之前,采取了下列准备措施。
1) 由于课程的时间在学期中期进行,为了让学生事先对Java语言有所了解,在学期开始通知学生所在班级的学生自行学习Java语言的语法及初步使用。实践证明,这个环节是十分重要的。虽然C++语言与Java语言之间存在一定程度的差异,但普遍而言,对于具有C/C++基础的学生而言,掌握这门语言基本语法的难度并不是太大。
2) 在课程开设之前,事先将Eclipse开发环境、AndroidSDK、ADT以离线的方式打包,帮学生完成部署。同时,在课程的初期,让学生充分了解和接触新的开发环境。事实上,Eclipse是当前十分主流的Java开发环境,了解该环境不仅对于本课程的学习有帮助,而且对于学生今后的工程实践也有非常大的促进作用。
3) 授课教师用了近两个月的时间学习和熟悉Android程序设计,并为每个小的知识点(如:复杂控件的使用、多线程、多媒体、SQLite数据库的使用)单独制作了示例程序。这样,有利于学生逐个掌握知识点,进而,可以搭建功能更为复杂的应用。后来的
4) 虽然Android程学设计是一个相对较为新颖的事物,但是仍然可以找到丰富的参考资料。在正式授课之前,授课教师除为学生选取了一本主要的参考书作为教材外,还为学生选取了若干套辅助学习参考资料。其中,所选教材具有较强的系统性,较为清晰的阐述了Android开发的过程和原理;辅助资料的特点是形式多样——既包括Android自带的API手册,又包括其他人的学习笔记、开发手册等[3]。
课程的实施采取“讲授与实践结合”的方式进行。课程安排为1~2周(全天)的课程讲授,以及一个月的课下实习。
为了充分激发学生的学习兴趣,在课程实践的实施环节,采取了如下的措施。
1) 分组:将参加课程设计的学生将3~5个人为一组进行划分,每组指定或者推选出一名组长。每个组内有详细的分工:包括设计、编码、调试、UI开发、文档撰写等。由于移动设备应用的特殊性,程序对UI(用户界面)的要求往往较高,因此每组3~5人的分组是合理的。
2) 实践任务分配:每个小组要求合作完成一个完整的Android应用。与以往的课程实践不同的是:对任务的命题不加限制,凭学生的兴趣自行命题。但是要求组与组之间不得重复,即使是同一题材的应用,也必须有较大的区分度。这样,既促进了组与组之间的竞争,又加强了组内的合作。
3) 成绩评定:成绩评定的方式如下:每个小组必须在验收时在全体师生面前演示自己的作品。由教师和其他组共同为该组打分(两个任课教师和每个组各一份打分表),打分表内的评价项包括:创意(30%)、难度及工程量(25%)、用户界面(25%)、程序稳定性(20%)四个方面。打分表的平均分即为该组同学的平均得分。此外,为了显示组内同学的差异,要求由组长给出每个同学对这个项目所占贡献的百分比。于是,每个同学的最后得分为:
(组平均分-10)+(10×组内人数)×贡献百分比
即:组内每个同学每人“拿出”10分,将这些分数按照贡献重新划分。从最后的结果来看,各组的同学记本能够做到客观、公正的对其他组同学进行评价;同时,组长对组内每个同学给出的工作量比重也较为客观。 4) 教师全程跟进:授课教师在整个课程实验的过程中全程参与学生的辅导、答疑。在一周的课程集中讲授结束后,学生可以随时通过电话、邮件等方式向教师求教。教师与学生一起分析、解决问题。
四、课程效果
本次课程改革,取得了较为满意的效果。以上学期为例,学生的作品大致可以分为“休闲类游戏”、“益智类游戏”、“操作类游戏”、“工具软件”四大类。具体完成情况如下:
·休闲类游戏的作品题材包括连连看、罗斯斯方块、对对碰、拼图等。这些游戏大都具有较为美观、简洁的UI,比较简易的操作。
·益智类游戏题材包括中国象棋、华容道、数独等。其中,“中国象棋”游戏中包含了人工智能方面的工作,“大作战”游戏很好的训练了学生的多线程编程能力。
·操作类游戏题材包括坦克大战、贪吃蛇、雷电、打地鼠等。其中,“重力感应贪吃蛇”作品包含对重力感应的支持;“炫光贪吃蛇”支持蓝牙联网功能,可以进行对战,雷电等飞行游戏具有良好的可玩性。
·工具类软件包括文件管理器、词霸、音乐播放器等。其中,“文件管理器”除包含普通管理器所支持的文件浏览等功能外,还支持文件的关联打开、创建、压缩、解压、查找等,是一款非常优秀的软件;“词霸”很好的训练了学生对SQLite数据库的掌握。
图:1~图3给出了若干学生作品的截屏。
五、总结
此次课程改革,是针对《程序设计课程设计》的一次尝试。主要的经验总结如下:
1) 课程内容的设置具有一定的趣味性、新颖性和实用性。这从一定程度上激发了学生的学习积极性。
2) 鼓励学生之间的竞争与合作,调动学生“比、学、赶、帮”的热情,这是一个非常重要的方面。
3) 教师的辅导作用也是一个非常重要的因素。当学生遇到具体的技术难点,应当跟学生一起分析、解决问题。这样,会对学生的学习积极性产生非常有益的影响。
[参考文献]
[1]郭宏志.《Android应用开发详解》,2010.
[2]杨丰盛.《Android应用开发揭秘》,2010.
[3]L.Darcey,S.Conder,Androidapplicationdevelopment(2ndEd),2011.
(作者单位:国防科技大学计算机学院计算机系湖南长沙)
《计算机程序设计》是工学类全日制本科生的公共基础课程,也是计算机专业学生的核心基础课程之一。目前,国内高校的程序设计课程选用的教学语言为C/C++,也有部分学校选取Pascal等语言作为第一门计算机语言进行教学。就本校的具体情况而言,大部分学生在大一下学期学习计算机程序设计,还有小部分学生将在大学二年级进行该课程学习,所选用的教学语言为C++语言。
《程序设计课程设计》针对计算机专业学生开设。之前的课程设计内容为使用VC开发一个类似于“五子棋”的游戏,主要的的知识扩展点在于了解和掌握Windows程序开发框架、消息循环-处理机制、MFC基础类库以及若干与图形绘制相关的API。相对而言,MFC的学习曲线对于大多数学生比较突兀。很多学生感觉即使完成了程序的设计,也无法完全理解其中的细节封装。此外,这种“固定命题”式的课程设计对于学生的创造性激发有限。
近年来,随着智能手机、平板电脑等移动设备的普及,嵌入式应用程序的开发在各个领域受到关注。比较典型的有基于iOS和基于Android的开发[1]。其中,由于设备限制等原因,Android平台的开发更加流行和受到关注[2]。基于上述原因,我校从2011年秋季学期开始,将《程序设计课程设计》的实习内容改为基于Android平台的应用软件开发。
本文就新的实践教学环境中所遇到的问题,以及其中的经验、教训进行了总结;探讨了实践教学中对学生学习兴趣的激发/引导方法。
二、所面临的问题
具体说来,在新的实践教学环节中,对于教师和学生,所面临的主要问题包括如下几个方面:
1) 教学语言和课程设计使用语言存在脱节:Android平台上的开发语言为Java,与C/C++之间存在一定的差异。
2) 开发平台需要熟悉:在学习前导课程《计算机程序设计》时,主要的软件实习环境为微软的VisualStudio;而Android应用开发需要使用各类Java开发平台,以开源工具Eclipse为主。大多数同学在上这门课之前并没有Eclipse的使用经验。
3) 桌面应用与嵌入式设备应用之间存在存在差异:桌面应用程序主要处理的对象是窗口、对话框等元素,而Android程序主要的处理对象在于处理Activity、Intent等元素,此外还要考虑电话、短信等中断消息。
4) 同MFC开发相比,Android应用开发是一个较为新颖的事物,并且其API版本本身尚在发展过程之中。事实上,对于这方面的内容,从事教学老师也学要一个熟悉和学习的过程。
三、教学准备及实施方式
针对上述问题,在教学实施过程之前,采取了下列准备措施。
1) 由于课程的时间在学期中期进行,为了让学生事先对Java语言有所了解,在学期开始通知学生所在班级的学生自行学习Java语言的语法及初步使用。实践证明,这个环节是十分重要的。虽然C++语言与Java语言之间存在一定程度的差异,但普遍而言,对于具有C/C++基础的学生而言,掌握这门语言基本语法的难度并不是太大。
2) 在课程开设之前,事先将Eclipse开发环境、AndroidSDK、ADT以离线的方式打包,帮学生完成部署。同时,在课程的初期,让学生充分了解和接触新的开发环境。事实上,Eclipse是当前十分主流的Java开发环境,了解该环境不仅对于本课程的学习有帮助,而且对于学生今后的工程实践也有非常大的促进作用。
3) 授课教师用了近两个月的时间学习和熟悉Android程序设计,并为每个小的知识点(如:复杂控件的使用、多线程、多媒体、SQLite数据库的使用)单独制作了示例程序。这样,有利于学生逐个掌握知识点,进而,可以搭建功能更为复杂的应用。后来的
4) 虽然Android程学设计是一个相对较为新颖的事物,但是仍然可以找到丰富的参考资料。在正式授课之前,授课教师除为学生选取了一本主要的参考书作为教材外,还为学生选取了若干套辅助学习参考资料。其中,所选教材具有较强的系统性,较为清晰的阐述了Android开发的过程和原理;辅助资料的特点是形式多样——既包括Android自带的API手册,又包括其他人的学习笔记、开发手册等[3]。
课程的实施采取“讲授与实践结合”的方式进行。课程安排为1~2周(全天)的课程讲授,以及一个月的课下实习。
为了充分激发学生的学习兴趣,在课程实践的实施环节,采取了如下的措施。
1) 分组:将参加课程设计的学生将3~5个人为一组进行划分,每组指定或者推选出一名组长。每个组内有详细的分工:包括设计、编码、调试、UI开发、文档撰写等。由于移动设备应用的特殊性,程序对UI(用户界面)的要求往往较高,因此每组3~5人的分组是合理的。
2) 实践任务分配:每个小组要求合作完成一个完整的Android应用。与以往的课程实践不同的是:对任务的命题不加限制,凭学生的兴趣自行命题。但是要求组与组之间不得重复,即使是同一题材的应用,也必须有较大的区分度。这样,既促进了组与组之间的竞争,又加强了组内的合作。
3) 成绩评定:成绩评定的方式如下:每个小组必须在验收时在全体师生面前演示自己的作品。由教师和其他组共同为该组打分(两个任课教师和每个组各一份打分表),打分表内的评价项包括:创意(30%)、难度及工程量(25%)、用户界面(25%)、程序稳定性(20%)四个方面。打分表的平均分即为该组同学的平均得分。此外,为了显示组内同学的差异,要求由组长给出每个同学对这个项目所占贡献的百分比。于是,每个同学的最后得分为:
(组平均分-10)+(10×组内人数)×贡献百分比
即:组内每个同学每人“拿出”10分,将这些分数按照贡献重新划分。从最后的结果来看,各组的同学记本能够做到客观、公正的对其他组同学进行评价;同时,组长对组内每个同学给出的工作量比重也较为客观。 4) 教师全程跟进:授课教师在整个课程实验的过程中全程参与学生的辅导、答疑。在一周的课程集中讲授结束后,学生可以随时通过电话、邮件等方式向教师求教。教师与学生一起分析、解决问题。
四、课程效果
本次课程改革,取得了较为满意的效果。以上学期为例,学生的作品大致可以分为“休闲类游戏”、“益智类游戏”、“操作类游戏”、“工具软件”四大类。具体完成情况如下:
·休闲类游戏的作品题材包括连连看、罗斯斯方块、对对碰、拼图等。这些游戏大都具有较为美观、简洁的UI,比较简易的操作。
·益智类游戏题材包括中国象棋、华容道、数独等。其中,“中国象棋”游戏中包含了人工智能方面的工作,“大作战”游戏很好的训练了学生的多线程编程能力。
·操作类游戏题材包括坦克大战、贪吃蛇、雷电、打地鼠等。其中,“重力感应贪吃蛇”作品包含对重力感应的支持;“炫光贪吃蛇”支持蓝牙联网功能,可以进行对战,雷电等飞行游戏具有良好的可玩性。
·工具类软件包括文件管理器、词霸、音乐播放器等。其中,“文件管理器”除包含普通管理器所支持的文件浏览等功能外,还支持文件的关联打开、创建、压缩、解压、查找等,是一款非常优秀的软件;“词霸”很好的训练了学生对SQLite数据库的掌握。
图:1~图3给出了若干学生作品的截屏。
五、总结
此次课程改革,是针对《程序设计课程设计》的一次尝试。主要的经验总结如下:
1) 课程内容的设置具有一定的趣味性、新颖性和实用性。这从一定程度上激发了学生的学习积极性。
2) 鼓励学生之间的竞争与合作,调动学生“比、学、赶、帮”的热情,这是一个非常重要的方面。
3) 教师的辅导作用也是一个非常重要的因素。当学生遇到具体的技术难点,应当跟学生一起分析、解决问题。这样,会对学生的学习积极性产生非常有益的影响。
[参考文献]
[1]郭宏志.《Android应用开发详解》,2010.
[2]杨丰盛.《Android应用开发揭秘》,2010.
[3]L.Darcey,S.Conder,Androidapplicationdevelopment(2ndEd),2011.
(作者单位:国防科技大学计算机学院计算机系湖南长沙)