徐荣琛:CSP高分,助我保研清华
CCF CSP认证自2014年开展以来,已7载有余,这期间有400多所单位的学生和人员参加了CSP认证,累计参加人数逾14万人次,成立了156所高校认证点,受到越来越多的高校、企业以及大学生的关注。
今年,我们将陆续推出一批高校CSP/CCSP优秀学子的故事,他们当中有的继续深造读研,有的就职名企,有的获得过CCSP金奖,有的CSP成绩优异,希望这些分享文章,能够帮助更多的同学提升软件编程能力,取得更大的进步。本期推出的徐荣琛同学毕业于哈尔滨工程大学。哈尔滨工程大学作为CSP认证点高校,是CCF CSP认证卓越单位。
徐荣琛 哈尔滨工程大学计算机科学与技术专业2019届学生。指导老师:高伟。
第10次CSP认证成绩为400分,2018年CCSP竞赛获得全国银奖。目前在清华大学攻读软件工程硕士学位,主要研究方向是程序分析验证,以第一作者身份在软件工程的国际顶级会议ESEC/FSE 2020(CCF-A类)上发表论文一篇。
专业学习的两个要点
刚进入学校的时候,我并没有什么编程经验,选择计算机专业是完全出于自己的兴趣。回顾本科四年的求学经历,我觉得有两点非常重要:专业知识学习和编程能力的锻炼。专业知识学习是打基础的工作,相对扎实的专业知识让我取得了较好的学习成绩,当然也使后续的推免保送受益。其中,最重要的一点是建立自己对整个专业的知识体系的理解,发展自己的学科理解能力,这样遇到一个崭新的问题时,就可以自己独立思考分析解决。编程能力是计算机学科需要的基本能力,我自己的编程能力是通过参加大量的比赛(其中也包括CSP和CCSP)培养起来的,而且算法方面的学习和训练也让我的思维能力有了显著提升,对现在以及未来的科研工作有非常大的帮助。
CSP学习的两个能力
个人理解CSP区别于其他的传统算法竞赛(例如ACM-ICPC)的一个主要特征是参与门槛。由于ACM-ICPC这样的竞赛属性,使得绝大多数同学是没有机会接触和参与的,而CSP可以为绝大多数同学提供一个锻炼编码能力和培养算法思维的机会,这是一个CS专业大学生必须具备的能力,也是取得好成绩的必由之路。
所谓的编码能力就是把脑海中的算法思路准确无误地转化为程序代码的能力,当然也包括一些调试技巧。编码能力的培养没有捷径,最有效的还是编写足够量的代码,平时的课程项目就是一个很好的练手方式,自己可以在日常课程项目中尝试增加大作业的复杂度和困难度来训练自己的编码能力,当然也可以在在线评测系统中找一些 “模拟题”(逻辑复杂但是算法要求不高,可能需要数百行的代码实现的题目)来进行训练。
算法思维能力训练是备战CSP后期(例如想要取得300+分)的重点内容,传统的工程项目对此帮助可能会相对有限,思维能力的提升可以通过算法学习、算法练习取得。算法学习不能仅仅停留在课堂,需要更多地从网络中进行自主学习,算法练习可以在各种在线评测系统上进行,除了大家熟知的Leetcode,我还推荐到一些在线的算法比赛平台(如比较有名的Codeforces)上练习,你可以和来自世界各地的同行们同台竞技相互切磋,其中我比较喜欢AtCoder的题目,这些题目往往需要的代码量很短,但仍可以保持一个较高的思维难度,让自己更加专注于问题的思考。
总之,我认为不管未来个人的发展是偏重开发还是研究,只要干的是和计算机科学相关的专业,编程能力就必不可少,希望学弟学妹们都可以利用好CSP这样的平台,抓住大学四年的时间为自己将来的发展打下一个好的基础。
关于CSP和CCSP
CSP注重考查计算机算法、编程等基础能力,正逐步成为业内评测软件能力的基本标准。在CSP的基础上,CCF于2016年创立了面向大学生的年度竞赛CCSP(大学生计算机系统与程序设计竞赛),至今已成功举办5次,参加CCSP的选手均为CSP成绩优秀者,CCSP更注重考查计算机系统能力,选拔的是顶尖人才。