少年听雨歌楼上,红烛昏罗帐.壮年听雨客舟中,江阔云低断雁叫西风. 而今听雨僧庐下,鬓已星星也! 悲欢离合总无情,一任阶前点滴到天明。

2008年4月30日星期三

计算机竞赛的岁月

最近看到化工大学的ACM小组蓬勃发展,不尽让我回忆起了我参加计算机编程比赛的那些岁月。
大概还是1995年左右,我参加了我所在小学的计算机竞赛兴趣小组,使用LOGO语言进行计算机画图。当时的环境是中华学习机,一种功能非常简单的计算机。那个兴趣小组大概有10人左右,每周进行一次活动。指导老师是我们小学的计算机老师。LOGO语言本身并不是很难的语言,但是却培养了不少基本的编程思想,比如我第一次知道了,如果画完一个图形,马上擦除,再画另一个图形,就会产生类似动画的效果。

在中华学习机上进行编程有不小的挑战。因为CPU的原因,不少复杂的图形必须等待很长时间才能绘制完毕。每当这个时候,我们就非常羡慕据指导老师所拥有的那台386PC。进行计算机作图,首要想好的就是坐标系的问题。每次作图前,都要仔细把整个作图过程想明白,并且要转换到LOGO的坐标系里。相比今天的画图软件,可以很容易知道所作的图形效果,编程作图更需要抽象的想象能力。

1996年,家里有了一台486,使用LOGO作图再也没有“乌龟爬行”的感觉了。当年我参加了成都市的LOGO编程比赛,没有获得任何名次。

1997年,我上初中,参加了初中的计算机兴趣小组。因为初中和成都七中的附属关系,所以我们这个兴趣小组的指导老师是来自成都七中的大张老师(因为还有一个小张老师)。学习编程的环境从LOGO转换成了Pascal。每周,我们兴趣小组都要去成都七中参加活动和培训。也就是大约那个时候,“递归”、“回溯”、“动态规划”和“剪枝”这些今天依然是我学习核心的词汇进入了我的脑海。1998年和1999年,我连续两年参加了省信息学奥林匹克竞赛,并于1999年得了省三等奖,尽管并不是什么很好的名次,不过也是第一次让我感到我真正喜欢严肃的计算机科学。

2000年,我进入了成都七中。那里的兴趣小组云集了不少实力不俗的同学。2000年和2001年,我连续两年获得省信息学奥林匹克竞赛的二等奖。尽管2002年我很有可能有所进步,但是终因为其他的种种原因,我并没有参加那年的比赛。当时小组里的好些人如今都还在继续深造。史歌后来去了清华如今在UIUC,邓晴源去了北理工现在在Rutgers,郑炎在清华读博士。

2003年,高考让我进入了北京化工大学。因为学科的缘故,当时北化并没有参与到大学生的ACM程序设计比赛中。我向系里面老师表达了希望能够参加这个比赛的愿望。当时我的班主任韩阳告诉我,系里面有这个计划,可能第二年就会参加。后来,因为我的主要精力都投入到了学生网络中心(SNC)中,竞赛的事情也就没有提及了。2004年秋季,一个偶然的电话,班主任告诉我第二天要进行ACM北京赛区的预赛,让我到东区参赛。尽管已经有大约3年时间没有认真准备过竞赛的事情,但是我还是准备第二天一早就从北区赶往东区。第二天早上,尽管我7就从学校出发,但是哪知中途碰上了八达岭高速堵车,只能在小营附近下车,徒步走了两三站,才赶上了去马甸的另一个公交车。最终到东区之后已经晚了10多分钟。那次是化工大学第一次参加这样的比赛,老师和同学都经验不足。当时也没有组队,就是大家齐心协力看能做出多少题。最终,我们只解决了八个题目里的三个,其中有一题是我做出来的。第二年,2005年的秋季就不一样了,我们年级已经搬到了东区,并且那次是第一次正式经过组队参加比赛。当时我和屠乐奇、岳野的地队伍在比赛中发挥差强人意,最终并没有被选中去参加北京区的复赛。原因之一是,我们并没有经过长时间的训练和磨合,而这两点对于参加ACM来说都非常重要。2005年的那次比赛,成为了我最后一次参加的计算机竞赛。

3年时间很快就过去了,如今我在美国攻读博士研究生,正在准备博士资格考试,其中有一个科目叫“算法设计与分析”,核心内容就是我11年前听说的那些词汇。而参加竞赛这么些年学会的算法不断出现在计算机科学的各个领域。今天,我欣然发现,化工大学的ACM兴趣小组正蓬勃发展。现在不仅有了一批喜好这方面的学生,更是有了一个良好的训练平台,每个月有月赛,大家交流解题心得,有研究生组织。这些仅仅发生在2004年后不到5年的时间。我有时感概我自己没有赶上这样的机遇,然而这正表明了我们的进步。

借此文来怀念那些指引我走向计算机科学研究道路的岁月和朋友、老师。

没有评论: