写给想参加ACM的大一,大二的同学

写给想参加ACM的大一,大二的同学

写给想参加ACM的大一,大二的同学



        或许有很多同学没有听过ACM竞赛,或许还有一些同学听过ACM,但是却觉得这个比赛离自己很遥远,不知道怎么参加这个比赛,
或许还有一些同学想参加这个比赛,却不知道如何提高自己,进入校队.

        对此,我列出了下面几个问题及回答,希望能让更多的同学找到方向.

一.什么是ACM竞赛?
        ACM/ICPC(国际大学生程序设计竞赛)是由国际计算机界历史悠久、颇具权威性的组织ACM(美国计算机协会)主办和IBM赞助的,世界上公认的规模最大、水平最高的国际大学生程序设计竞赛。
        大赛每年主办一次,在各大洲设立若干赛点,各赛点的NO.1队进入国际决赛(如果No.1已经在其他赛点出线,则No.2队出线,依此类推)。
        ACM现在的发展非常快,参赛的学校已经达到了2000所左右,参赛队伍达到5000队以上.
        由于Sun公司积极赞助这个比赛,他们已经开始和教育部协商,顺利的话,不久ACM将成为教育部承认和支持的一个比赛.
        中国现有四个赛点.
        2007年的赛点为:北京,吉林,成都,南京.


二.为什么要参加ACM?
         1.因为实际学习的需要.
                Google中国区总裁李开复在他的<给中国大学生的三封信>中提到,一个合适的计算机系本科生,应该在毕业的时候有至少3万行的代码量.一个优秀的本科生,在毕业的时候应该有至少5万行的代码量.
                而实际在大学教学是不可能满足这样的要求的.我本人经历了北师大的计算机系课程,我发现师大的计算机系的本科课程中需要编程的课程为:C语言,面向对象程序设计,数据结构,编译原理,汇编语言,操作系统,中文信息处理(选修课).这些课程每门课的所有编程作业加起来代码不过1000行/门,所以如果你只是完成老师布置的作业的话,在毕业的时候你的代码量将不足1万行.而这,将直接造成你的编程能力严重不足!(需要数据的同学可以来找我,我将当面提供我以上本科课程的作业代码给你看看,让你亲眼看看是不是只有那么点!)
         2.因为ACM比赛很有趣.
                每一道ACM比赛题目都有一个很有趣的故事背景,很多故事背景是与实际生活相关,所以做起来很有成就感,也很有趣.
         3.可以认识很多志同道合的朋友. 
                ACM校队以及比赛实际上提供了一个平台,使广大热爱编程和算法的同学可以相互交流和学习.我在参加ACM的训练后,不但认识了校内的很多的编程高手,而且还通过网上的比赛平台,和很多学校的ACM队员都成为了朋友。这些朋友,由于大多数都有较强的能力,所以在他们毕业进入象Google, Baidu, Sina, Yahoo之后,你常常就可以通过中国特色的人脉关系,从他们那里获得很多大公司的实习资格的推荐。(这相当于通过了淘汰率最高的网申阶段)
                现在的ACM校队成员已经有不少在毕业后进入了Baidu, Sina, Yahoo, 摩根斯坦利,华为,摩托罗拉,其他的则选择了继续读研。还没有见到哪个发展不好的,呵呵。
         4.保研可以加分
                经过一到两年的训练,大多数ACM选手将具有获得铜奖的能力,而获铜奖的同学可以在保研中获得3分的加分。在07年,保研算分规则是四年的所有成绩求积点平均,再乘以80%,所以加3分相当于大学阶段的所有课程成绩加了 3/0.8=3.75分。如果你去向大四已经保完研的师兄师姐了解一下的话,就知道这是相当可观的。
         5.考研复试会考查相关题目
                现在了解到包括北师大,北京航空航天大学,中科院在研究生复试中都会出有关ACM竞赛的题目,以考查学生的算法功底。
         6.参加IT界各大公司的比赛以及所有涉及算法的比赛
                现在Baidu, Google每年都会举办程序设计比赛,而今年的Baidu之星程序设计比赛的出题总负责人就是清华大学的原ACM比赛教练。有ACM功底的同学很容易在此类比赛中获奖,并且可以因此获得直接面试的机会以及丰厚的奖品。
                TopCoder公司( www.topcoder.com)每周都会举行一些个人赛,第一名将获得至少500美元的奖金。
        7.参加全国大学生数学建模比赛
                数学建模竞赛同样需要算法和编程,参加过ACM比赛的同学会发现解决数学建模问题将变得很容易。我就是这样没有针对数学建模竞赛做过一天的准备,靠ACM竞赛训练出来的编程水平获得了数学建模的北京市一等奖。ACM校队另一位成员杜晓宇也是同样地在北师大的05年的数学建模竞赛上获特等奖,并代表北师大去新加坡参加数学建模比赛!
         8.提高英语阅读能力
                因为是全球性的比赛,所以ACM的比赛题目是全英文,这对于大多数进入大学后就把英语放一边的同学来说,是一个绝好的训练阅读能力的机会。
        
三.如何才能进入北师大校队?
        北师大每年四月会举行全校范围内的程序设计竞赛,在竞赛中获得较好成绩的同学将被选拔进入ACM竞赛的校队参与训练。
        如果有同学认为自己已经有进入校队的实力,可以直接联系我,经过考查,可以直接进入校队训练。

四.如果才能提高自己,以便在校内的程序设计中获得较好成绩?
        首先你必须学习好C语言和数据结构,这是编程的基础。由于信息学院的课程安排,数据结构在大一下学期才上。建议有能力的同学在大一上学期就开始自学数据结构,这样你就可以在大一下学期开始做ACM题目。
        北师大有自己的ACM训练系统,网址为: http://acm.bnu.edu.cn ,上面的题目从1001号开始有专门为ACM新手准备的题目。相信大部分具有C语言基础的同学可以通过这几道题来熟悉ACM比赛的各种特点。在完成了这几道题后,1005题目的最后给出了继续练习的题目。
        在完成了所有这些上边提到的练习题后,你可以试试完成这个训练系统上的其它题目,需要注意的是题目并不是按难度排序的,所以如果有一道题不会做那么跳过先不做它即可。
        按照以往的经验,在此训练系统上完成30道以上题目的同学一般都会在4月份的校内程序设计竞赛中取得较好成绩。
        希望大家能够重视这个过程,即使最后没能进入校队,但是这样参与也已经使你的编程能力得到很大的提高了,你本身已经收获了很多。

五.更多的学习资源
        北大的ACM训练系统: http://acm.pku.edu.cn ,现在为国内使用的人数最多的训练系统。
        北师大ACM蛋蛋网讨论区:  http://www.oiegg.com/forumdisplay.php?fid=407&frameon=no, 可以从"师大社区"->"社团群体"->"ACM程序设计"中进入。ACM校队成员常常在这里讨论,你可以在这里提出你的问题.

猜你喜欢

转载自oywl2008.iteye.com/blog/2415858