陆平
在校园里,活跃着一个特殊的学生社团,他们热衷编程,他们古怪机灵,他们思维敏捷,他们热衷公益,他们阳光活跃。外面流传很多关于这个社团的传说,一批批被清华、北大提前录取的“NOI大牛们”,国家集训队员的传奇故事,麻省理工的那位“前辈”的名人轶事,一年一年傲人的信息学奥赛的奖牌榜……
这个18岁的“Programmer家族”程序设计社团,已经从婴孩成长为一支有自己文化、自己精神的朝气蓬勃的“青年”。
别人看到的是名校,是奖杯。而我们看到的是队员们为一个个难解的问题魂牵梦萦的挣扎和拼搏过程,被漂亮算法迷倒的神态,被计算思维点燃的梦想和在讲台上发表观点时展现的独特的生命姿态。
在这里,随时可以听到他们思维的树拔节的声音;
在这里,随时都可以看到一群少年沉浸在探究世界的幸福表情;
在这里,一群少年,他们的意志,他们的才情,他们的理想,被他们自己兑现。
……
这是一个什么样的社团?
意志,铸就坚实的基础
幸福是在学习和成长中的感觉(哈佛新概念)。是的,幸福,不仅仅是写在脸上的笑容,更有在遇到难题时的艰难坚持和突破后的欣喜。
“我在不知不觉中喜欢编程,不知不觉沉浸在编程的世界。编程似乎已经是生活的一部分,它不是烦琐的代码,不是头疼的问题,而是一个思维的跳跃,是一个有趣的游戏,是一个奇妙的思想。别人眼中的编程和我们眼中的编程,是截然不同的,我们愿意了解它,接受它。在编程的世界中,我们能找到另一个自己。”(2012级“Programmer家族”成员 李桐沙)
这样的幸福不是幻想出来的,是在坚实的基础训练中一点点生长出来的。我们深知培养一名优秀的学生,更重要的是培养他们的兴趣,让他们看到漂亮的代码,更要看到问题,看到解决问题的变幻无穷的神奇算法。
而培养兴趣,必须建立在坚实的基本知识的学习和扎实的训练之上。每周3~5小时的基本知识的学习往往需要坚持一年的时间。每年9~11月为迎接国际IOI,我们还要进行“魔鬼式”集训。因为没有细致严谨的程序语言的学习,就无法用计算机语言指挥计算机工作;没有基本的程序结构的学习,便无法感受由基本的结构搭建的漂亮的程序大厦;没有系统的基本算法的学习,便没有能力去欣赏多彩多姿的回溯算法、动态规划思想。一年扎实的基本功训练,铸就了他们坚实的基础。
才情,源自代码背后的意义
真正的才情,不仅是代码的编写,更是千变万化的漂亮代码背后的神奇算法、规则,还有透过程序设计过程看到的生命的姿态。
“我们用自己的双手敲打出一串串的代码,让思维碰撞,让灵感飞翔,在程序中发现无穷的宝藏;我们是为了奖项而来吗?不,完成每一题时的快乐,才是我们永恒的追求。我们探索递归背后的波澜壮阔;我们寻找每一题背后的至终奥秘;我们发现那些变化万千之后的不变真理。这里是我们成长的地方,是我们享受乐趣、发掘智慧的地方。我们付出努力,在过程中体味那些神奇。我觉得,每一种思想背后都蕴藏着很多待人发掘的东西。只有自己去细细探索,在成功的那一刻才会感受到那些美丽。就像我刚接触递归时,几乎一头雾水;但现在,我大部分都领悟到了。明白那些奇妙的代码是怎样运行的真是非常快乐。我想,我永远不会忘记那一刻。”(2012级“Programmer家族”成员 曾卓尔)
开始,很多学生认为计算机很神秘,程序设计很难。我们让学生走进程序的内里,让他们明白,计算机只是“被操纵”的机器。计算机执行的每一段程序代码,其背后体现的是我们一直难以看见的思维方式。当我们通过递归函数、递归过程传递参数时,学生体味到其背后参数有序流动的“万马奔腾”和“波涛汹涌”。当他们看到简洁代码背后的数据“暗流涌动”和“波澜壮阔”时,学生的学习便进入了一个新的境界。
“我觉得,编程正是一种新思想的体现,我从它的身上学到了函数、过程、分类、规划的思想。它告诉我,一道题目会有很多种方法解决。但是,我们要追求一种完美、一种最佳的方法,这种完美主义的精神,正是我们需要的。”(2012级“Programmer家族”成员 余沛羲)
学完“过程与函数”,学生体会到面对一个问题,无论复杂、简单,都要有规划的意识,要有全局观念,学会从全局著手考虑问题,分析问题,构建数学模型,再自顶向下,将大问题分解为若干小问题,再由小问题逐步求精的模块化思想帮助我们更有条理、更清晰地写出程序,从而解决问题。这种规划的意识以及由大化小、从全局到局部、从局部到全局的思维方式,将会在学生的不断实践、体验、感悟中一点点积淀,内化为孩子们一生受用的思维习惯、思维品质,成为他们一生“穿不破”的才情。
理想,在茶馆式学习中传递
在完成程序设计语言的学习和基本算法的学习后,教师慢慢将舞台让给了每位学生。每位同学都是导师,他们为一道题,为一个算法,为一个特殊的数据结构的设计,为一个见解慷慨激昂。一次次头脑风暴,让孩子学会了更好地表达,一次次贡献着自己的思想。而他们也在这个过程学会了分享,感受这个团队的温暖。
“在这个集体中,我们不只是听老师讲课,而且是在老师的帮助下站上讲台,与其他同学分享自己独特的思想……在不断深入学习的过程中,我的想法改变了。我开始喜欢编程,开始享受解出一道题的兴奋。每一个程序都像是一个艺术品,都渗透着同学们的智慧和与众不同的思想。”(2012级“Programmer家族”成员 张北宜)
在“Programmer家族”,每位学生都有讲课任务,有义务主持一个知识点、一个问题的学习,他们要贡献自己的算法,贡献自己的思想。为此,他们必须付出更多的课外时间。开始的时候,这样的学术精神领袖往往是一两位学生。现在,每一次高级班的课,每位学生都要发表自己的观点,也乐于发表自己的观点。在这种茶馆式学习过程中,每一位学生都可以随时贡献自己的想法。这样的头脑风暴,不仅传递了每位学生的想法,也会激发每个人的思维。学生们在一次次的碰撞中,感受到分享的快乐,感受自己给予的快乐。团队里互相欣赏,彼此的理想也在传递、碰撞。
思维,在多元评价中获得解放
学生学习程序设计不为分数,不为奖金,不为名利,只为找寻人间的学问、人生的真谛和自然的奥秘。当国家规定五大学科竞赛不再成为大学保送的条件时,我们的社团活动丝毫未受到影响。我们用多样化的评价告诉团队里的每一位学生,他们每个人都是勤奋的、独特的。
为了帮助学生更好地走进课程的深处,我们设计了与众不同的多样化评价方法。
定期的实战训练少不了,更多的是个性化的创生性视角的评价。学生可以根据自己的情况设计一款小软件,并将算法分享给大家;也可以选定一个问题进行深入研究,以解题报告的形式在同学们中展示;还可以选择与生活相关的课题进行研究。如“生活中的最短路径”、“红绿灯的设计”、“国庆旅行线路”。
每年我们会有一次将课堂搬到自助餐厅的活动。在自助食品的选择中,深化对穷举、贪心、动态规划等算法的学习,然后撰写学习心得。“你为自己的人生设计过程序吗”等这类形式也少不了。多种形式的评价,促进了学生思维水平的提高,创新意识和学习能力悄然发生了变化,他们主动去寻找有意义的事情和研究方法,也在思考人生的规划。
生命,在“Programmer家族”中获得成长
来“Programmer家族”的学生,不仅仅是为了编程,也是為了分享程序设计的快乐,寻找学习伙伴,更是为了更好地完成生命的成长。
“我现在对编程非常喜爱,它是我在每周的学习轰炸中保存的一片绿荫。我们的团队意识也越来越强烈,和编程班同学在一起很亲切,很舒适。编程带给我的不仅是荣誉、光芒,还有朋友,和很多说不出的感受。每一次茅塞顿开,都是令人愉悦的时刻。在编程班,我最大的感受就是找到一种成长的感觉。”(2012级“Programmer家族”成员 孙茜茹)
通过对程序设计语言的学习,算法的学习,数据结构的学习,一个漂亮的程序,于他们更像一个艺术品。
随着学习的推进,编程的意义逐渐超越了代码本身。他们慢慢清楚,面对一个问题,无论复杂、简单,都要有规划的意识,要有全局的观念。通过构建数学模型,学生们从内心涌出对人类智慧的欣赏和向往。
随着思考的深入,编程的意义也逐渐超越了算法、数据结构本身。学生在信息科技的背后,思考数字计算机诞生的技术思想,思考人类发展的历程,思考人生的价值。
“我一接触编程,就喜欢编程。我喜欢编程,所以学习编程。学习了就更喜欢编程,死循环……”(2012级“Programmer家族”成员 杨乾澜)
“在编程班里,我们学习的不仅是深奥的知识,也是人生的哲理。在日常学习与程序训练之间寻求权衡,学会统筹;在每一次的挫折中学会坚持,学会反思;在一系列拦路虎中学会思考,学会请教……在无穷的精神收获面前,外在的荣誉只如同浮云,不值一提。”(2012级“Programmer家族”成员 朱冀尧)
社团学生各自表达着对程序设计的感受。他们的表情很丰富、很完整,诉说着“Programmer家族”社团的教育生态,折射着“Programmer家族”社团和学校长久坚持的教育教学的精神品格、价值理想和儿童立场。
18年,寒冬酷暑,学生在“Programmer家族”社团的学习生活五彩纷呈。一批批优秀学子从这里走向人生的精彩殿堂。孩子们的精彩表现也成就并激发了教师。他们共同成就了18岁的“Programmer家族”社团。他们的意志、才情、理想在这里绽放……我们也更明白:一个真正能够站在巅峰的人,一定是源自于内心的热爱。真正到达顶峰的他们,收获的不仅是程序设计的基础知识,更有规划的能力、创新的精神、团队协作的意识、热爱生活的人格。这是我们追求的科学教育的价值所在,也是我们儿童立场理念下的计算机科学教育的朴素诠释。
(作者单位:江苏淮阴中学)