“多核编程”课程教学方法的探讨.doc
文本预览下载声明
“多核编程”课程教学方法的探讨
文章编号:1672-5913(2008)20-0169-03
摘 要:本文阐述了在多核编程课程中采用的多样的教学方法。首先介绍课程的总体规划,再具体论述理论教学与实践教学的教学过程和手段,以及讨论课堂的设计思路,最后总结了教学效果和意义。
关键词:多核编程;教学方法;多线程开发思想
中图分类号:G642 文献标识码:B
2002年,为支持教育部国家示范性软件学院项目,Intel启动大学软件学院计划,促进软件类课程建设,协同培养实用型、复合型的软件人才。2007年我校与Intel开展合作,将目前主流的多核技术融入现行的本科教学计划中,成立课程组,开设了一门专业课程――“多核编程”。目前该课程已经开设两年,现将在本课程中的一些教学方法、心得与各位同仁分享。
1 课程介绍
本课程主要内容包括多核体系结构介绍,多线程开发思想,多线程程序设计与实现,多线程程序编译、分析工具的应用,多线程编程方法学等。由于本课程授课内容比较新颖,与现今的多核技术密切相关,因此对学生要求较高,需要学生有较好的分析和编写串行程序的能力,具备操作系统等相关课程的知识,因此本课程在大三下学期开设。
本课程以一条主线贯彻始终,反复重复、不断强化为指导思想和教学方法。即以培养学生多线程开发思想为教学主线,以在多核平台上编写多线程程序为实践教学手段,使学生掌握多线程开发的思想并在不断实践中反复重复加以巩固强化,提高学生对多线程问题的分析和解决能力,为今后的学习打下基础。
本课程注重实践环节,上机实践占总课时50%。课程的难点在于打破学生已经固有的串行编程思想,建立多线程开发思想。
2 教学方法设计
在整个教学过程中,分为理论教学和实践教学两部分。在课程安排上两部分交替进行,相辅相成,并始终贯穿多线程开发思想这一主线,让学生在实践中不断强化,加深理解直至灵活运用。
理论教学旨在帮助学生理解和掌握多核概念,多线程开发思想以及主要编程语言的应用等内容。实践课程旨在通过实际的操作巩固理论课上所学的知识,采用相关Intel多线程工具对程序进行性能分析、调优等。此外,讨论环节的设置也是本课程教学特色之一。讨论环节的展开加强了学生间的知识交流与自主学习的能力,也将理论教学与实践教学融为一体。
2.1 理论教学
在理论教学中围绕多线程开发思想这一主线展开。在授课中,本课程组始终保持以学生为本的态度,采取从学生现有知识体系出发,逐渐过渡学习新知识的教学方法,良好的保证了学生对授课内容的理解和接受程度。在这一过程中,采取了大量举例、类比、图示等分析方法。
多线程开发思想主要描述了多线程程序的开发流程,如图1所示,大体上分为五个阶段。每个阶段的授课由浅入深,让学生明确在每个阶段对问题的分析方法,解决方案以及可以利用的辅助相关软件等内容。下面将针对某一个阶段的教学方法展开论述。
图1 多线程开发流程简图
在多线程开发流程中任务分解,设计并行算法这一阶段(如图1第3阶段)较为重要,它是多线程化的前提和依据。这一阶段需要学生掌握任务分解的含义,任务分解的主要方法,这些方法的含义、特点、优缺点、适用条件,以及在明确任务分解方法的基础上如何深入设计并行算法等内容。
在讲述了这阶段的理论内容后,为了帮助学生理解这阶段的内容,在授课过程中列举了大量现实生活的例子,例如种树。假设两人共同完成10棵树的栽种工作,工作分为挖坑和栽种两个任务,这时对这一项工作来说有两种协调方法:(1)一人挖坑,一人种树;(2)每人负责五棵树的挖坑和栽种工作。这两种协调方法刚好符合任务分解中任务分解和数据分解两种分解方法。到这里学生已经比较明确这两种分解的含义和不同之处,接着以例子和理论相互对比的方法深入分析这两种分解的特点、优缺点以及适用条件。同时与操作系统中的线程同步,资源竞争等概念相联系,使学生在理解上没有障碍。接着引导学生设计该问题的简明并行算法,让学生明确实际问题如何转化为算法,进而转化为程序,从而使问题得以解决。简明算法如下所示。
//第一种协调方法的算法:(1)一个人挖坑,一个人种树
void caving();
void planting();
int main(){
init(); //系统初始化。
createthread(caving) ;// 生成一个线程(相当于一个人)完成挖坑的工作。
createthread(planting) ;// 生成一个线程(相当于一个人)完成栽种的工作。
wait(); //线程同步。
return 0;
}
显示全部