※※ 课 程 简 介 ※※
    培养学生的问题求解能力是计算机专业教育的重要目标,算法作为计算机解决实际问题的主要手段,成为计算机专业学生需要掌握的核心技能之一。算法设计与分析在数据结构课程的基础上,进一步剖析各类主要算法的问题描述、主要思想、基本原理和应用场景,使得学生不仅能掌握当前主要算法技术的工作原理,而且能理解该算法产生的背景和设计理念,使其能灵活运用这些技术,结合实际情况设计合适的算法解决问题。同时,本课程注重算法复杂度分析,针对不同类型的算法,系统化介绍各类算法复杂性分析技术,强化算法的性能指标,引导学生设计高效的算法解决实际问题。
    算法设计与分析是一门面向高年级本科学生的专业基础课程,受到了全球各个高校的重视,已涌现了不少优秀的教学书籍和教学资料。为了能够让学生受益于这些优秀的教学成果,同国际先进水平相衔接,我们采用了双语教学模式。通过采用原版教材和英文课件,学生能够掌握重要的计算机术语和基本的专业英语表达方式,提高其获取本领域知识的能力。学生通过进一步阅读相关原文资料,巩固了学习成果,拓宽了思路。计算机技术日新月异,大量的理论和成果都是英文发表,通过双语教学,我们也希望引导学生通过原文资料来获得最新技术成果,提高其获取本领域知识的能力,使之具有国际竞争力。
    通过本课程的教学,学生能解决计算机领域常见的实际问题,掌握评价算法的基本原则和方法,并了解算法复杂性理论。通过采用双语教学,使得学生能直接获得国际一流研究成果,学习算法相关的计算机专业术语,更好地掌握计算机算法的原理以及问题求解能力,提升运用专业英语的阅读和写作能力,更好地获取最新科研成果和参与国际学术交流,从而能始终处于本学科的前沿地位。
    教学内容以算法设计和算法分析作为主线,以主题形式展开,通过讲授基本算法技能,总结、归纳算法设计策略,并系统介绍算法分析技能。主要内容包括基础知识,基本算法,基本策略,算法理论和随机算法五个部分。
    1. 基础知识
    系统介绍算法设计和分析的基础知识,包括数学背景,算法复杂度的符号表示,函数的渐进增长率,评估算法好坏的基本准则与方法,以及算法分析的基本手段,通过实例说明算法设计与分析思想在解决实际问题中的重要作用。
    2. 算法技能
    以主题形式详细介绍基本算法设计方法和分析技术,包括排序、选择、查找、字符串匹配和图算法的设计与分析。
    排序算法:包括常用排序算法如插入排序、快速排序、合并排序、堆排序、希尔排序等算法的思想和分析。通过这些基本算法的介绍,引出算法设计中的重要策略:递归与分治。递归与分治是基本而重要的算法设计技术,广泛用于计算机问题求解。我们对这两个技术进行了系统化介绍,包括问题描述和求解思路,并且详细介绍了递归程序的复杂度计算,定量分析算法的代价。在后面专题内容中,也融入了递归与分治的思想。本部分内容也包括了递归树和Master定理等算法分析技术,用于定量分析计算复杂度。
    选择算法:包括寻找最大元素,最小元素,第二大元素和中数的算法。在算法设计技术的同时,本部分内容引入了敌手策略分析计算复杂度。
    查找算法:包括二分查找,基于二叉平衡树的查找算法,和基于哈希表的查找算法。通过介绍平摊分析策略详细分析了哈希表的计算复杂度。
    图算法:包括图遍历的深度优先和广度优先算法,拓扑排序算法,图的连通分支算法,最小生成树算法,最短路径算法等。这些图算法大多采用了贪心策略,结合具体实例,介绍贪心算法的使用和设计原理,使得学生能更深刻的掌握这个重要的技术。
    字符串匹配算法:包括KMP算法和Boyer-Moore算法等经典字符串匹配算法。
    动态规划算法。动态规划程序设计是对解最优化问题的一种途径、一种方法,没有标准的数学表达式和明确清晰的解决问题方法,需要具体问题具体分析。为此,我们在系统介绍动态规划的适用场合和基本理论之后,通过多个典型实例的分析和讨论,介绍动态规划思想在实际问题解决中的作用。
    算法复杂度分析的基本策略,包括递归树,Master定理,平摊分析(Amortized Analysis)和敌手策略(Adversary Arguments)。
    3. 计算理论
    计算复杂性理论是较难理解的内容,具有高度的抽象性。本部分内容简要介绍NP完全理论、NP完全问题的判定问题和采用近似方法求解NP问题的基本思路。
    4. 随机算法
    介绍随机算法的基本概念,包括蒙特卡罗和拉斯维加斯两种基本方法,通过简单例子展示随机算法的设计,并介绍随机算法复杂度的概率分析方法。
   本课程通过多样化的教学形式,按照多个主题进行教学,采用现代化授课手段,力争与国际接轨,从而达到较好的教学效果。
   1. 教学目标明确。紧扣教学目标,以培养学生问题求解能力作为基本出发点编排教学,主题式的教学模式,系统教学结合专题讲座力求学生能掌握设计和分析算法的技能和解决问题的方法,而不是仅仅灌输一些算法原理。
   2. 教学主题科学。实际计算机系统中采用的算法千变万化,但本质而言,这些算法可以归入几个类别。我们借鉴了国际上多个著名院校算法课程的授课方法,采用问题求解地组织方式,将其确定为多个主题,涵盖了常用的算法。学生通过掌握这些基本的技能,通过适当变换和延伸,能方便地解决实际计算机问题。
   3. 授课形式多样。大班系统教学和小班专题讲座的形式是本课程教学的一个重要特色。掌握算法设计的技能不能靠死记硬背,而算法分析又有较高的理论分析方面的要求。因此,本课程要求学生在系统学习之余需要投入一定的时间进行思考和实践,学会灵活运用基本技能解决实际问题。大班系统教学能够让学生系统化掌握算法设计和分析的理论体系,而小班专题讲座则以灵活的形式,紧扣课程的重点和难点,并通过实际例子拓展学生的思路。此外,专题讲座注重师生互动,通过双方的互问互答加深学生对重要和易混淆概念的理解。实践证明这样的教学方式取得了良好的效果。
   4. 内容动态调整。不同学生具有不同特点,掌握知识的程度也不尽相同。本课程的学生作业和试卷全部由参与专题讲座的教师完成,使得教师对学生掌握知识的程度有了全面了解,在课堂上可以根据实际情况取舍教学内容,动态调整。一方面保证掌握程度较好的同学能学习到更多的知识,另一方面使得基础较差学生能学好基本技能。
   5. 国际水平接轨。整个课程的教学过程都同国际水平接轨,教材的选用、教案的制作、试题的设计都经过多次讨论和修改,并全部采用英语。由于英语是计算机技术的通用语言,通过这样的训练使得学生能够掌握基本计算机术语的表述,提高其进一步学习前沿知识的能力。
   考试题考察学生对基本算法设计与分析技能的系统掌握程度,注重灵活运用的能力。考试题包括概念题(15%)和综合运用题(85%)。
    1. 概念题考察学生对基本概念的理解程度,而不是仅仅记忆概念的内容。引导学生对基本概念的深入理解,这些是进一步学习和工作的必备工具。
   2. 综合运用题考察学生用算法设计和分析基本技能来解决实际计算机问题的能力。这些问题一般包含设计部分和分析部分,这是算法课程的重点内容,也是这门课程的主要教学目标。求解这些试题需要学生灵活运用课堂上学习的算法设计思想,并结合实际问题;而分析部分则要求对算法进行严格的复杂度分析。这样能引导学生采用合适的方法,高效解决实际问题。
    考试成绩的比例按照平时成绩10%,期中成绩20%,期末成绩70%来进行计算。
本课程建设目标
   培养学生独立求解问题的能力,是算法设计与分析课程教学的重要目标。在今后的课程建设中,本课程将以问题求解为主线,探索算法课程的设计和教学实践的展开。为了使本课程符合国际一流水平,让学生始终掌握最新的理论和技能,我们将进一步强化双语教学手段,提高学生使用英语获取知识和学术交流的能力。
   1. 以问题求解为主线,建立合理的课程体系
   算法设计与分析是一门本科高年级的专业基础课程,离散数学是其基本的理论基础。离散数学通过数学模型将现实世界的问题映射为计算机系统的问题,计算机算法则通过算法设计来解决这些问题。我们将进一步调整各个课程的知识点和侧重点,使得两者构成一个相辅相成的有机整体。
   2. 紧跟科研前沿,保持课程内容的先进性
   算法是计算机的灵魂,在当前计算机的体系结构下,新技术的出现往往有新算法的支撑。因此,我们将在组织好算法课程基本内容的前提下,结合自己的科学研究和当前计算机领域有重要价值的新成果,将其融合到算法教学中。通过前沿技术的引入,激发学生的学习兴趣,引导学生的科学研究,为其进一步深造打下基础。
   3. 优化教学平台,增强课程实践环节
   本课程涉及较多的理论知识和方法论,然而又同实际计算机系统有着紧密的联系。因此,我们正在策划算法设计分析教学平台的开发,学生可以通过这个教学平台运行其设计的算法,并获得详细的算法分析数据,加深其认识。
   4. 丰富课堂教学形式,加强师生互动
   我们将进一步调整课堂教学内容,一方面通过不断修改和发展课件,更容易理解授课内容;另一方面通过增加互动环节,鼓励学生提出在学习中遇到的问题和困难,进而引导学生拓宽思路,举一反三发掘算法中的深层次问题。
   5. 完善课程网站,发展第二课堂
   课程网站发布课程的基本信息、多媒体课件、相关资料,并且要发展网上的互动式教学,设立算法课程论坛讨论学习过程中的感想和问题。计划增加能力测试等项目,可以在线测验对知识点的掌握程度。
双语教学建设规划
   采用英语作为教学语言是本课程的一大特色和优势,针对国内学生在英语学习和使用方面的特点,我们将进一步提升教学方法。
   1. 循序渐进。由于学生此前较少接触到以英语为主的专业课教学模式,因此需要采用渐进式的方式,适当放慢速度,使之逐步适应这样的授课方式。
   2. 增加互动。国内学生的英语听说能力较弱,这是进行国际学术交流的一个重要障碍。因此,在课堂上适当增加提问,英语问答,活跃课堂气氛,也锻炼了学生的英语能力。
   3. 提高效率。采用英语作为教学语言,需要学生投入更多的精力,学习效率同汉语授课难免会有影响;但英语能力的提高,又能使得学生更快接受更多的最新知识,有利于长远的发展。因此,我们需要研究双语教学的效率问题,平衡利弊,达到最佳的教学效果。
|