课程详情
课程评价
spContent=本门课程要求学习者已经掌握C语言,以及基本的程序设计思想。本课程将讲述枚举、递归、分治、动态规划、搜索这几种算法。一部分内容,难度与中学信息学奥赛NOIP提高组的较难题,ACM国际大学生程序设计竞赛中的中等题相当。学好本课程,算法及实现能力将超过国内大部分高校计算机专业本科毕业生。
—— 课程团队
课程概述

仅仅熟练掌握程序设计语言并不能成为好的程序员。对于许多问题,如果没有好的算法,计算机只能低效地解决,甚至无法解决。因此,好的程序员,还应该对程序的灵魂 --- 算法有较好理解并能灵活应用。

 

本课程要讲授的就是枚举、递归、分治、动态规划、搜索这五种基本的通用算法。各种复杂算法问题的解决,都可能用到这些基本的思想。

 

本门课程面向需要进一步提高编程和算法水平的学习者。要求学习者已经掌握C语言,以及基本的程序设计思想,如简单排序、简单的递归。

 

本课程中一部分的例题,难度与中学信息学奥赛NOIP提高组的较难题相当,也和ACM国际大学生程序设计竞赛中的中等题相当。掌握了本课程的内容,学员的算法水平和实现能力将超过国内大部分高校计算机专业本科毕业生。

 




具体的课程安排如下:

1)1周: 枚举

2)1周: 二分算法

3) 2周:递归

4) 1周:分治算法

5) 2周:动态规划 

6) 2周:深度优先搜索

7) 1周:广度优先搜索

8) 1周:贪心算法

9) 1周:期末考试


另外,本课程的内容和作业紧扣“北京大学信息学院程序设计与算法等级认证”考试,该考试分为十级,本课程内容对应于第三级和第四级,作业和考试题也来源于该等级认证考试的题库。


授课目标
1. 通过本课程学习,有能力解决中学生信息学奥赛NOIP提高组的较难题,或ACM国际大学生程序设计竞赛中的中等题。 2. 达到“北京大学信息学院程序设计与算法等级认证”考试四级的要求
课程大纲
预备知识

1. 熟练掌握C语言

2. 掌握基本的程序设计思想,如简单排序、简单的递归。



证书要求

完成作业和考试,达到要求后,可以获得课程主讲教师签名颁发的合格证书或优秀证书。总成绩算法如下:

考核

成绩

每周测验(即作业)

70/100

期末考试

30/100




60-84分:合格证书
85-100分:优秀证书


参考资料

高等教育出版社《算法基础与在线实践》,刘家瑛,郭炜,李文新 编著

此书和课程内容配套,课程中大部分例题在书中均有详解。

常见问题

1.本课程的作业和考试形式是怎样的?

答:本课程的作业,以及最后的期末考试,形式都是在北京大学在线程序评测系统 openjudge.cn上提交程序,由系统自动评判正误。程序不能有丝毫错误。这种形式对于提高编程能力极其有效。

2.课程介绍中提到的“北京大学信息学院程序设计与算法等级认证”是怎么回事?

答:为了推广和普及计算机教育,北京大学信息学院推出了基于2000题题库的“北京大学信息学院程序设计与算法等级认证”考试,考试共分十级,最高等级的水平相当于中学信息学奥赛全国赛或ACM国际大学生程序设计竞赛。本课程的内容对应于三级、四级,作业和考试题也来自该2000题的题库。