<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>中文 &#187; Selwyn H. You 游骅 (Intel)</title>
	<atom:link href="http://software.intel.com/zh-cn/blogs/author/selwyn-h-you/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/zh-cn/blogs</link>
	<description></description>
	<lastBuildDate>Sat, 26 May 2012 06:34:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>&#039;09多核教育师资培训与研讨（武汉）班侧记</title>
		<link>http://software.intel.com/zh-cn/blogs/2009/07/23/400002062/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2009/07/23/400002062/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 13:31:26 +0000</pubDate>
		<dc:creator>Selwyn H. You 游骅 (Intel)</dc:creator>
				<category><![CDATA[软件技术学习及认证]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2009/07/23/400002062/</guid>
		<description><![CDATA[七月八、九和十日，在依山傍湖，风景秀丽的武汉大学，Intel大学合作部举办了09年第一次多核师资培训与研讨班。这次参加的老师主要是来自已经加入我们大学合作项目的，或者获得教育部-Intel精品课程支持的学校。培训的内容是创新软件教育（前身是Intel软件学院的课程开发组）新开发的并行编程课程模块；主要涵盖下面四个方面供老师们更新课程使用—— 编程模型（实现手段），包括OpenMP 3.0和Threading Building Blocks （TBB）； 调试工具，Intel Parallel Studio； 并行程序设计模式； 并行游戏程序开发方法学及案例。 由于反映了并行编程技术发展的前沿，老师们对这些内容的认可程度是出乎意料地好——这一点虽没有通过正式问卷反馈，但在接下来的研讨中得到体现。 精品课程教学经验分享和开放式讨论是此次活动的一大亮点。由于来参加的老师都是一线教学的骨干，经过培训和经验分享后的讨论如流火七月的“火炉”天气一般热烈。而讨论的重点主要集中在两个热点—— 在探讨如果有效开展课程建设问题时，大家普便遇到如何引导学生认识学习并行编程能力重要性的问题。我们从业界的角度，一般会讲产品竞争力的故事；告诉程序员（通过并行化实现）程序优化和性能提升是对于每个软件产品竞争力至关重要的工作内容，而并非只是少数（如编译器等系统软件）开发人员的工作，这是因为如果我们忽略了这个工作，我们的竞争对手会来给我们补上这一课的。这个故事虽然实在，但对于大多数还在象牙塔里面，缺乏实际工作经验的学子却稍嫌遥远。所以要让包括学生们在内的广大开发者人群了解到程序优化的重要性，恐怕还是要回答一个几年前当多核平台出现就已经浮出的问题，即寻找“杀手级应用（Killer Applications）”。关于这个话题的讨论已经长篇累牍，”结果“也是不一而足，但却至今难有定论。其实这也许就是原本应有的结论——发挥多核乃至以后众核（Many Core）平台的应用应该是多种多样的，针对不同领域各有不同的？！换言之，不同的领域应该有各自独特的杀手级应用。而这恰可以引出此次研讨的另一个热点，或者更可以称为共识，创建案例库。 有实际教学经验的老师都知道，要想把抽象的理论、规则和方法让学生较好地掌握，实例是不可或缺的重要手段。但是由于应用领域的局限，不同学科背景的实例难以共享供使用。比如，传统算法并行化（这是创新软件教育正在做的）案例对于计算机学科的学生不陌生，但对于其它专业的就不一定那么“亲切”了。相反地，每个领域的老师创建的案例则会较为容易的为本领域相同或相关领域的师生所接受。所以，我们鼓励老师们开发出适合本领域的教学案例，然后通过我们的学术交流论坛分享，形成按照应用门类划分的案例库，这样就可以让更多的师生受益了。 这次培训研讨只是今年学术活动的第一场，期待着下一场培训研讨班与老师们 交流。]]></description>
			<content:encoded><![CDATA[<p>七月八、九和十日，在依山傍湖，风景秀丽的武汉大学，Intel大学合作部举办了09年第一次多核师资培训与研讨班。这次参加的老师主要是来自已经加入我们大学合作项目的，或者获得教育部-Intel精品课程支持的学校。培训的内容是创新软件教育（前身是Intel软件学院的课程开发组）新开发的并行编程课程模块；主要涵盖下面四个方面供老师们更新课程使用——</p>
<ul>
<li>编程模型（实现手段），包括OpenMP 3.0和Threading Building Blocks （TBB）；</li>
<li>调试工具，Intel Parallel Studio；</li>
<li>并行程序设计模式；</li>
<li>并行游戏程序开发方法学及案例。</li>
</ul>
<p>由于反映了并行编程技术发展的前沿，老师们对这些内容的认可程度是出乎意料地好——这一点虽没有通过正式问卷反馈，但在接下来的研讨中得到体现。</p>
<p>精品课程教学经验分享和开放式讨论是此次活动的一大亮点。由于来参加的老师都是一线教学的骨干，经过培训和经验分享后的讨论如流火七月的“火炉”天气一般热烈。而讨论的重点主要集中在两个热点——</p>
<p>在探讨如果有效开展课程建设问题时，大家普便遇到如何引导学生认识学习并行编程能力重要性的问题。我们从业界的角度，一般会讲产品竞争力的故事；告诉程序员（通过并行化实现）程序优化和性能提升是对于每个软件产品竞争力至关重要的工作内容，而并非只是少数（如编译器等系统软件）开发人员的工作，这是因为如果我们忽略了这个工作，我们的竞争对手会来给我们补上这一课的。这个故事虽然实在，但对于大多数还在象牙塔里面，缺乏实际工作经验的学子却稍嫌遥远。所以要让包括学生们在内的广大开发者人群了解到程序优化的重要性，恐怕还是要回答一个几年前当多核平台出现就已经浮出的问题，即寻找“杀手级应用（Killer Applications）”。关于这个话题的讨论已经长篇累牍，”结果“也是不一而足，但却至今难有定论。其实这也许就是原本应有的结论——发挥多核乃至以后众核（Many Core）平台的应用应该是多种多样的，针对不同领域各有不同的？！换言之，不同的领域应该有各自独特的杀手级应用。而这恰可以引出此次研讨的另一个热点，或者更可以称为共识，创建案例库。</p>
<p>有实际教学经验的老师都知道，要想把抽象的理论、规则和方法让学生较好地掌握，实例是不可或缺的重要手段。但是由于应用领域的局限，不同学科背景的实例难以共享供使用。比如，传统算法并行化（这是创新软件教育正在做的）案例对于计算机学科的学生不陌生，但对于其它专业的就不一定那么“亲切”了。相反地，每个领域的老师创建的案例则会较为容易的为本领域相同或相关领域的师生所接受。所以，我们鼓励老师们开发出适合本领域的教学案例，然后通过我们的学术交流论坛分享，形成按照应用门类划分的案例库，这样就可以让更多的师生受益了。</p>
<p>这次培训研讨只是今年学术活动的第一场，期待着下一场培训研讨班与老师们 交流。</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2009/07/23/400002062/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>并行化程序设计的四步走</title>
		<link>http://software.intel.com/zh-cn/blogs/2009/05/21/400001819/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2009/05/21/400001819/#comments</comments>
		<pubDate>Thu, 21 May 2009 03:24:26 +0000</pubDate>
		<dc:creator>Selwyn H. You 游骅 (Intel)</dc:creator>
				<category><![CDATA[并行计算]]></category>
		<category><![CDATA[软件技术学习及认证]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2009/05/21/400001819/</guid>
		<description><![CDATA[多核计算平台的普及化使得并行（Parallel）或者并发（Concurrent）程序设计（这里不妨称它们为并行化程序设计）成为一种编程技术主流。其实并行计算的软件技术早已存在了几十年，然而其原来主要服务于高性能计算一类的应用，所以并行化编程一直也都为阳春白雪的光环笼罩。现在谈到多核编程，讨论较多的是各种软件或者并行编程模型的使用；对于初学者而言却仍可能难以循其径而入。 其实，并行化的程序设计是有章可循的。按照开发流程的顺序，可以把并行化程序设计分为以下四个阶段： 1. 可行算法（解决方案）的描述与分析 2. 工作分解（Decomposition）——依赖性和同步与通信开销分析 3. 选择编程（实现）模型 4. 性能检查及优化 在设计的初始阶段，开发者应当针对要解决的问题先找到一个可行的解决方案或者算法。比如，排序问题的解决方案有气泡排序，快速排序，二叉树排序等已知可行的方法可以作为并行化的基础算法。而在进行具体的并行化设计之前，有一个很重要的分析（或者评估）要做，那就是并行化的必要性分析；即，应该估计一下目标问题的计算量。如果需要解决的问题计算量并不是很大，比如只需要对30个整数进行排序，即使采用传统串行程序也不会占用太多时间，那么就可能没有为之设计并行化程序的必要，因为并行化也是要付出其它计算的代价的。另外，基础算法的选择也很有讲究。有些算法本身就不具备太多的并行性，比如图论算法中最小生成树/Minimum Spanning Tree（MST）的Kruskal算法；而有些算法则具有很好的可扩展性（Scalability），比如MST的Boruvka算法 （关于MST算法并行化的例子可参见ISN学术社区课件）。为确定算法的并行性，一般需要借助一些理论和工具的帮助。Amdal's law是大多数设计者所采用的估计并行化加速比上限的定理；而Gustafson's law则是分析并行程序可扩展性的有力理论指导。而为了能够使用这些定理给出指导，还需要一些软件工具（Profiling Tools）的辅助，从而确定理论所需的一些参数（如串行程序的并行量p）。提供这一种功能的常用的工具有Intel性能分析器Vtune，Windows里面的PerfMon等。对于理论和软件工具的使用可以参照学术社区的课件。基础算法的确定需要开发者结合下一步进行综合考虑，反复尝试几次。 当候选的基础算法确定后，开发人员就需要进行一个并行化编程中非常重要的步骤——工作分解（Decomposition）。分解是对基础算法分析，将之分解为若干相对独立的部分（或者操作）；进而可以通过后面一步（选择适当编程模型）把这些相对独立的部分分配到多个执行（处理）单元执行。工作分解的手段一般可以分为任务分解（Task Decomposition）和数据分解（Data Decomposition）。任务分解就是把一个算法按照操作的相关性（依赖性）分解为若干可以同时执行的子任务，比如下图中的函数h，q和r或者s是可以并行的。 数据分解则是将一个比较大的待处理的数据集，如数组分割为若干子集，从而可以的不同部分的成员实施同时的运算或操作。此外还有一种常用的工作分解方法是流水线（Pipeline）方式，其基本原理是仿照生产流水线的操作，把一个大任务分解为若干紧密相连的阶段，从而提高每个阶段工作单元的运行效率。学术社区的在线课件有对工作分解的具体讲解，这里就不再赘述。对于分解方法的应用，需要开发者进行大量的分析实践，积累经验，提高分解的正确性和效率；另一方面，也还是有一些通用的经验可以借鉴。比如，算法中有循环体的，一般意味着可能可以采用数据分解，将不同的迭代（如果它们之间没什么依赖性的话）划分为不同的执行子集，分配给不同的线程或者进程执行；类似的，过程和函数是程序员把通用操作打包，从而便于阅读和维护有效手段，这也就暗示了函数体也是很好的数据分解的候选人；而在媒体流处理这类应用中，流水线是常用的分解手段。有心的读者可能注意到我们前面介绍分解方法是多次提到相关性或者依赖性（Dependence）。这是在进行工作分解时要面对的一个重要指标，因为分解部分之间的依赖性直接影响它们的可并行性。比如下图中，我们使用依赖性图（Dependence Graph）进行分析，就会发现各个循环迭代中对于变量a[i]具有读写依赖，那么这个循环体是不能被通过数据分解而并行化的，从而这种分解方案是不可行的（当然也有一些依赖性通过优化手段可以去除，由于篇幅的缘故，关于依赖性分析请参照学术社区的课件）。 应当指出的是，大多数的应用（算法）是不可能分解为完全独立的部分，这些部分多少都需要一定的依赖和协调来完成工作。分解所要达到的目的应该是把基础算法分解为相互依赖性最小的若干部分，因为各个部分的协调和同步（Synchronizations）与通信（Communications）是需要额外开销的，这是并行化所要付出的开销。开发者进行并行化编程应当是使并行化的收益大于开销（要使用商人的哲学）。工作分解的依赖性分析可以帮助我们确定资源（如变量，数据结构）的性质，比如是共享还是私有等，从而确定同步和通信的对象，以及适用手段（如采用信号量还是互斥等）。 当完成了基础算法的工作分解后，一个并行化的算法（解决方案）也就具备雏形了。这时候，设计者要选用一种（对于有经验者也可以采用多种混合）编程模型来实现并行化的算法。由于关于这方面的介绍已经汗牛充栋，所以这里不过多重复，只是稍微分享自己的经验。一般对于初学者和希望快速并行化的开发者，可以适用类似OpenMP一类隐式线程化实现（Implicit Threading）；对于有有经验者或者硬核派，可以适用Windows的Win32 API，P-threads API或者适用于分布式平台的MPI，这类显性（Explicit Threading）进行相对底层的（如线程创建、销毁已经同步）控制；如果想使用既提供高层（隐性）并行化，又提供低层（显性）并行化手段的编程模型，Java和Intel的Threading Building Blocks（TBB）会是很好的选择。 经过前面三步，开发者应该已经有了一个能够工作的并行化程序。此时，应该问自己的问题是，并行化的效果足够吗？能够满足需求吗？如果答案是否定的，就需要问自己还有足够的资源（人力，时间）来作进一步的优化吗？如果答案是肯定的，那么可以重复前面三个步骤，更进一步地发掘并行性，降低同步与通信的开销，从而获得性能的提升。]]></description>
			<content:encoded><![CDATA[<p>多核计算平台的普及化使得并行（Parallel）或者并发（Concurrent）程序设计（这里不妨称它们为并行化程序设计）成为一种编程技术主流。其实并行计算的软件技术早已存在了几十年，然而其原来主要服务于高性能计算一类的应用，所以并行化编程一直也都为阳春白雪的光环笼罩。现在谈到多核编程，讨论较多的是各种软件或者并行编程模型的使用；对于初学者而言却仍可能难以循其径而入。</p>
<p>其实，并行化的程序设计是有章可循的。按照开发流程的顺序，可以把并行化程序设计分为以下四个阶段：<br />
1. 可行算法（解决方案）的描述与分析<br />
2. 工作分解（Decomposition）——依赖性和同步与通信开销分析<br />
3. 选择编程（实现）模型<br />
4. 性能检查及优化</p>
<p>在设计的初始阶段，开发者应当针对要解决的问题先找到一个可行的解决方案或者算法。比如，排序问题的解决方案有气泡排序，快速排序，二叉树排序等已知可行的方法可以作为并行化的基础算法。而在进行具体的并行化设计之前，有一个很重要的分析（或者评估）要做，那就是并行化的必要性分析；即，应该估计一下目标问题的计算量。如果需要解决的问题计算量并不是很大，比如只需要对30个整数进行排序，即使采用传统串行程序也不会占用太多时间，那么就可能没有为之设计并行化程序的必要，因为并行化也是要付出其它计算的代价的。另外，基础算法的选择也很有讲究。有些算法本身就不具备太多的并行性，比如图论算法中最小生成树/Minimum Spanning Tree（MST）的Kruskal算法；而有些算法则具有很好的可扩展性（Scalability），比如MST的Boruvka算法 （关于MST算法并行化的例子可参见ISN学术社区课件）。为确定算法的并行性，一般需要借助一些理论和工具的帮助。Amdal's law是大多数设计者所采用的估计并行化加速比上限的定理；而Gustafson's law则是分析并行程序可扩展性的有力理论指导。而为了能够使用这些定理给出指导，还需要一些软件工具（Profiling Tools）的辅助，从而确定理论所需的一些参数（如串行程序的并行量p）。提供这一种功能的常用的工具有Intel性能分析器Vtune，Windows里面的PerfMon等。对于理论和软件工具的使用可以参照学术社区的课件。基础算法的确定需要开发者结合下一步进行综合考虑，反复尝试几次。</p>
<p>当候选的基础算法确定后，开发人员就需要进行一个并行化编程中非常重要的步骤——工作分解（Decomposition）。分解是对基础算法分析，将之分解为若干相对独立的部分（或者操作）；进而可以通过后面一步（选择适当编程模型）把这些相对独立的部分分配到多个执行（处理）单元执行。工作分解的手段一般可以分为任务分解（Task Decomposition）和数据分解（Data Decomposition）。任务分解就是把一个算法按照操作的相关性（依赖性）分解为若干可以同时执行的子任务，比如下图中的函数h，q和r或者s是可以并行的。<a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2009/05/task-decomp.jpg"><img src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2009/05/task-decomp-300x226.jpg" alt="" width="300" height="226" class="aligncenter size-medium wp-image-400001841" /></a><br />
数据分解则是将一个比较大的待处理的数据集，如数组分割为若干子集，从而可以的不同部分的成员实施同时的运算或操作。此外还有一种常用的工作分解方法是流水线（Pipeline）方式，其基本原理是仿照生产流水线的操作，把一个大任务分解为若干紧密相连的阶段，从而提高每个阶段工作单元的运行效率。学术社区的在线课件有对工作分解的具体讲解，这里就不再赘述。对于分解方法的应用，需要开发者进行大量的分析实践，积累经验，提高分解的正确性和效率；另一方面，也还是有一些通用的经验可以借鉴。比如，算法中有循环体的，一般意味着可能可以采用数据分解，将不同的迭代（如果它们之间没什么依赖性的话）划分为不同的执行子集，分配给不同的线程或者进程执行；类似的，过程和函数是程序员把通用操作打包，从而便于阅读和维护有效手段，这也就暗示了函数体也是很好的数据分解的候选人；而在媒体流处理这类应用中，流水线是常用的分解手段。有心的读者可能注意到我们前面介绍分解方法是多次提到相关性或者依赖性（Dependence）。这是在进行工作分解时要面对的一个重要指标，因为分解部分之间的依赖性直接影响它们的可并行性。比如下图中，我们使用依赖性图（Dependence Graph）进行分析，就会发现各个循环迭代中对于变量a[i]具有读写依赖，那么这个循环体是不能被通过数据分解而并行化的，从而这种分解方案是不可行的（当然也有一些依赖性通过优化手段可以去除，由于篇幅的缘故，关于依赖性分析请参照学术社区的课件）。</p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2009/05/data-decomp.jpg"><img src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2009/05/data-decomp-300x192.jpg" alt="" width="300" height="192" class="aligncenter size-medium wp-image-400001842" /></a></p>
<p>应当指出的是，大多数的应用（算法）是不可能分解为完全独立的部分，这些部分多少都需要一定的依赖和协调来完成工作。分解所要达到的目的应该是把基础算法分解为相互依赖性最小的若干部分，因为各个部分的协调和同步（Synchronizations）与通信（Communications）是需要额外开销的，这是并行化所要付出的开销。开发者进行并行化编程应当是使并行化的收益大于开销（要使用商人的哲学）。工作分解的依赖性分析可以帮助我们确定资源（如变量，数据结构）的性质，比如是共享还是私有等，从而确定同步和通信的对象，以及适用手段（如采用信号量还是互斥等）。</p>
<p>当完成了基础算法的工作分解后，一个并行化的算法（解决方案）也就具备雏形了。这时候，设计者要选用一种（对于有经验者也可以采用多种混合）编程模型来实现并行化的算法。由于关于这方面的介绍已经汗牛充栋，所以这里不过多重复，只是稍微分享自己的经验。一般对于初学者和希望快速并行化的开发者，可以适用类似OpenMP一类隐式线程化实现（Implicit Threading）；对于有有经验者或者硬核派，可以适用Windows的Win32 API，P-threads API或者适用于分布式平台的MPI，这类显性（Explicit Threading）进行相对底层的（如线程创建、销毁已经同步）控制；如果想使用既提供高层（隐性）并行化，又提供低层（显性）并行化手段的编程模型，Java和Intel的Threading Building Blocks（TBB）会是很好的选择。</p>
<p>经过前面三步，开发者应该已经有了一个能够工作的并行化程序。此时，应该问自己的问题是，并行化的效果足够吗？能够满足需求吗？如果答案是否定的，就需要问自己还有足够的资源（人力，时间）来作进一步的优化吗？如果答案是肯定的，那么可以重复前面三个步骤，更进一步地发掘并行性，降低同步与通信的开销，从而获得性能的提升。</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2009/05/21/400001819/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>教育创新的又一个里程碑——教育部-Intel精品课验收评审小记</title>
		<link>http://software.intel.com/zh-cn/blogs/2009/03/31/intel-2/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2009/03/31/intel-2/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 11:25:45 +0000</pubDate>
		<dc:creator>Selwyn H. You 游骅 (Intel)</dc:creator>
				<category><![CDATA[软件技术学习及认证]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2009/03/31/intel-2/</guid>
		<description><![CDATA[晓春三月，尽管北京还是乍暖还寒，但万物却已开始复苏。我有幸参加了Intel大学合作部组织的一年一度的教育部-Intel精品课程验收评审会。会议邀请到了教育部高教司理工处的领导吴爱华，以及计算机教指委的几位专家学者来共同验收和评审07~08年度获得Intel资助的课程。  在评审过程中，我惊喜地发现，本年度受到资助的课程越来越多地能够反映业界技术发展的最新进展。其中，四分之一的课程有机地将多核相关内容纳入教学内容，超过一半的课程介绍了多核的关键技术。更为可喜的是继上一年度有两门多核（处理器）相关课程被推荐并批准为国家级精品课之后，今年又有几门多核程序设计的课程在此次评审中名列前茅。这都反映出了我们的老师在与时俱进，适时地根据业界的进展进行教育创新，培养市场需要的人才。在现场的讨论中，我们的专家和学者也形成了一个共识，那就是要想把多核这样的新主流技术真正地达到一定的教学效果，案例和实训是非常重要的手段，因而这应该成为接下来的校企合作的一个重点。 此外，另一个值得一提的可喜进步是，越来越多的老师能够利用网站这样的新媒体作为教学手段。通过把教学大纲和教案等教学材料建立网站进行发布，一方面提升了教学效率和示范效果；另一方面增加了交流和普及推广的作用。更值得褒奖的是有些老师能够采用双语教学，这样就更加便于进行国际交流，扩大教改成效。有鉴于此，与会的领导和专家还特意访查了包括Intel公司在内的业界精品课建设网站，进而为接下来的课程建设提出了建议。 参加完会议后，回想起我们从06年开始的，与几所重点高校合作将业界新技术引入教学，发展到现在与一百多家院校合作进行研究和教学创新，以及相关精品课程的蓬勃建设与发展。我不禁感慨，经过这么多年的共同努力，我们正迎来教育创新的又一个春天。]]></description>
			<content:encoded><![CDATA[<p>晓春三月，尽管北京还是乍暖还寒，但万物却已开始复苏。我有幸参加了Intel大学合作部组织的一年一度的教育部-Intel精品课程验收评审会。会议邀请到了<span style="#000000;">教育部高教司理工处的领导吴爱华，以及计算机教指委的几位专家学者来共同验收和评审07~08年度获得Intel资助的课程。</span> </p>
<p>在评审过程中，我惊喜地发现，本年度受到资助的课程越来越多地能够反映业界技术发展的最新进展。其中，四分之一的课程有机地将多核相关内容纳入教学内容，超过一半的课程介绍了多核的关键技术。更为可喜的是继上一年度有两门多核（处理器）相关课程被推荐并批准为国家级精品课之后，今年又有几门多核程序设计的课程在此次评审中名列前茅。这都反映出了我们的老师在与时俱进，适时地根据业界的进展进行教育创新，培养市场需要的人才。在现场的讨论中，我们的专家和学者也形成了一个共识，那就是要想把多核这样的新主流技术真正地达到一定的教学效果，案例和实训是非常重要的手段，因而这应该成为接下来的校企合作的一个重点。</p>
<p>此外，另一个值得一提的可喜进步是，越来越多的老师能够利用网站这样的新媒体作为教学手段。通过把教学大纲和教案等教学材料建立网站进行发布，一方面提升了教学效率和示范效果；另一方面增加了交流和普及推广的作用。更值得褒奖的是有些老师能够采用双语教学，这样就更加便于进行国际交流，扩大教改成效。有鉴于此，与会的领导和专家还特意访查了包括Intel公司在内的业界精品课建设网站，进而为接下来的课程建设提出了建议。</p>
<p>参加完会议后，回想起我们从06年开始的，与几所重点高校合作将业界新技术引入教学，发展到现在与一百多家院校合作进行研究和教学创新，以及相关精品课程的蓬勃建设与发展。我不禁感慨，经过这么多年的共同努力，我们正迎来教育创新的又一个春天。</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2009/03/31/intel-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

