图书前言

每一个刚涉足计算机领域的人都很想知道怎样才能尽快地学习到最有用的计算机知识。首先要建议的是,在一开始请不要仅限于技能培训式的学习。学习计算机知识不像学习汽车驾驶技术,仅局限于交通规则和驾驶操作的初等培训是不够的。有些使用过计算机的人可能认为,计算机基本知识的学习没有什么用,为了学会计算机只需要多使用多练习就可以了。虽然这种意见包含有正确成分,一个人不参与实际使用计算机,不取得第一手经验是不会真正懂得计算机的。但是,只是能够快速麻利地使用计算机,能够用它进行写作或绘制图表,就认为可以成为一个计算机的行家里手,那就错了。计算机的学习从一开始就要强调基本概念的理解,强调掌握计算机和通信网络的基本原理,不能局限于记忆操作步骤和熟练工作技能。仅仅学会文字编辑、网页制作等技能是不够的。计算机科学和技术知识日新月异,硬件和软件新技术层出不穷,它们的应用种类也是千变万化,技能方面的知识往往陈旧过时得非常快,停留在某些常用软件的使用技能上是无法适应未来发展的。

《计算概论》这本书为读者提供了计算机入门知识。为了尽快进入计算机知识的大门,我们的建议是: 打好基础才是捷径。计算机和信息网络将会伴随你的一生,计算机将会成为你的贴身助手。学会灵活运用计算机,计算机就会听从主人的操纵,成为适合你个性需要的有用工具。

  古人云: “工欲善其事,必先利其器”,不要吝惜对工具的犀利打磨功夫,打好基础才是灵活运用的前提。我们对基础学习提出几条具体建议: ①不要局限于记忆,遇到的技术名词不必拘泥于每一个词都弄明白,遇到难懂的概念,可以做一个记号继续往下读。书中内容可以反复阅读,回过来温习往往会有新的收获。上机练习以及与他人的讨论,都会帮助对问题的认识,加深对概念的理解。②一定要有上机实践。本书虽然没有偏重具体讲解上机、上网和使用软件的具体操作过程,但是建议读者一定要参照相关的操作教程,获得计算机操作系统、文字编辑、上网以及网页制作等方面的具体经验。③在实际操纵计算机时,如果它不听话,一定不要气馁。“条条大路通北京”,为了让计算机完成某一件工作,决不会只有一条途径,一般都存在很多种办法。当遇到挫折时一定要停下来想一想,设法换一种思维、另找一种办法去完成它。④黑箱原理。机器内部的计算机工作原理虽然比较复杂,但是作为使用者不必全部了解清楚复杂原理才能运用它。黑箱原理的意思是: 为了突出一个系统的功能和特点,应该忽略与当前主要问题无关的细节,把那些次要的复杂东西遮盖起来,就好像将复杂系统放在一个黑箱里面,外面仅留着最主要的部分。也就是说,在观念上,要尽量突出自己关心的主要问题。例如,为了录入一篇文章,需要了解计算机键盘和显示屏怎样配合工作的基本原理,但是并不需要全面了解键盘、计算机和显示屏三者配合工作的细节。为了编辑文章,开始只需要理解与文字编辑有关的操作,输入的文字能够存储在计算机里等。总之,在学习上不必一次求全,采取一步步深入,边实践边深入理解的策略更好些。

前  言  计算概论(第2版)  本教材的教学理念是“立足基础、因材施教、强化实践”。对新入学的大学生,其基础教育内容包括了原理性的计算概论和程序设计基础两个部分。虽然在高中阶段,很多学生已经接受了计算机和因特网的软硬件以及二进制、文字处理、操作系统等知识,也包括基本的程序设计训练,但是只有少数学生真正理解计算和网络通信的基本特征。考虑到这些情况,本教材前7章包括了计算与网络通信的原理性讲解,后续4章则是程序设计基础。在课程教学上,建议可根据学生的不同知识层次,设计不同的教学重点要求,以满足学生的不同需求。其目的是争取让每个学生都能够在课堂中保持“新鲜”感,既能避免“跟不上”,也可以设法避免“嚼冷饭”、“进度慢”的现象。对于基础好、领悟力强的学生可以组成“实验班”教学,而大部分学生在普通班学习。原来没有基础的学生,初期还可以为其开设辅导班进行个别辅导。在授课中,一般采取基础训练(30%) 、综合实践(40%)和创新培养(30%)相结合的培养模式。

  在讲解程序设计基础时,要使学生通过较多的上机训练,掌握程序设计的基本方法。通过实践环节,逐步提高程序设计的技巧,建立良好的编制程序习惯,写出规范的程序代码,为后续课程打好基础。除了让学生掌握基本功之外,也要强调对问题求解的抽象能力的培养,学习如何把实际问题用数学的形式表示。为此,教材提供了一些经典的算法知识,例如递归、贪心算法和动态规划等,以开阔学生解题的思路。

  在具体教学内容上,建议沿着计算机科学发展的主线,介绍重要的基本概念,不必面面俱到。同时,也要争取让学生了解当前计算机领域出现的新思想、新技术、新方法。为此,每一年都要争取在教学内容上做必要更新。为了配合实验教学,作者在教育网上提供了在线实验教学平台,即程序设计在线评测系统POJ (http: //acm.pku.edu.cn/JudgeOnline ,以及面向非计算机专业学生学习实践的编程网格系统PG 。它是一个开放的网络教学环境,为教师和学生提供在线的编程实践和在线考试环境,提供丰富的教学资源和教学辅导。该平台还能够与大学生程序设计竞赛结合,努力培养学生的创新能力。

  该实验教学平台已经建设了一个能够适合各专业背景的、循序渐进的上机编程题库。利用POJ/PG系统,任课教师可以根据课程进度对学生程序设计实习内容进行编排(包括作业、练习和竞赛等)。学生可以通过网络在线提交程序设计的源代码,由POJ/PG系统自动对学生提交的程序进行验证并实时通知结果。POJ/PG系统除了用于教学之外,还面向社会开放,吸引了大量的程序设计爱好者的参与和讨论。此外,该教学平台还提供一些大型程序设计练习,以便培养学生的团队合作能力。这种在线程序设计验证平台以及按照团队协作方式的在线实践活动,激发了学生的实习兴趣,提高了学生的学习积极性与主动性。

  在教学辅导方面,建议采用助教制度。每个本科生小班(约30人)可以安排1名助教,进行全程的教学辅导。采用这种小班实践辅导和在线评估,可以保证教学效果,也提供了助教的考核依据。

  目前,POJ系统已经拥有注册用户80 000多个,在PG系统上也开设了10余门课程。系统不仅在北京大学得到应用,在全国程序设计竞赛和一些兄弟院校已经采用POJ/PG系统进行教学实践。

本书是在2005年出版的《计算概论》(许卓群,李文新,罗英伟. 计算概论. 北京: 清华大学出版社,2005)基础上编写的。这次教材编写工作被遴选为教育部普通高等教育“十一五”国家级教材规划选题、中国新闻出版总署“十一五”国家重点图书。许卓群编写第1章、第6章和第7章,罗英伟编写第3章至第5章,李文新编写第8章至第11章,汪小林编写第2章、第12章和7.5节。

  和前述2005年《计算概论》相比,本书补充了近年来教学实践的经验总结以及信息技术新近发展的成果。但从教学理念来看,本书内容的很多方面源自于这些年和本书作者一起参与教学实践的教学组其他同仁,来自于他们的许多贡献。

作 者

2009年8月