论文部分内容阅读
摘要:学生创新能力的培养需要通过完善的课程体系来实现,教学内容、教学模式、实践环节和考核方式是课程建设中的4大基本要素。探讨了面向计算机专业本科生的并行程序设计课程的课程规划与建设,并进一步提出了加强该课程教学改革的设想。
关键词:并行程序设计;课程建设;创新能力;教学改革
作者简介:陈蕾(1975-),男,江西宜春人,南京邮电大学通达学院,讲师;陈云芳(1976-),男,江苏镇江人,南京邮电大学计算机学院,副教授。(江苏 南京 210003)
基金项目:本文系南京邮电大学通达学院教改项目(项目编号:JG00409JX07)的部分研究成果。
中图分类号:G642.3 文献标识码:A 文章编号:1007-0079(2011)17-0086-02
随着科学技术的发展与信息时代的到来,人们需要处理的数据量与日俱增,需要解决的问题也越来越复杂。人类对计算能力的需求远远快于摩尔定律所能提供的芯片发展速度,通过提高单个处理器的运算速度和采用传统的串行计算技术已难以胜任。因此,迫切需要运用功能更强大的计算机系统和计算技术来解决问题,并行计算机及并行程序设计技术应运而生,提供了一种实现高速计算的手段和方法。[1]“并行程序设计”是一门理论与实践相结合的综合性学科,一般适合在高年级开课。[2]本课程的先修课程包括高级语言程序设计、数据结构、算法设计与分析、计算机系统结构、操作系统等课程。本课程以拓宽学生的知识面、完善学生的知识结构、培养学生的创新能力为目标,指导学生认知当今流行的高性能计算系统和普适的并行程序开发环境,熟悉主流的并行编程模式,掌握并行程序设计的思想和方法,努力培养学生的学习兴趣和创新思维,为学生今后的学习和工作打下良好的基础。南京邮电大学面向计算机专业本科生开设了这门“并行程序设计”课程,该课程属于计算技术实践类选修课程,自2007年春季开课以来,每学年开课一次。“并行程序设计”是一门年轻的学科,尚处在发展和探索中。[3]但可以预见的是,在不久的将来,随着多核技术的发展与高性能计算机群的普及,越来越多的高校将开设该课程。因此,本文以“并行程序设计”课程为主要对象,结合笔者多年的教学实践经验,着眼于学生创新能力的培养,就“并行程序设计”在本科教学中的教学内容、教学模式、实践环节和考核方式等方面的规划与建设进行了探讨,希望对从事并行算法教学的同行能有所裨益。
一、“并行程序设计”课程教学内容
“并行程序设计”是计算机专业高年级本科生的一门专业限选课,培养目标是普及并行计算技术。该课程以并行计算为主题,强调理论与实践相结合,理论方面主要讨论并行计算机的系统结构模型(包括当代对称多处理机、大规模并行处理机、机群系统)和并行计算的性能评测方法以及并行算法的设计基础(包括一般设计策略、基本设计技术和一般设计过程),实践方面主要介绍典型并行计算机系统——PC机群的搭建和消息传递并行程序设计(Message Passing Interface,MPI),[4]同时鼓励学生拓展多核编程,[5]体验多核软件工具,积极参加Intel 多核程序设计大赛。本课程强调融并行机结构、并行算法和并行编程为一体,着重讨论并行算法的设计方法和分布式并行数值计算算法,力图反映本学科的最新成就和发展趋势,把最新的多核和高性能计算中的研究问题和研究进展通过快捷、有效的手段传授给学生,激发他们的学习和研究兴趣。本课程要求学生能够初步掌握并行处理技术,学会使用并行处理技术分析和解决计算机及其应用中一些比较简单的问题。根据并行程序设计技术的本身特点以及我校课程体系的设置情况,本课程安排总学时为32学时,其中讲课26学时,实验4学时,讨论2学时,主要内容和学时分配如表1所示。本课程涵盖了从单机、多核、SMP、机群的各种尺度的并行技术。在课程开设初期,采用以单核PC机构建的简单机群或者单PC机上的虚拟机群作为并行程序开发平台。随着多核计算机的逐渐普及,本课程拟逐步构建多核PC机和SMP服务器为主的并行机群,在程序设计时重点介绍MPI和OpenMP编程环境,使学生能够方便地进行并行编程实践活动。
二、“并行程序设计”课程教学模式
“并行程序设计”是一门内容涉及面较广的课程,理论和实践知识点较多。因此传统的教学手段显然无法适应现在的教学要求。从面向21世纪计算机科学与技术专业人才培养需求出发,以培养创新思维和提高实践能力为目标,本课程采用了以下多种教学方法,以充分发挥学生的学习潜能。[6]
(1)启发式教学。创新思维是培养学生创造力的基础,是学生进行创新活动的前提。在教学中,有意识地培养学生的创新思维能力,可以提高学生理论联系实际、发现问题以及灵活独特地解决问题的能力。例如:以开放网络环境中流行的云计算模式为例,启发学生剖析云计算平台中典型的软构件实现方式——Web Services的生成、发布、查找和组合机制,使得学生更好地理解云计算平台中的并行排序算法、并行查找算法和并行压缩算法在其中的成功应用,把教学内容设置到复杂的、有意义的实际问题环境中,让学生通过解决实际问题,来理解和掌握隐含于问题背后的知识,提高解决问题的能力,从而提高创新思维能力。
(2)多媒体及网络互动教学。对于一些复杂的、难以理解的教学内容,例如求解单源最短路径问题的Dijkstra算法的并行实现,笔者就设计了图文并茂的多媒体动画来辅助学生对该算法的理解,优秀的多媒体教学课件对于课程教学可以起到事半功倍的良好效果;同时,笔者还积极探索并综合运用多种先进的教学手段,建立课程教学网站,在互联网上设立教学教辅园地,提供教学素材的自由下载和课程的在线测试,设计一些实际项目的动态演示,在网上与学生及时展开交流讨论,随时解答学生的问题,接收学生的课程设计作业。
(3)理论联系实际教学。并行程序设计的目的是为了解决实际问题,因此,针对高年级本科教学的特点,本课程采用精讲、泛讲和实践相结合的方式,鼓励学生自学,并为此设计了相应的课内、课外实验来加深学生对所学理论的理解。同时,教师不断更新教学内容,及时将先进的知识引入本课程体系,形成“开放”的教学模式;在此基础上,引导学生充分利用网络资源,“研究”并行程序设计的理论和实践方法,采用MPI 和OpenMP 解决实践问题。
三、“并行程序设计”课程实践环节
“并行程序设计”课程实践环节的设置是为了帮助学生更好地学习本课程,一方面加深学生对并行算法的基本设计策略和基本设计方法的理解;另一方面,使学生熟悉并行计算机的体系结构和编程模型以及部署在其上的并行编程环境,学习并行程序的编写、编译、运行步骤,了解系统结构对编程模式和环境工具的影响。目前由于PC机群的普及,很多学校都可搭建PC 机群,这为“并行程序设计”课程上机实践提供了切实可行的实验平台。鉴于当前MPI 的广泛应用,建议实验中以MPI 的使用为主,要求每个学生均能独立地用MPI 编程实现一些典型的并行数值或非数值并行算法,从而了解并行程序的基本编写、编译、调试和运行的全过程。并行程序设计课程的实验内容、学时分配及基本要求如表2所示,在4学时的课内实验和4学时的课外实验中,每个同学要完成相应的实验题,通过独立思考、与同学讨论、老师辅导答疑,选择相应的方法,进行题目的分析、编程及测试工作,并按要求写出实验报告。
四、“并行程序设计”课程考核方式
考试作为教学活动的重要环节,其目的是考察教师传授知识的效果和学生对知识的掌握程度,作为学习的杠杆和教与学的“指挥棒”,可在一定程度上激发师生的积极性,提高教学效果。考试的主要功能包括评价功能、督促功能和反馈功能。但是考试能否真正起到对学生学习能力的客观评价和对教师教学质量的促进作用,关键在于考试模式是否与培养目标相一致,是否符合创新能力培养的要求。传统的考核方式比较单一,所有的学生应用同一种考核模式,不能客观地衡量学生的学习成果。因此,“并行程序设计”课程设计了一种新颖的考核方式。该考核方式主要由平时考核和期末理论考核两部分组成。平时考核包括课外作业、课堂Presentation交流和课程论文3个环节,这样可以将开放式学习和研究紧密地结合起来。课程论文研究是从文献检索、阅读到选择研究题目、课题论证,从实验设计到结果分析,从数据和资料收集到整理成文的全过程,学生通过这种开放式考核方式锻炼了跟踪本学科领域最新进展和提高自主学习和进行独立研究的能力。期末理论考核时,在考试模式上设计了3种考试方式由学生自主选择:逻辑思维能力强的学生可以选择算法设计与分析类试题;编程能力强的学生可以选择算法实现类试题,其他学生可以选择基本要求类试题。成绩采用五分制记分,设置优秀、良好、中等、及格、不及格5个等级。
五、结论
“并行程序设计”是随着多核与高性能计算的出现而发展起来的一门新兴课程,具有理论和实践并重的特点,内容涉及并行计算机硬件体系结构、并行计算机网络互联、并行编程模式、并行算法设计和并行程序编写等多个知识领域。在“并行程序设计”课程中,如何较好地利用学生已有的串行算法设计理论和实践经验,使其更好地掌握一些基本的并行算法设计思想,进而能够创造性地解决一些实际应用问题,是在教学中必须关注的重点。由于课时安排较少,考虑到高年级学生已经具备一定的自学能力,本课程尤其强调课外上机实践环节,据此强化学生对并行程序设计基本技能的训练,引导学生自主分析、设计、实现和评估并行计算中的经典并行算法,并利用性能分析工具进行软件性能分析和调优,以期增强学生利用并行计算自主解决实际问题的能力。
参考文献:
[1]陈国良,等.并行计算:结构,算法,编程(修订版)[M].北京:高等教育出版社,2003.
[2]Barry Wilkinson.并行程序设计(第二版)[M].陆鑫达,译.北京:机械工业出版社,2005.
[3]张林波,等.并行计算导论[M].北京:清华大学出版社,2006.
[4]张武生,等.MPI并行程序设计实例教程[M].北京:清华大学出版社,2009.
[5]李晓明.多核程序设计[M].北京:清华大学出版社,2007.
[6]郭卫斌,等.并行与分布计算课程建设探索[J].计算机教育,2009,(2):82-84.
(责任编辑:沈清)
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文
关键词:并行程序设计;课程建设;创新能力;教学改革
作者简介:陈蕾(1975-),男,江西宜春人,南京邮电大学通达学院,讲师;陈云芳(1976-),男,江苏镇江人,南京邮电大学计算机学院,副教授。(江苏 南京 210003)
基金项目:本文系南京邮电大学通达学院教改项目(项目编号:JG00409JX07)的部分研究成果。
中图分类号:G642.3 文献标识码:A 文章编号:1007-0079(2011)17-0086-02
随着科学技术的发展与信息时代的到来,人们需要处理的数据量与日俱增,需要解决的问题也越来越复杂。人类对计算能力的需求远远快于摩尔定律所能提供的芯片发展速度,通过提高单个处理器的运算速度和采用传统的串行计算技术已难以胜任。因此,迫切需要运用功能更强大的计算机系统和计算技术来解决问题,并行计算机及并行程序设计技术应运而生,提供了一种实现高速计算的手段和方法。[1]“并行程序设计”是一门理论与实践相结合的综合性学科,一般适合在高年级开课。[2]本课程的先修课程包括高级语言程序设计、数据结构、算法设计与分析、计算机系统结构、操作系统等课程。本课程以拓宽学生的知识面、完善学生的知识结构、培养学生的创新能力为目标,指导学生认知当今流行的高性能计算系统和普适的并行程序开发环境,熟悉主流的并行编程模式,掌握并行程序设计的思想和方法,努力培养学生的学习兴趣和创新思维,为学生今后的学习和工作打下良好的基础。南京邮电大学面向计算机专业本科生开设了这门“并行程序设计”课程,该课程属于计算技术实践类选修课程,自2007年春季开课以来,每学年开课一次。“并行程序设计”是一门年轻的学科,尚处在发展和探索中。[3]但可以预见的是,在不久的将来,随着多核技术的发展与高性能计算机群的普及,越来越多的高校将开设该课程。因此,本文以“并行程序设计”课程为主要对象,结合笔者多年的教学实践经验,着眼于学生创新能力的培养,就“并行程序设计”在本科教学中的教学内容、教学模式、实践环节和考核方式等方面的规划与建设进行了探讨,希望对从事并行算法教学的同行能有所裨益。
一、“并行程序设计”课程教学内容
“并行程序设计”是计算机专业高年级本科生的一门专业限选课,培养目标是普及并行计算技术。该课程以并行计算为主题,强调理论与实践相结合,理论方面主要讨论并行计算机的系统结构模型(包括当代对称多处理机、大规模并行处理机、机群系统)和并行计算的性能评测方法以及并行算法的设计基础(包括一般设计策略、基本设计技术和一般设计过程),实践方面主要介绍典型并行计算机系统——PC机群的搭建和消息传递并行程序设计(Message Passing Interface,MPI),[4]同时鼓励学生拓展多核编程,[5]体验多核软件工具,积极参加Intel 多核程序设计大赛。本课程强调融并行机结构、并行算法和并行编程为一体,着重讨论并行算法的设计方法和分布式并行数值计算算法,力图反映本学科的最新成就和发展趋势,把最新的多核和高性能计算中的研究问题和研究进展通过快捷、有效的手段传授给学生,激发他们的学习和研究兴趣。本课程要求学生能够初步掌握并行处理技术,学会使用并行处理技术分析和解决计算机及其应用中一些比较简单的问题。根据并行程序设计技术的本身特点以及我校课程体系的设置情况,本课程安排总学时为32学时,其中讲课26学时,实验4学时,讨论2学时,主要内容和学时分配如表1所示。本课程涵盖了从单机、多核、SMP、机群的各种尺度的并行技术。在课程开设初期,采用以单核PC机构建的简单机群或者单PC机上的虚拟机群作为并行程序开发平台。随着多核计算机的逐渐普及,本课程拟逐步构建多核PC机和SMP服务器为主的并行机群,在程序设计时重点介绍MPI和OpenMP编程环境,使学生能够方便地进行并行编程实践活动。
二、“并行程序设计”课程教学模式
“并行程序设计”是一门内容涉及面较广的课程,理论和实践知识点较多。因此传统的教学手段显然无法适应现在的教学要求。从面向21世纪计算机科学与技术专业人才培养需求出发,以培养创新思维和提高实践能力为目标,本课程采用了以下多种教学方法,以充分发挥学生的学习潜能。[6]
(1)启发式教学。创新思维是培养学生创造力的基础,是学生进行创新活动的前提。在教学中,有意识地培养学生的创新思维能力,可以提高学生理论联系实际、发现问题以及灵活独特地解决问题的能力。例如:以开放网络环境中流行的云计算模式为例,启发学生剖析云计算平台中典型的软构件实现方式——Web Services的生成、发布、查找和组合机制,使得学生更好地理解云计算平台中的并行排序算法、并行查找算法和并行压缩算法在其中的成功应用,把教学内容设置到复杂的、有意义的实际问题环境中,让学生通过解决实际问题,来理解和掌握隐含于问题背后的知识,提高解决问题的能力,从而提高创新思维能力。
(2)多媒体及网络互动教学。对于一些复杂的、难以理解的教学内容,例如求解单源最短路径问题的Dijkstra算法的并行实现,笔者就设计了图文并茂的多媒体动画来辅助学生对该算法的理解,优秀的多媒体教学课件对于课程教学可以起到事半功倍的良好效果;同时,笔者还积极探索并综合运用多种先进的教学手段,建立课程教学网站,在互联网上设立教学教辅园地,提供教学素材的自由下载和课程的在线测试,设计一些实际项目的动态演示,在网上与学生及时展开交流讨论,随时解答学生的问题,接收学生的课程设计作业。
(3)理论联系实际教学。并行程序设计的目的是为了解决实际问题,因此,针对高年级本科教学的特点,本课程采用精讲、泛讲和实践相结合的方式,鼓励学生自学,并为此设计了相应的课内、课外实验来加深学生对所学理论的理解。同时,教师不断更新教学内容,及时将先进的知识引入本课程体系,形成“开放”的教学模式;在此基础上,引导学生充分利用网络资源,“研究”并行程序设计的理论和实践方法,采用MPI 和OpenMP 解决实践问题。
三、“并行程序设计”课程实践环节
“并行程序设计”课程实践环节的设置是为了帮助学生更好地学习本课程,一方面加深学生对并行算法的基本设计策略和基本设计方法的理解;另一方面,使学生熟悉并行计算机的体系结构和编程模型以及部署在其上的并行编程环境,学习并行程序的编写、编译、运行步骤,了解系统结构对编程模式和环境工具的影响。目前由于PC机群的普及,很多学校都可搭建PC 机群,这为“并行程序设计”课程上机实践提供了切实可行的实验平台。鉴于当前MPI 的广泛应用,建议实验中以MPI 的使用为主,要求每个学生均能独立地用MPI 编程实现一些典型的并行数值或非数值并行算法,从而了解并行程序的基本编写、编译、调试和运行的全过程。并行程序设计课程的实验内容、学时分配及基本要求如表2所示,在4学时的课内实验和4学时的课外实验中,每个同学要完成相应的实验题,通过独立思考、与同学讨论、老师辅导答疑,选择相应的方法,进行题目的分析、编程及测试工作,并按要求写出实验报告。
四、“并行程序设计”课程考核方式
考试作为教学活动的重要环节,其目的是考察教师传授知识的效果和学生对知识的掌握程度,作为学习的杠杆和教与学的“指挥棒”,可在一定程度上激发师生的积极性,提高教学效果。考试的主要功能包括评价功能、督促功能和反馈功能。但是考试能否真正起到对学生学习能力的客观评价和对教师教学质量的促进作用,关键在于考试模式是否与培养目标相一致,是否符合创新能力培养的要求。传统的考核方式比较单一,所有的学生应用同一种考核模式,不能客观地衡量学生的学习成果。因此,“并行程序设计”课程设计了一种新颖的考核方式。该考核方式主要由平时考核和期末理论考核两部分组成。平时考核包括课外作业、课堂Presentation交流和课程论文3个环节,这样可以将开放式学习和研究紧密地结合起来。课程论文研究是从文献检索、阅读到选择研究题目、课题论证,从实验设计到结果分析,从数据和资料收集到整理成文的全过程,学生通过这种开放式考核方式锻炼了跟踪本学科领域最新进展和提高自主学习和进行独立研究的能力。期末理论考核时,在考试模式上设计了3种考试方式由学生自主选择:逻辑思维能力强的学生可以选择算法设计与分析类试题;编程能力强的学生可以选择算法实现类试题,其他学生可以选择基本要求类试题。成绩采用五分制记分,设置优秀、良好、中等、及格、不及格5个等级。
五、结论
“并行程序设计”是随着多核与高性能计算的出现而发展起来的一门新兴课程,具有理论和实践并重的特点,内容涉及并行计算机硬件体系结构、并行计算机网络互联、并行编程模式、并行算法设计和并行程序编写等多个知识领域。在“并行程序设计”课程中,如何较好地利用学生已有的串行算法设计理论和实践经验,使其更好地掌握一些基本的并行算法设计思想,进而能够创造性地解决一些实际应用问题,是在教学中必须关注的重点。由于课时安排较少,考虑到高年级学生已经具备一定的自学能力,本课程尤其强调课外上机实践环节,据此强化学生对并行程序设计基本技能的训练,引导学生自主分析、设计、实现和评估并行计算中的经典并行算法,并利用性能分析工具进行软件性能分析和调优,以期增强学生利用并行计算自主解决实际问题的能力。
参考文献:
[1]陈国良,等.并行计算:结构,算法,编程(修订版)[M].北京:高等教育出版社,2003.
[2]Barry Wilkinson.并行程序设计(第二版)[M].陆鑫达,译.北京:机械工业出版社,2005.
[3]张林波,等.并行计算导论[M].北京:清华大学出版社,2006.
[4]张武生,等.MPI并行程序设计实例教程[M].北京:清华大学出版社,2009.
[5]李晓明.多核程序设计[M].北京:清华大学出版社,2007.
[6]郭卫斌,等.并行与分布计算课程建设探索[J].计算机教育,2009,(2):82-84.
(责任编辑:沈清)
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文