推荐序一

《算法竞赛入门经典(第2版)》要面世了。一方面高兴,一方面也想借题发挥,这是因为近年来我和我的团队致力于研究计算机教育的改革,对于应该如何提升学生的思维能力和行动能力有了新的认识。当然我会把握“不要离题太远”。

在我的书案上常年摆着一本蓝皮的书《算法艺术与信息学竞赛》,这是刘汝佳与黄亮合写的书,2003年12月我怀着喜悦的心情给这本书写了一页纸的序言。今天,时隔十年,我又拿起笔来为汝佳的新书作序,想到信息学奥林匹克的魅力,看到我们的学生能够承担起普及的责任和水平,此时此刻我的欣喜之情难以言表。“青出于蓝更胜于蓝”是我们当老师的最大愿望和期盼。汝佳之所以能写出这种内容和内涵丰富,文字也很难表达的思维艺术之美的好书,在于他对于信息学竞赛的热爱和他在青少年中普及计算机知识的强烈的责任感。汝佳为人低调诚实,做事认真负责,最可贵之处是那种“打破砂锅问到底”的求真务实精神,还有就是愿意和善于与人合作共事,能够真心听取别人的意见。

刘汝佳在中学参加信息学奥赛,进入清华大学后作为主力队员参加过ACM/ICPC世界大学生程序设计大赛,在本科和读研期间又长期担任国际信息学奥林匹克中国队的教练。很早以前他就说过:想写一本“从入门开始就能陪伴着读者的书”,意思是书的作用不仅是答疑、解惑,更是像朋友和知己,同读者一起探讨和研究问题。我当然赞成著书者的境界,在我给本科生上“程序设计基础”课时的感悟是:教学相长,发挥学生在学习中的主体作用,激发兴趣和调动积极性,创造条件,使其参与课程内容的研讨,并提出宝贵意见,是成就精品课的必由之路。汝佳说:“书的第12章就像是一个路标,告诉你每条路通往怎样的风景,但是具体还得靠读者自己走过去,在走之前也需要自己选择。”话说得很到位。闪光的东西蕴含在解决问题时的那些思维之美中,精妙的解题思路和策略有时令人拍案叫绝,一路学一路体味赏心悦目的风景,没有不爱学和学不会之理。

学会编程是一件相当重要的事,我在清华上课时对学生说“这是你们的看家本事”。一个国家,一个民族,要想不落伍,要想跻身于世界民族之林,关键在于拥有高素质的人才。学习和掌握信息科学与技术,在高水准人才的知识结构中占有重要的地位。讲文化要以科学为基础,讲科学要提高到文化的高度。学习计算机必须了解这一学科的内在规律和特征,“构造性”和“能行性”是计算机学科的两个最根本特征。与构造性相应的构造思维,又称计算思维,指的是通过算法的“构造”和实现来解决一个给定问题的一种“能行”的思维方式。

有些问题没有固定的解法,给读者留有广阔的发挥创造力的空间,经过思考构造出的算法能不能高效地解决问题,都得通过上机实践的检验,在这一过程中思维能力和行动能力会同步提升。我认为高手应该是这样炼成的。光说不练,纸上谈兵是绝对学不会的。

当前,有识之士已经认识到:大学计算机作为基础课,与数学、物理同样重要。培养计算机的应用能力,掌握使用计算机的思路和方法,必须既动手又动脑,体会和感悟蕴含于其中的计算思维要素,对于现代人是非常重要的。

当你拿到这本书时,建议你先看“阅读说明”。其中有两点,一是“本书最好是有人带着学习”,如果这一点做不到的话,建议你求助于网络,开展合作学习,向高人请教,让心得共享,这些都符合现代学习理念;二是“一定要重视书中的提示”,因为其中包含着需要掌握的重要知识点和编程技巧,你会发觉有些内容在一般教科书中是看不到的。

这是一本学习竞赛入门的书。我想说的是参加信息学竞赛入门不难,深造也是做得到的,关键是专心、恒心与信心,世上无难事,只要肯攀登!

全国信息学奥林匹克(NOI)科学委员会名誉主席

国际信息学奥林匹克中国队总教练

清华大学计算机科学与技术系

吴文虎