1、教学方法与手段
《C语言程序设计》、《高级语言程序设计》、《Java语言程序设计》均是实践性很强的课程。在教学过程中,要求学生既要掌握基本概念,又要掌握程序设计的思想、方法和技术,并且具备灵活运用的能力,所以在课程教学中特别重视学生动手能力的培养。我们主要本着“以程序设计思想为主线、以知识结构为基础,以培养能力和提高兴趣为目标,变应试为应用”的教学思想,提出了新的教学理念。在教学方法上,课堂教学注重形象生动和案例教学,注重理论与实践的结合,把实验、实训贯穿于整个教学的全过程,有意识地培养学生主动学习和实践的素养,养成良好的编程风格,提高动手能力和创新能力,把学习程序设计变成兴趣与能力共同培养的过程。
(1)教学设计
把握“理论联系实际、教学与激励并重、科学和人文共进”的指导思想,对教学内容进行精心设计和准备,全面培养学生的学习热情、信息素质、动手能力和创新思维,显著提高教育教学水平和质量。
具体教学设计如下:
①开设课程前组织专任教师和资深专家开展课程研讨,根据计算机学科发展现状、软件开发技术发展现状和社会人才能力需求等情况及时修订课程大纲,细化课程内容。已经进行专题研讨5次,参加教学研讨的任课教师10人,参加各类论坛研讨8人次。
②课前精心设计安排教学内容,充分备课。根据学科发展和生产实践要求,适当调整授课内容,并安排相关专家进行授课。
③理论课讲授时做到条理清晰、深浅适当,注重理论联系实际,并将新的知识和思想融入课程内容中去。
④课程教学将传统教学手段和现代化教学手段有机结合起来,采用“以多媒体教学为主、板书为辅、现场编程演示”的方式,多种教学手段相互补充,使课堂教学与实验教学相结合。充分使用多种现代教育技术包括影像、网络、多媒体课件等,配合教师的讲授,采用启发、引导的教学方法,在课堂上鼓励学生多提问题,加强教与学的交流,提升学生学习兴趣和主动性、参与性,营造良好的课堂氛围。
⑤课后要求学生阅读相关参考资料和浏览编程论坛,在拓宽知识面的基础上了解、学习、积累更多软件开发相关技术、方法和理论。
⑥重视实践,提高学生的应用能力。通过实践教学,加强理论与实践的联系,明确上机任务,培养学生动手能力。在上机之前,教师先研究上机内容并布置明确的上机任务,同时要求学生编好要调试的程序,为上机做好准备。学生上机实践过程中可随时将其编写并调试通过的程序可通过网络提交到由我们自己开发的Judgeonline评判系统中进行在线评判。除了调试程序外,还要求学生初步掌握分析程序算法结构的能力,要求学生根据所学知识优化程序和算法,这样可以提高学生的实际应用能力。每次实践课结束后,要求学生写好详细的实验报告和总结。
在课程设计教学中,教师引导学生参与程序的编制过程,去设计程序、分析程序,并优化程序,实现“实践—理论—实践”的循环,使理论与实践达到紧密的结合。学生分组分工合作,以培养他们分析解决问题的能力和团队合作精神。
⑦注重培养学生综合素质,做到教学育人的目的。
(2)举例说明教学过程使用各种教学方法、实施过程和效果
①采用了“精讲多练,重在实践练习”的教学模式
授课过程中我们按知识单元组织教学,强调算法和解决实际问题的思想和方法,并相应提出一些相关知识单元的程序设计问题。学生带着这些问题走进实验课堂,通过上机编程实践解决问题,进行程序设计和编程,。自2007年开始,我校陈湘骥老师在ACM竞赛系统的基础开发了一款主要用于《高级语言程序设计》的计算机在线考试与训练平台系统软件--JudgeOnline。该在线评判平台让学生可以在上机实践课和课后进行编程练习和编程测试,学生以学号注册用户,登录后即可将其在编程环境下编写、调试好的程序在线提交,由评判系统编译运行,发现并向学生反馈程序中的语法和逻辑错误,学生可重复修改后提交,直到通过为止。这一过程很好的锻炼了学生独立思考问题、解决问题的学习能力,同时我们还鼓励学生之间进行问题讨论和分析,加强任课教师辅助性指导,让学生真正从练习中获得锻炼和提高。经过我们的近几年的教学总结,我们发现学生利用实验课和课后时间进行在线编程练习对学生操作能力提高的效果十分明显,使得每一位同学都能够具备初步的程序设计和开发能力,为后续的《数据结构》和《操作系统》等课程学习、《软件开发》和《软件测试》等实践锻炼打下坚实基础。
②采用了案例和项目驱动的教学方法
在教学过程中,我们尝试采用了案例和项目驱动的教学方法,直接讲解程序设计方法在实际项目中的应用,将教材中所涉及的概念、语法、理论内容穿插在任课老师所主持和参与的科研项目、任课老师指导的大学生科技创新项目中进行有针对性的分析、讨论和学习中,通过项目开发引导学生自主学习和协作学习,加强培养学生知识转化为能力的过程,激发学生对领域知识的拓展学习。在这种互动式的教学过程中,特别注重了综合应用启发式、辩论式、探究式等教学方法,充分调动学生学习主动性和参与性。另外,我们还实施创新鼓励附加分制度,鼓励学生在业余时间编制一些趣味性、实用性的程序,对有创新的研究型和设计型实验做得比较好的学生,给予适当的创新鼓励分,收到了非常好的效果。
③采用了立体化的教学体系
为加强教学效果,在课堂讲授的同时,我们还开发了丰富的网上教学资源,形成了立体化的教学环境。通过“网络课件”、“课堂教学录像”和“在线习题解答”等模块,学生能够在课后随时复习和加强课堂讲授的内容; 通过“课程学习论坛”和“网上答疑”模块,学生能够更清楚地掌握课程中的普遍疑难,及时得到其他同学的帮助和教师的辅导;在JudgeOnline在线评判系统的“模拟考试”子系统给出了完全与实际考试一样的环境,学生能够进行自测训练,通过模拟考试,学生能够了解自己对于知识点的掌握程度;网络平台还提供了知识的扩展指导,如实际应用小系统的开发指导和优秀电子资源等。
④采用了个性化的教学方式
我们的教学方式很注重个性化,开发了教学网站,公布了教师的电子邮件和QQ等常用联系方式,在保留传统的教师与学生面对面答疑方式的基础上,借助在线教学网站,增加了网络在线答疑方式,使答疑不受时间和空间的限制,充分利用现代化的网络教学环境,搭建了一个学生自学和师生互动的平台,使得教师/学生的一对一教学模式成为可能,使其成为课堂教学和实验教学的有益补充,有力地促进了课程的教学管理。另外,在教学网站的帮助下,学生可以选择符合自己的教学内容进行学习,并进行学习进度及掌握程度的检查。教学网站中的JudgeOnline在线评断系统可以由任课教师自行设计题型、题目和生成测试试卷,由任课老师指定学生人群进行练习和测试。是实现个性化教学的重要工具。
⑤启发学生学习、思考
适当介绍重要计算机科技前沿事件、著名IT科学家故事,让同学们更多地得到先贤的科学和人文精神的熏陶。例如,讲授计算机编程语言发展史时,介绍国内外著名的计算机专家的主要贡献,重点是介绍他们的奋斗历程,给同学们教授为人、治学的基本原则。
(3)作业和考试等教改措施
①作业:包括理论教学习题、上机编程练习和实验报告。
完成每个专题的理论教学后要求学生提交该章节习题作业;每次实验课安排适当的编程练习任务,要求学生在规定的时间里保质保量完成程序的编写、调试、在线提交和成功通过评判。JudgeOnline在线评判系统将自动统计和记录学生每次实验完成的情况,并据此给出学生实验完成情况的统计和排名,激发学生的学习兴趣、激励学生间的学习竞争意识和鼓励学生间相互学习讨论和合作。任课教师根据实验统计情况及时发现问题,并对个别落后同学进行专门辅导。任课教师对学生提交的实验报告进行批改完后将意见和建议向学生反馈,并组织分析报告和总结讨论。
②课程考试:打破单一闭卷的传统考核方式,多样化考核方式相结合,采用闭卷笔试、上机编程考试和平时上机实验相结合。
总评成绩:期末考试成绩(占70%) + 实验成绩(占30%)。
其中,期末闭卷笔试占期末考试成绩的50%,主要以阅读程序写结果和阅读程序填空等题型为主,侧重于考核学生对基本概念的消化掌握情况和灵活运用能力,了保证考试的客观与公正,卷面笔试采用了课程结束后由课题组组织教师“统一命题、统一考试、统一密封试卷、统一流水批改”的方式,实现教考分离。上机编程考试占期末考试成绩的50%,主要通过在JudgeOnline在线评判系统上要求学生独立编写、调试、在线提交评判程序的题型为主,提倡创新和自我发挥。而实验成绩分为实验课课前15分钟测验成绩、平时实验任务完成成绩、期中上机编程测验等三部分。
(4)教学手段
①引导学生思考
以教材和参考资料等为依据,提出问题,指导学生查阅文献,培养学生自学能力。
②充分利用以多媒体为核心的多元化手段进行教学
多媒体教学方式的特点是信息量大,图文直观,便于算法的动态演示,同时借助于编译系统进行程序从编辑、编译、链接、运行到测试与调试的整个过程的演示,可增强学生对程序设计的感性认识,缺点是每页的幻灯片内容有限,不便于学生进行前后内容的对照,内容更新速度过快,学生有时反应不过来,跟不上任课教师的思路,而传统的板书教学法恰好弥补了这一缺陷。因此,以多媒体教学为主、板书为辅,多种教学手段并用,可以实现传统媒体与多媒体的优势互补,最大限度发挥二者的应用价值。 任课教师课堂现场编程演示,目的是避免纸上谈兵,达到“以学生为本、师生互动”的目的,虽然加大了教师授课的随机性和难度,但是却可以充分调动学生的学习积极性和主动性,而且由教师一边带领学生找错,一边讲解如何找错和如何改错,给学生留下的印象更为深刻,也真正体现了“按照学生的学来设计和组织教师的教、启发引导、精讲多练、理论与实践相结合”的教学宗旨。
③在实验室机房开展实践教学
我们安排了15组实验,包括平时性实验、综合性实验和课程设计。让学生在通过自学、主动查找资料、师生互动交流的过程中完成实验内容。
每一组平时性实验要求每个同学都能通过JudgeOnline系统在线成功提交每一个实验题目,并提交实验报告,内容主要是对实验过程进行总结和解答实验报告中列出的思考题,否则无法继续进入下一组实验。在教学学期末,要求每一位同学独立完成综合性实验中的程序设计和开发、成功在线提交和撰写规范的综合性实验报告。在下一教学学期开始,在实验机房统一布置和进行《高级语言程序设计》课程设计任务,要求学生在2周时间内独立进行设计选题、项目需求分析、概要设计、详细设计、编程测试、项目答辩、撰写规范设计性报告等,鼓励学生个性化发展,独立性思考,创新性和创造性思维。
《C语言程序设计》、《高级语言程序设计》、《Java语言程序设计》均是实践性很强的课程。在教学过程中,要求学生既要掌握基本概念,又要掌握程序设计的思想、方法和技术,并且具备灵活运用的能力,所以在课程教学中特别重视学生动手能力的培养。我们主要本着“以程序设计思想为主线、以知识结构为基础,以培养能力和提高兴趣为目标,变应试为应用”的教学思想,提出了新的教学理念。在教学方法上,课堂教学注重形象生动和案例教学,注重理论与实践的结合,把实验、实训贯穿于整个教学的全过程,有意识地培养学生主动学习和实践的素养,养成良好的编程风格,提高动手能力和创新能力,把学习程序设计变成兴趣与能力共同培养的过程。
(1)教学设计
把握“理论联系实际、教学与激励并重、科学和人文共进”的指导思想,对教学内容进行精心设计和准备,全面培养学生的学习热情、信息素质、动手能力和创新思维,显著提高教育教学水平和质量。
具体教学设计如下:
①开设课程前组织专任教师和资深专家开展课程研讨,根据计算机学科发展现状、软件开发技术发展现状和社会人才能力需求等情况及时修订课程大纲,细化课程内容。已经进行专题研讨5次,参加教学研讨的任课教师10人,参加各类论坛研讨8人次。
②课前精心设计安排教学内容,充分备课。根据学科发展和生产实践要求,适当调整授课内容,并安排相关专家进行授课。
③理论课讲授时做到条理清晰、深浅适当,注重理论联系实际,并将新的知识和思想融入课程内容中去。
④课程教学将传统教学手段和现代化教学手段有机结合起来,采用“以多媒体教学为主、板书为辅、现场编程演示”的方式,多种教学手段相互补充,使课堂教学与实验教学相结合。充分使用多种现代教育技术包括影像、网络、多媒体课件等,配合教师的讲授,采用启发、引导的教学方法,在课堂上鼓励学生多提问题,加强教与学的交流,提升学生学习兴趣和主动性、参与性,营造良好的课堂氛围。
⑤课后要求学生阅读相关参考资料和浏览编程论坛,在拓宽知识面的基础上了解、学习、积累更多软件开发相关技术、方法和理论。
⑥重视实践,提高学生的应用能力。通过实践教学,加强理论与实践的联系,明确上机任务,培养学生动手能力。在上机之前,教师先研究上机内容并布置明确的上机任务,同时要求学生编好要调试的程序,为上机做好准备。学生上机实践过程中可随时将其编写并调试通过的程序可通过网络提交到由我们自己开发的Judgeonline评判系统中进行在线评判。除了调试程序外,还要求学生初步掌握分析程序算法结构的能力,要求学生根据所学知识优化程序和算法,这样可以提高学生的实际应用能力。每次实践课结束后,要求学生写好详细的实验报告和总结。
在课程设计教学中,教师引导学生参与程序的编制过程,去设计程序、分析程序,并优化程序,实现“实践—理论—实践”的循环,使理论与实践达到紧密的结合。学生分组分工合作,以培养他们分析解决问题的能力和团队合作精神。
⑦注重培养学生综合素质,做到教学育人的目的。
(2)举例说明教学过程使用各种教学方法、实施过程和效果
①采用了“精讲多练,重在实践练习”的教学模式
授课过程中我们按知识单元组织教学,强调算法和解决实际问题的思想和方法,并相应提出一些相关知识单元的程序设计问题。学生带着这些问题走进实验课堂,通过上机编程实践解决问题,进行程序设计和编程,。自2007年开始,我校陈湘骥老师在ACM竞赛系统的基础开发了一款主要用于《高级语言程序设计》的计算机在线考试与训练平台系统软件--JudgeOnline。该在线评判平台让学生可以在上机实践课和课后进行编程练习和编程测试,学生以学号注册用户,登录后即可将其在编程环境下编写、调试好的程序在线提交,由评判系统编译运行,发现并向学生反馈程序中的语法和逻辑错误,学生可重复修改后提交,直到通过为止。这一过程很好的锻炼了学生独立思考问题、解决问题的学习能力,同时我们还鼓励学生之间进行问题讨论和分析,加强任课教师辅助性指导,让学生真正从练习中获得锻炼和提高。经过我们的近几年的教学总结,我们发现学生利用实验课和课后时间进行在线编程练习对学生操作能力提高的效果十分明显,使得每一位同学都能够具备初步的程序设计和开发能力,为后续的《数据结构》和《操作系统》等课程学习、《软件开发》和《软件测试》等实践锻炼打下坚实基础。
②采用了案例和项目驱动的教学方法
在教学过程中,我们尝试采用了案例和项目驱动的教学方法,直接讲解程序设计方法在实际项目中的应用,将教材中所涉及的概念、语法、理论内容穿插在任课老师所主持和参与的科研项目、任课老师指导的大学生科技创新项目中进行有针对性的分析、讨论和学习中,通过项目开发引导学生自主学习和协作学习,加强培养学生知识转化为能力的过程,激发学生对领域知识的拓展学习。在这种互动式的教学过程中,特别注重了综合应用启发式、辩论式、探究式等教学方法,充分调动学生学习主动性和参与性。另外,我们还实施创新鼓励附加分制度,鼓励学生在业余时间编制一些趣味性、实用性的程序,对有创新的研究型和设计型实验做得比较好的学生,给予适当的创新鼓励分,收到了非常好的效果。
③采用了立体化的教学体系
为加强教学效果,在课堂讲授的同时,我们还开发了丰富的网上教学资源,形成了立体化的教学环境。通过“网络课件”、“课堂教学录像”和“在线习题解答”等模块,学生能够在课后随时复习和加强课堂讲授的内容; 通过“课程学习论坛”和“网上答疑”模块,学生能够更清楚地掌握课程中的普遍疑难,及时得到其他同学的帮助和教师的辅导;在JudgeOnline在线评判系统的“模拟考试”子系统给出了完全与实际考试一样的环境,学生能够进行自测训练,通过模拟考试,学生能够了解自己对于知识点的掌握程度;网络平台还提供了知识的扩展指导,如实际应用小系统的开发指导和优秀电子资源等。
④采用了个性化的教学方式
我们的教学方式很注重个性化,开发了教学网站,公布了教师的电子邮件和QQ等常用联系方式,在保留传统的教师与学生面对面答疑方式的基础上,借助在线教学网站,增加了网络在线答疑方式,使答疑不受时间和空间的限制,充分利用现代化的网络教学环境,搭建了一个学生自学和师生互动的平台,使得教师/学生的一对一教学模式成为可能,使其成为课堂教学和实验教学的有益补充,有力地促进了课程的教学管理。另外,在教学网站的帮助下,学生可以选择符合自己的教学内容进行学习,并进行学习进度及掌握程度的检查。教学网站中的JudgeOnline在线评断系统可以由任课教师自行设计题型、题目和生成测试试卷,由任课老师指定学生人群进行练习和测试。是实现个性化教学的重要工具。
⑤启发学生学习、思考
适当介绍重要计算机科技前沿事件、著名IT科学家故事,让同学们更多地得到先贤的科学和人文精神的熏陶。例如,讲授计算机编程语言发展史时,介绍国内外著名的计算机专家的主要贡献,重点是介绍他们的奋斗历程,给同学们教授为人、治学的基本原则。
(3)作业和考试等教改措施
①作业:包括理论教学习题、上机编程练习和实验报告。
完成每个专题的理论教学后要求学生提交该章节习题作业;每次实验课安排适当的编程练习任务,要求学生在规定的时间里保质保量完成程序的编写、调试、在线提交和成功通过评判。JudgeOnline在线评判系统将自动统计和记录学生每次实验完成的情况,并据此给出学生实验完成情况的统计和排名,激发学生的学习兴趣、激励学生间的学习竞争意识和鼓励学生间相互学习讨论和合作。任课教师根据实验统计情况及时发现问题,并对个别落后同学进行专门辅导。任课教师对学生提交的实验报告进行批改完后将意见和建议向学生反馈,并组织分析报告和总结讨论。
②课程考试:打破单一闭卷的传统考核方式,多样化考核方式相结合,采用闭卷笔试、上机编程考试和平时上机实验相结合。
总评成绩:期末考试成绩(占70%) + 实验成绩(占30%)。
其中,期末闭卷笔试占期末考试成绩的50%,主要以阅读程序写结果和阅读程序填空等题型为主,侧重于考核学生对基本概念的消化掌握情况和灵活运用能力,了保证考试的客观与公正,卷面笔试采用了课程结束后由课题组组织教师“统一命题、统一考试、统一密封试卷、统一流水批改”的方式,实现教考分离。上机编程考试占期末考试成绩的50%,主要通过在JudgeOnline在线评判系统上要求学生独立编写、调试、在线提交评判程序的题型为主,提倡创新和自我发挥。而实验成绩分为实验课课前15分钟测验成绩、平时实验任务完成成绩、期中上机编程测验等三部分。
(4)教学手段
①引导学生思考
以教材和参考资料等为依据,提出问题,指导学生查阅文献,培养学生自学能力。
②充分利用以多媒体为核心的多元化手段进行教学
多媒体教学方式的特点是信息量大,图文直观,便于算法的动态演示,同时借助于编译系统进行程序从编辑、编译、链接、运行到测试与调试的整个过程的演示,可增强学生对程序设计的感性认识,缺点是每页的幻灯片内容有限,不便于学生进行前后内容的对照,内容更新速度过快,学生有时反应不过来,跟不上任课教师的思路,而传统的板书教学法恰好弥补了这一缺陷。因此,以多媒体教学为主、板书为辅,多种教学手段并用,可以实现传统媒体与多媒体的优势互补,最大限度发挥二者的应用价值。 任课教师课堂现场编程演示,目的是避免纸上谈兵,达到“以学生为本、师生互动”的目的,虽然加大了教师授课的随机性和难度,但是却可以充分调动学生的学习积极性和主动性,而且由教师一边带领学生找错,一边讲解如何找错和如何改错,给学生留下的印象更为深刻,也真正体现了“按照学生的学来设计和组织教师的教、启发引导、精讲多练、理论与实践相结合”的教学宗旨。
③在实验室机房开展实践教学
我们安排了15组实验,包括平时性实验、综合性实验和课程设计。让学生在通过自学、主动查找资料、师生互动交流的过程中完成实验内容。
每一组平时性实验要求每个同学都能通过JudgeOnline系统在线成功提交每一个实验题目,并提交实验报告,内容主要是对实验过程进行总结和解答实验报告中列出的思考题,否则无法继续进入下一组实验。在教学学期末,要求每一位同学独立完成综合性实验中的程序设计和开发、成功在线提交和撰写规范的综合性实验报告。在下一教学学期开始,在实验机房统一布置和进行《高级语言程序设计》课程设计任务,要求学生在2周时间内独立进行设计选题、项目需求分析、概要设计、详细设计、编程测试、项目答辩、撰写规范设计性报告等,鼓励学生个性化发展,独立性思考,创新性和创造性思维。