南北编程小将携手挑战现实难题——记2014编程之美挑战赛冠军孙祥彦和王杉
(2014-06-04 17:35:11)
标签:
2014编程之美冠军微软亚洲研究院 |
分类: 人才 |
编者按:2014编程之美挑战赛冠军是来自一南一北的小将:孙祥彦(复旦大学)、王杉(清华大学)。在初赛和复赛,两人巧合选择了寓教于乐、注重逆向算法的CodeHunt平台;决赛中,二人组队攻下预测空气质量的难题。这背后还有什么有趣故事呢?
5月21日,微软2014编程之美挑战赛完美落幕。来自复旦大学和清华大学的本科生孙祥彦和王杉在历经多轮挑战后,以其出色的编程能力和运行结果的准确度问鼎冠军。
一南一北的两位小将在地域上看似没有任何交集,但却在编程这件事上默契十足。孙祥彦今年大四,热爱代码,从小学四、五年级就开始编程,聊起编程,总能侃侃而谈;王杉今年大三,比较内敛,不像常见的北京人那么爱侃,但在代码、算法面前他却能偶尔收起羞涩。
今年的编程之美比赛有两个比赛平台:一个与往年的比赛平台类似,侧重算法;另一个却是今年别出心裁的尝试,引入寓赛于乐、侧重考察选手们的逆向算法实践能力的CodeHunt平台。出于不走寻常路、挑战自我的考量,在赛事初期,孙祥彦和王杉不约而同地选择了Code Hunt,像玩游戏一样有趣、好玩是他们对该平台最深的印象。
Code Hunt是基于Microsoft Azure、由微软研究院开发的在线编程与评测系统。多元化的测试与评价体系既为来自不同背景、拥有不同技术偏好与擅长领域的参赛者提供充分展现自身能力与特长的平台,也希望能够培养参赛者双向思维的能力。
“我是被比赛的多样化吸引来参赛的。在初赛和复赛的时候,它有两个不一样的平台,我出于好奇就选择了Code Hunt。现在回想一下,这个平台其实特别有趣。”孙彦祥笑谈道。
在谈到自己过关斩将的秘诀时,孙祥彦总结了一个小贴士分享给大家。“比赛之前,要好好了解比赛规则”。他说道:“学计算机的人,很多时候不喜欢看很长的文档,但就是这个习惯,很可能会令你错失一些机会。比如,在Code Hunt平台的比赛规则中,有一条计分规则是每道题第一个做完的人会有加分。复赛还是比较紧张的,大家分数都很接近,一不小心可能就落下了。当时我就打乱顺序做题,加了一点分。”王杉也同样注意到了这一点。
的确,只有了解游戏规则,才能更好地玩游戏。
预测空气质量,挑战频现
5月20号,50多名经过多轮选拔的决赛选手抵京展开终极较量。大赛组委会采取了两人组队的决赛形式,并提供了两道题目让选手选择——一道是利用扬州的真实数据真实场景,鼓励倡导参赛选手开发针对民生方面的应用与服务,
怀着触摸现实挑战的想法,两人再次不约而同地瞄准了“城市计算”这道题,然而比赛过程却险象环生。
要实现对空气质量的预测,需要兼顾到现实世界中的多种影响因素,如温度,气压,风速等。在建模的过程中,一个因素考虑的不周详都有可能导致最终的结果不尽如人意。
决赛持续12小时,从清晨的早10点到月上梢头的晚10点。而下午三点意味着比赛时间已经流逝了差不多一半。
他们回想道:“当时我们就想,不管怎么样,我们至少要跑出一个结果。”
最终得到了还算满意的结果,但不料在第二天的展示环节,所采用的方法却又屡屡被在场的评委提问质疑。最后,经过与评委的反复沟通,终于获得肯定。
两人在算法和编码方面的各执一长,也对他们俩的夺冠起到了重要作用。“其实我们两个还是很合适的,王杉相对对算法比较了解,而我的编码调试能力更强一些,很互补。他可以给予很多算法上的帮助,而我可以很快把它实现出来。”孙祥彦补充道。
本次比赛的评委郑宇博士这样评价他们最后的作品——“这两个同学提出的方法考虑了气象条件和周边空气质量监测站点的各种信息,并利用SVM来做一个循序渐进的推断。这个方法实际上是同时考虑了空气质量在时序和空间相上的变化,因此取得了比其他同学更高的预测精度。方法虽然并不复杂,但思维清晰、敏锐,准确捕捉到了问题的关键,小有庖丁解牛的韵味。”
郑宇还谈了谈本次大赛选择空气质量作为题目的三大缘由,他说道:“首先,在以往的各种程序设计大赛中,同学们遇到的题目通常都预先存在一个唯一的最优解,题目留给同学们设计自己方法的空间较小。本次大赛希望区别于其他的程序设计大赛,考察同学们解决不确定性问题的能力。空气质量预测是个很新颖的课题,暂时没有成熟的解法,并且不存在一个唯一的最优解法。这样会留给学们更多的思考空间,激发他们的创作力和想象潜能。其次,在大数据时代,本次大赛也想考察同学们对多种数据源的分析和处理能力。让他们小试牛刀,感受大数据的奥妙。最后,空气质量是当前大家关注的热点,关系到民生。这个题目具备一定的公益性,能加强大家对空气质量现状的了解,并唤起同学们及更广泛群体对环保的关注。”
不同编程故事,一样的陶醉与热爱
孙祥彦今年大四,却与编程有着颇深的渊源。
小学一年级的时候,爸爸给家里买了一台电脑,孙彦祥开始接触玩电脑。到了小学四、五年级,有老师带他去参加了小学信息学奥赛。虽然这只是县里面的一般比赛,当时用的只是计算机Basic语言,但这让编程的种子在他内心萌芽。后来,从初中到高中,即使学业再忙碌,他都没有放弃过编程这项爱好,一直坚持参加信息学竞赛。他说:“高中学习压力大,但每天晚上还是会去训练2、3个小时。直到后来到了复旦,加入ACM队,泡在编程上的时间就更多了。 ”
除了爱参加程序竞赛,一有闲暇时间,孙祥彦还特别喜欢去做一些开源项目。似乎对他而言,做开源项目已是极大的娱乐——“看着一行一行的枯燥无趣的代码,换成了那些很有趣的应用或产品,内心特有成就感。”
而来自清华大学的王杉跟孙祥彦的编程之路走得不太一样。
在2014编程之美挑战赛前,王杉专注在学校专业的计算机知识修习上,没有参加过任何编程比赛,微软的平台成为了他的第一个试金石。他谈道:“我一直都向往能够有机会来微软实习,今年一看到编程之美的比赛信息就毫不犹豫地报名了。”虽然此前没有参加过编程比赛,但在学习中所掌握的扎实的代码基础,让王杉在这次比赛中一路畅行。
成长的故事炯然不同,但对编程的喜爱却十分相似。一场比赛让两人与万名参赛者聚在一起并肩作战,并脱颖而出。孙祥彦视这为一段美妙的经历,王杉也十分激动自己进入微软实习的愿望终于要实现了。大赛圆满落幕,但关于编程的故事不会止息。下一年,又会有怎样的故事上演呢?敬请期待。
____________________________________________________________________________
相关阅读
美在丹棱街5号——记第二届微软“编程之美全国挑战赛”冠军李雪
欢迎关注
微软亚洲研究院人人网主页:http://page.renren.com/600674137
微软亚洲研究院微博:http://t.sina.com.cn/msra