这几年随着出国留学人员的增多,越来越多的人开始关注各种对申请美国大学有帮助的竞赛,大家都希望能够在竞赛中获奖,从而敲开常青藤名校的大门。但真正能够让这些名校认可的竞赛并不多,况且对于大部分中国学生来说,美国的竞赛没有资格参加,而国内的很多竞赛美国学校又不认可。在这种情形下,很多人开始关注到了USACO竞赛,那么USACO到底是什么呢?
USACO简介
USACO的全称是USA Computing Olympiad,即美国计算机奥林匹克竞赛。这么一说就感觉比较熟悉了吧,相信大部分的同学一定都听说过奥林匹克竞赛,奥林匹克包括数学,物理,化学,生物和信息学, 而USACO就是美国的信息学奥林匹克竞赛,相当于国内的NOIP比赛,都是为 IOI(国际奥林匹克竞赛) 选拔人才。
国内的 NOIP 比赛主要以线下组织为主,基本上都是以学校为单位进行组织的。而USACO则是以线上为主,学生可以直接在网上报名,并在线进行解题。USACO在每年的四个周末举办他们主要的比赛,从周五到周一,在这个时间段内学生可以选择在任何时间开始比赛,通常来说每次竞赛的时间为4个小时,但有时候是3个小时或者5个小时。
竞赛主要衡量算法和运用两大方面的技能,旨在锻炼学生用计算机编程解决问题的能力。USACO比赛分成铜牌,银牌,金牌和白金 四个等级,一旦学生在较低等级的比赛中获得足够高的分数后就可以进入更高等级的组别。
USACO的含金量
USACO 竞赛的成绩对申请美国大学是非常有帮助的,以下是国外著名网站Quora上的回答,可以看到,大家对USACO申请美国大学的作用还是给予了非常肯定的回答的。
下图中在罗列对申请美国大学有帮助的活动时,第一项就强调了USACO。
最后这张给出了USACO等级对应的数学奥林匹克竞赛等级,很多偏理科的大学都会要求AIME(美国高中数学邀请赛)成绩,如果你有对应的USACO成绩,大学也是认可的。
目前,USACO在美国非常热衷,但是国内参与的人员还比较少,以2018年公布的数据为例,总共有65个国家3048 名学生参加竞赛,其中来自中国的学生只有280 人。相信随着STEM教育理念,及编程低龄化,普及化的发展,国内USACO 的参加人数和热度会越来越高。
为何要参加USACO竞赛
最近两年,国内的编程教育也在蓬勃发展,很多学生从小学开始已经学习编程了。但市面上的大部分机构所教授的编程,都是偏向图形化,游戏化的编程,这类编程只能让学生了解简单的概念,对于锻炼学生解决问题能力帮助不大。USACO 竞赛的题目都是以衡量学生解决问题的能力为标准的,题目偏向于算法和实际应用,学生在解决问题的过程中,需要整合所有必备的知识,最终以编程的方式控制电脑给出解答,这个过程能够有效的提升学生的问题解决能力。总的来说,面向USACO竞赛的编程学习会建立如下优势:
能力证明,全球认可
信息学作为五大奥林匹克竞赛之一,其能力是被全球认可的,与之配套的知名国际竞赛体系也非常完善。最知名的国际竞赛包括 IOI(国际信息学奥林匹克竞赛)和 ICPC(国际大学生程序设计竞赛),而USACO是美国国家级别的竞赛,其目的就是要为 IOI 和 ICPC 输送人才,虽然很多国家都有类似的国内竞赛,但相比而言,USACO 是得到美国知名大学认可的,更有含金量。思维训练和能力提升
接受一个编程项目,独立思考相关知识点(数学逻辑、数据结构、算法、计算机体系结构、英语理解等),运用各种能力(计算思维、资料收集、刻意练习)设计并实现,验证正确性,反复迭代修正。整个流程在普通的学制教育中往往要到硕博士才有训练机会,而参加竞赛的选手从小就在以这种方式训练着思维,对于专注力和独立解决问题的能力提升非常有帮助。
同时,参加高阶信息学竞赛的往往是最优秀的孩子,他们一起交流、学习、讨论和竞争会潜移默化地影响每个孩子的能力、习惯和学习方式。
而且竞赛的打分,不仅仅是解决问题,还要考量解决的时间效率和空间效率。不同解决策略的得分不一样。这种评价方式,培训和锻炼的就是学生的效率意识和全局规划意识。对升学工作的帮助
在USACO竞赛中证明自己的问题解决能力和学习能力,会对今后的升学和工作都有很大的帮助。现在很多互联网公司内,特别是偏向于人工智能的技术公司,都在大量吸纳竞赛人才,因为这些人非常善于解决核心问题,例如搜狗的CEO王小川(IOI 1996年金牌),旷视科技CTO, 人工智能学术界陈启峰(IOI 2007金牌),陈丹琦(IOI 2008金牌),周源(IOI 2005金牌)等,信息学竞赛对于未来想从事计算机相关工作的人有很大的提升作用。人工智能的核心就是算法。
竞赛资讯
USACO 什么时候比赛?
USACO 一般是每年12 月份开始进行,会选择四个周末举办主要的比赛,从周五到周一,在这个时间段内学生可以选择在任何时间比赛,通常来说每次竞赛的时间为4个小时,但有时候是3个小时或者5个小时
如何报名参加比赛?
在 www.usaco.org 注册一个免费账户(只需要有邮箱就能注册),注册时不需要选定特定的比赛日期,只要有了这个账户,可以在比赛开始后随时参与竞赛。
需要为USACO准备什么?
官网上有一个训练题库(https://train.usaco.org),可以登陆这个题库并进行注册,这个网站和USACO官网的注册是分开的,需要独立注册,可以这上面进行训练。同时,在官网上还能查看历年真题(http://usaco.org/index.php?page=contests),可以做一下这些题目,对题目的类型有一个基本的了解。当然,上面提到的这些都是考前的准备,但USACO的相关编程知识,还是要找一个老师好好学习下,掌握了算法和编程基础知识,才有可能在竞赛中获奖。
参加USACO需要付费吗?
注意,USACO是一个完全免费的竞赛,只需要在其官网注册账号即可,任何因为参与竞赛向你收费的机构都是在骗人。
竞赛如何颁奖?
竞赛会根据你的成绩来颁发对应的认证,主要有四种等级:铜牌,银牌,金牌,白金。 获得相应证书的学生名单会被公布在竞赛结果中,把这些成就写在申请书或者简历中会非常有帮助。
参赛的流程是怎么样的?
在官网注册账号后,当比赛开始后,可以在指定时间内的任何时候登陆到官网上开始比赛,比赛的过程中,你可以查询任何资料,从这点足以看出,考核的内容不是死记硬背,而是真正的能力。如果你在竞赛中所有问题都取得了非常完美的分数,你将立刻就能得到升级的反馈,否则可能需要等竞赛周结束后,根据平均成绩公布哪些人通过了考核。 由于每年会安排四个周末进行考核,所以你就有了四次竞赛机会,如果你的实力已经到位了,那就可以持续升级。但每个级别的难度差异很大,一般都需要很长时间的练习才能进入到下一个级别。
USACO使用什么编程语言?
USACO 接受多种语言的解决方案,包括 C++,C,Java 和 Python。由于Java 和 Python 相比于 C++/C 语言运行的会慢一些,所以这两种语言所允许的运行时间是 C++ 和 C 的两倍。 相比于国内 NOIP 只接受 C++ 作为考试语言,USACO 提供了更加灵活的支持,使得比较喜欢 Java 和 Python 的人也有机会参与到算法竞赛中。