许明杰:CSP助力保研入北航
CCF CSP认证自2014年开展以来,已7载有余,这期间有400多所单位的学生和人员参加了CSP认证,累计参加人数逾14万人次,成立了156所高校认证点,受到越来越多的高校、企业以及大学生的关注。
今年,我们将陆续推出一批高校CSP/CCSP优秀学子的故事,他们当中有的继续深造读研,有的就职名企,有的获得过CCSP金奖,有的CSP成绩优异,希望这些分享文章,能够帮助更多的同学提升软件编程能力,取得更大的进步。本期推出的许明杰同学毕业于哈尔滨工程大学。哈尔滨工程大学作为CSP认证点高校,是CCF CSP认证卓越单位。
许明杰 哈尔滨工程大学计算机科学与技术学院 2017 级本科生。指导老师:高伟。第15次CSP认证的成绩为420分,2019CCSP竞赛获得铜奖。2020年CCF优秀大学生奖。目前已经推免至北京航空航天大学计算机学院攻读硕士学位。曾获国家奖学金。
读本科期间
在本科阶段的学习过程中,CSP认证对我产生了重要的影响。我曾学习了搜索、贪心、动态规划、图论、数论等核心的算法知识以及线段树、树状数组等数据结构知识,而这些知识也是CSP认证的重要考查点。
为了能够透彻理解这些知识,我在在线评测网站(Online Judge)上练习了大量的编程题目。这些题目形式多样,并不能简单地套用经典算法,而是需要做题者从问题本身入手,一步步深挖题目内蕴含的关系、线索等等,并逐渐形成自己的解题思路。换句话说,这些题目的本质,可以认为是“思维+算法+编程”。某种具体的经典算法或数据结构,更多地用于解决大问题中的一个或多个小问题。通过这种方式的训练,我的思维能力、问题分析能力以及对于知识的迁移运用能力都得到了不同程度的提升。
此外,CSP认证还会考察考生编写复杂程序(但并不包含复杂算法)的能力,对应的就是每次认证的第三题。借助算法题目的大量练习,我的编程能力也得到了潜移默化的提升。这些都帮助了我在CSP认证以及ACM-ICPC等算法竞赛中取得了不错的成绩。从计算机专业的学习上来看,编程能力的提升,让我可以得心应手地完成各种专业实验和专业实习,面对需要编码(coding)的环节,也可以毫不费力地完成。
参加推免夏令营
各大高校的计算机专业已经越来越重视学生编程能力的培养,有的已将编程作为考核内容之一。在我参加北航计算机学院的推免夏令营中,考核分为编程考核(100分)和面试考核(200分)。其中,因我的CSP证成绩(420 分)优异,北航直接将其作为最终的编程考核成绩。可以说,CSP助我北航求学路。
读研期间
在攻读硕士学位期间,我的研究方向是计算机视觉,需要大量的实验。在科研中,必不可少的就是大量阅读研究方向内的相关论文,除了理解论文内容之外,还需要将论文中涉及到的模型和算法,通过编程的方式复现出来,并且尽可能得到论文中记载的实验结果。另外,当自己有一些新颖的思路(idea)时,也需要通过编程的方式快速实现出来,这样才可以验证自己的想法是否正确。因此,无论是复现论文还是实现自己的科研思路,都很考验自己的编程能力。
建议
结合自己的经验,我的建议如下:
1.不要为了应试而去备考,而是在平时就充分重视算法和数据结构能力的培养。
2.如果想要学习算法和数据结构的相关知识并加以运用的话,除了课内的教材之外,推荐刘汝佳编著的《算法竞赛入门经典》以及李煜东编著的《算法竞赛进阶指南》。
3.如果仅仅进行知识的学习而不去实践,是远远不够的。对于算法和编程能力的训练,推荐大家到一些著名的在线评测网站去进行题目的练习,例如:(1)CSP 官网的历年题目、(2)Codeforces(http://codeforces.com/),当然其他的平台也是很不错的。重点并不是要挑选一个最好的平台,而是需要根据题目的分类(搜索、贪心、动态规划、图论、数论等)有针对性地进行训练。
4.训练的初期你可能需要借助题解,但是当训练到一定程度的时候,一定要尽量避免依赖题解,而是要尽力去独立思考,实在想不出来了再去看题解。另外,在训练过程中一定要注重思维能力的锻炼。
关于CSP和CCSP
CSP注重考查计算机算法、编程等基础能力,正逐步成为业内评测软件能力的基本标准。在CSP的基础上,CCF于2016年开创了面向大学生的年度竞赛CCSP(大学生计算机系统与程序设计竞赛),至今已成功举办5次,参加CCSP的选手均为CSP成绩优秀者,CCSP更注重考查计算机系统能力,选拔的是顶尖人才。