《计算概论》课程是北京大学面向全校理科专业(理学、工学和医学)一年级学生进行计算机基础教育的特色课程,是北京大学信息科学技术学院开设的选课人数最多的主干基础课(每年有2000余人选修本课程)。针对本课程涉及的专业多、选课学生多的特点,在许卓群、代亚非等老师的主持下,经过十余年的建设,本课程已逐渐形成了“立足基础、因材施教、强化实践”的教学理念。首先,按专业分2个层次建设课程,为“电子信息科学类”专业提供《计算概论A》课程,为其他理科专业提供《计算概论B》课程;不同的层次,课程内容深度会有所不同;同时,面向不同的专业背景,在教学和实习内容设计上也会有不同的针对性。其次,根据学生的基础不同实现分班教学:对于“电子信息科学类”类专业,基础好、领悟力强的学生给予实验班教学,大部分学生在普通班学习,为基础较差的学生开设辅导班个别辅导;对于其他理科专业,则分通选课(供各院系基础好的学生选修)、元培班(北大元培学院学生)和普通班(各院系其他学生)进行教学。与此同时,我们设计和开发了程序设计在线评测系统POJ和编程网格系统PG,来强化学生的动手能力,并与大学生程序设计竞赛结合起来,培养学生的创新能力。 早在1996年,许卓群教授就已经在北京大学主持开设面向全校理科学生的《计算概论》课程。经过十余年的建设,北京大学根据学生的基础不同、专业不同提供了不同层次和不同内容的计算机基础教育课程。对于“电子信息类”专业的学生,北京大学设计了“程序设计与算法类”课程群,由《计算概论A》、《程序设计实习》、《数据结构与算法A》、《数据结构与算法实习》、《算法分析与设计》五门课组成。而对于其他理科学生,北京大学为他们设计了《计算概论B》和《数据结构与算法B》课程。北京大学规定所有理科本科生必须修满两学期以上的计算机基础课程,并将该系列课程列为本科生主干基础课进行重点建设。 北京大学设计的有关课程群,为理科本科生提供了一个系统的、理论与实践相结合的计算机基础教育框架。其中,《计算概论》课程是这个框架中的基础。 作为北京大学覆盖面最广的理科课程之一,《计算概论》课程以北大的网络教学平台为基础,以北京大学国家级计算机实验教学示范中心为依托,辅以多个具有不同专业特点的课程网站,构建了一个多层次开放的网络教学与实验环境。北京大学的网络教学平台为所有老师提供了功能完善、运行稳定的网络教学与互动平台,为学生提供了丰富多彩的教学资源。学生们可以获得整个课程网络教学环境的资源,稳步扎实地完成课程内容的学习。 |
本课程的教师队伍采用课程负责人/主持人制和主讲教师聘任制等方式进行建设。课程负责人负责整个课程的规划和设计,《计算概论A》和《计算概论B》又分聘2位课程主持人,以更好地组织开展教学交流和讨论工作。所有主讲教师都要经过申请,学院组织专家组对教师水平及教学效果进行审核,合格的教师由学校签发聘书,聘期2年。同时,教学组还聘请一些教学经验丰富的老教师作为教学指导(督导)。在老教师的指导下,在课程负责人/主持人的带领下,所有教师合作开展整个课程的建设工作。
随着十余年本课程教学工作的开展,形成了一个年龄和知识结构合理、开放、充满活力的教学团队。课程负责人、《计算概论A》的主持人为代亚非老师,《计算概论B》的主持人为罗英伟老师,教学组聘请教学经验丰富的许卓群、裘宗燕两位老教师作为教学指导。
课程负责人:代亚非 教 授
代亚非,女,博士,北京大学信息科学技术学院网络所教授,副所长,博士生导师。1993年7月毕业于哈尔滨工业大学计算机系,获博士学位。主要的科研兴趣包括计算机网络与分布式系统、分布式网络存储,P2P计算与P2P系统。是北京大学网络实验室P2P课题组的负责人,该课题组研发了P2P文件共享系统Maze以及开放的P2P系统通用开发平台Lunar。 | |
近五年来,作为负责人主持完成以及正在从事科研项目包括:973课题、863课题、国家自然科学基金项目、国家发改委项目、教育部博士点基金项目、国家信息产业部项目、国家242项目、微软亚洲研究院开放基金等共十多项科研课题。在重要的国际会议、国际期刊以及国内本领域一级学术刊物上发表学术论文40多篇。 1993年开始正式担任授课,一直是一线的授课教师,先后讲授了7个不同的课程,其中“计算概论”和“程序设计基础”持续讲授了15年,其他课程还包括本科生课程“Java语言程序设计”、“Pascal程序设计”、“汇编语言程序设计”、“Basic程序设计”,研究生课程“Internetics”和“分布式系统概念与设计”等课程。此外,还指导博士、硕士和本科生的论文工作。在教学生涯中,历年学生教学评估均名列前茅,同时还获得过多次教学奖励,包括:2001年北京大学华为奖教金、2001年入围北京大学“十佳教师”评选、2002年北京大学计算机—微电子系最受学生爱戴的老师称号、2002年入围北京大学“十佳教师”评选、2004年北京大学教学优秀奖、2005-2006/2006-2007/2007-2008三学年中授课学期学生评估在计算机系排名均为第一。 |
主讲教师:李 戈 副教授
李 戈,男,博士,北京大学信息科学技术学院软件所副教授。主要科研方向为软件工程、软件复用技术。参与多项科研课题,包括973课题、863重点课题、国家科技支撑计划等,并在国内外期刊和会议上发表多篇课题相关论文。 |
|
2006年曾获“北京大学第六届教学基本功比赛”理科组第一名;2007年4月“北京市高等院校计算机基础教育研究会2007年会精彩教学片段交流活动”获“特等奖”。2007年5月获“北京高校第五届青年教师教学基本功比赛”理工类一等奖、优秀教案奖;2006年,被评为“北京市青年岗位能手”;2007年被评为“北京市教育创新标兵”。 |
- 计算机和互联网的发展历程,二进制数制表示、运算及数制编码原理。
要求:
- 了解计算机和互联网的发展历程和现状;
- 熟练掌握二进制数制表示、二进制运算及数值二进制编码原理。
第2章 互联网与信息共享
重点: - 互联网的硬件设施、通信协议和基本应用,动手接入互联网的基本知识。
要求:
- 了解互联网的硬件设施和通信协议在互联网中的角色和作用;
- 熟悉互联网中的各类基本应用;
- 了解自己动手组建局域网、接入互联网的相关实践知识。
第3章 计算机的基本组成
重点: - 计算机的结构及硬件组成,计算机系统的软件层次。
要求:
- 掌握计算机的CPU、总线、内存和外设等设备部件之间的硬件组成关系;
- 了解各种类型的计算机部件设备;
- 掌握计算机“硬件、操作系统、系统软件、应用软件”的软硬件层次关系;
- 了解计算机硬件装配过程和软件系统安装过程。
第4章 信息表示与信息输入输出
重点: - 声音、颜色、图像、文字等信息二进制编码的基本原理。
要求:
- 掌握声音、颜色、图像、文字等信息二进制编码的基本原理;
- 了解多媒体信息文件格式及编码与压缩技术,了解常用的多媒体软件;
- 了解人机交互技术。
第5章 信息存储
重点: - 计算机存储系统从寄存器、高速缓存、内存到外存的层次结构。
要求:
- 掌握计算机存储系统层次结构及各层次存储器件的特点;
- 了解磁盘、光盘和闪存(U盘)的存储原理;
第6章 CPU的信息处理
重点: - CPU的工作原理、指令及指令周期的概念;CPU访问主存储器的工作原理。
要求:
- 了解图灵机计算的原理;
- 掌握CPU的内部组成,及指令在CPU中执行的过程。
- 掌握CPU访问主存储器的工作原理;
- 了解数据(整数、浮点数)在主存储器中存储和表示。
第7章 计算机软件与硬件的协同工作
重点: - 操作系统的功能和作用,文件系统的概念和使用。
要求:
- 了解操作系统引导过程,了解操作系统的主要功能和典型的操作系统的实例;
- 了解文件系统组织文件的原理和方法;
- 了解信息安全的基本概念,初步了解加密技术和计算机病毒防范技术。
第8章 程序设计 - 入门篇
重点: - 程序设计的要素和过程,高级程序设计语言的特点,C语言程序示例及程序规范。
要求:
- 理解程序设计从问题抽象到程序测试的整个过程;
- 了解设计语言从机器语言到汇编语言再到高级程序设计语言的发展过程;
- 理解示例程序处理问题的过程和程序执行的关系;
- 掌握正确的规范化的程序设计风格。
第9章 程序设计 - 基本框架
重点: - 变量、常量、数据类型和表达式;指令流的控制;控制台输入和输出。
要求:
- 掌握变量、常量、数据类型和表达式等C语言中的基本概念;
- 掌握语句顺序执行和分支循环语句对程序执行过程的控制;
- 掌握基本的控制台输入输出方法;
- 通过初等算法综合应用本章所学的语言点。
第10章 程序设计 - 数组和结构
重点: - 数组、结构、指针、字符串等数据类型;内存动态申请与释放;文件操作;排序和查找问题。
要求:
- 熟练掌握数组、结构两种复合数据结构的概念和使用;
- 理解指针的概念和使用指针操作数据的特点,掌握字符串的概念和使用;
- 了解通过指针和动态内存构造运行时刻才确定长度的数组;
- 了解基本的文件操作函数;
- 掌握最基本的排序和查找算法。
第11章 程序设计 - 函数
重点: - 函数的参数传递;变量作用域;递归调用的概念及应用。
要求:
- 掌握函数的定义与调用,理解值参和形参的差别。
- 理解全局变量和局部变量的生命期,了解变量的作用域范围与代码块的关系;
- 了解模块化程序设计思想(问题分解与抽象);
- 掌握函数递归调用的原理及特点。
第12章 问题分析与算法设计
重点: - 程序设计优劣的判断标准(算法的时间复杂性);递归与分治、搜索与回溯、动态规划等一般的算法设计方法与思想。
要求:
- 了解程序设计的一般性经验,了解程序设计优劣的判断标准(即算法的时间复杂性和空间复杂性)。
- 掌握应用递归方法解决具有递归结构的问题,了解分治方法对提高一般递归算法运行速度的作用。
- 掌握应用系统的搜索方法求解问题,了解回溯对提高搜索性能上的作用;
- 掌握应用动态规划的方法求解一般的最优化问题,了解动态规划自顶向下分解问题,自底向上求解问题的程序设计方法。
- 了解NPC问题的性质,认识一些常见的NPC问题。
一、授课进度
|
二、各章重点与要求
第1章 计算机与信息社会 重点:
|
一、主教材 | ||
1. 《计算概论》 | ||
许卓群、李文新、罗英伟, | ||
清华大学出版社,2005。 | ||
2.《程序设计导引及在线实践》 | ||
李文新、郭炜、余华山, | ||
清华大学出版社,2007。 | ||
二、推荐教材 | ||
1.《计算机科学导论——思想与方法》,董荣胜,高等教育出版社,2007。 | ||
2.《程序设计基础(第2 版)》,吴文虎编著,清华大学出版社,2004。 | ||
3.《程序设计基础(第2版)习题解答与上机指导》,吴文虎、经彤,清华大学出版社,2006。 | ||
4.《C语言程序设计(第3版)》,谭浩强,清华大学出版社,2005。 | ||
5.《Foundations of Computer Science: From Data Manipulation to Theory of Computation》,Behrouz A. Forouzan,,Thomson Brooks/Cole,2002。 | ||
6.《A First Book of ANSI C(Fourth Edition)》,Gary J.Bronson,电子工业出版社,2006。 | ||
7.《The C Programming Language(Second Edition)》,BrianW. Kernighan and Dennis M. Ritchie,Prentice Hall, Inc.,1988。 |
- 《ACM图灵奖——计算机发展史的缩影》,吴鹤龄、崔林,高等教育出版社,2002
- 《计算机文化》,June Jamrich Parsons,Dan Oja,机械工业出版社,2003
- 《计算科学导论(第3版)》,赵致琢,科学出版社,1998
- 《计算机基础教程(上册)》,裘宗燕主编,北京大学出版社,2000
- 《计算机基础教程(下册)》,裘宗燕主编,北京大学出版社,2001
- 《C++大学教程(第二版)》,Harvey M. Deitel,电子工业出版社,2004
- 《C++程序设计教程》,钱能主编,清华大学出版社,2003
- 《C++语言基本程序设计》(高等院校信息科学系列教材),裘宗燕,科学出版社,2003
- 《从问题到程序—程序设计与C语言引论》,裘宗燕,北京大学出版社,1999
- 《程序设计语言——实践之路》,裘宗燕译,电子工业出版社(Broadview),2005.3(Michael Scott, Programming Language Pragmatics, Morgen Kaufmann, 2000)
- 《计算机程序的构造和解释》,裘宗燕译,机械工业出版社,2004.2(Harold Abelson and Gerald Jay Sussman with Julie Sussman, Structure and Interpretation of Computer Programs (2nd Edition), MIT Press, 1998)
- 《C++程序设计语言》(特别版),裘宗燕译,机械工业出版社,2002.7(Bjarne Stroustrup, C++ Programming Languages (Special Edition), Addison-Wesley, 2000)
- 《C++程序设计语言题解》(“C++程序设计语言”的伴侣),裘宗燕译,机械工业出版社2003.1(David Vandevoorde, C++ Solutions,Addison-Wesley, 1998)
- 《程序设计实践》,裘宗燕译,机械工业出版社,2000
- Turing Machines and Languages with Only Two Formation Rules, C. Bohm & G. Jacopin Flow Diagrams, Communications of the ACM, 9(5):366-371, May 1966