毕业季,南科大一位热爱弹奏钢琴、尤克里里的女“程序员”收到了芝加哥大学、威斯康星大学麦迪逊分校、加州大学圣塔芭芭拉分校等六个计算机全额奖学金直博offer,加州大学圣地亚哥分校、布朗大学等五个名校的硕士offer。“收割”了11个升学offer的她,被同学们称为“offer收割机”。而在她自己眼里,她是个代码“自动机”。
她,就是树德书院级计算机科学与工程系(简称“计算机系”)本科生龚玥。
“邂逅”编程得遇良师探索人生全局最优解
龚玥对计算机产生兴趣源于一个偶然。高考后的暑假,龚玥在图书馆随手借了一本C语言的编程书。“本来只是好奇想大致了解一下,没想到我竟因此对编程产生了浓厚兴趣。”从那个暑假开始,龚玥便着了魔般地从早学到晚,经常学到凌晨一点,她笑称“感觉准备高考也没这么努力过”。进入南科大后,龚玥从一开始便积极了解计算机系的情况,为正式选专业做充分准备。“那时座无虚席的python入门课,计算机协会开的五花八门的课程,还有那些‘用白纸写汇编实现递归’的美好时光,历历在目。”这一切都让龚玥对计算机的兴趣越来越浓,选择计算机专业成为必然。
图书馆学习
龚玥的学术导师是计算机系助理教授唐博。她和唐博老师相识在数据结构课堂上。“那时,这位要求高授课质量也很高的老师就给我留下了很深刻的印象。”后来选择专业导师的时候,她去找唐博聊。“唐老师很详细地把组里每个课题都向我介绍了一遍,我感受到他对每个课题的热情和对科研的热爱。”她最终选择加入了唐博课题组。后来,唐博在科研和学业上给予了她很多指导,帮她参谋规划未来的道路,尤其是在申请季时,唐博给了她很多指导,“每当我迷茫的时候,都会去和唐博老师聊聊。”龚玥说。
她的书院导师是计算机系副教授骆宗伟。“刚进入南科大时,对学校和计算机系都不那么熟悉,骆老师帮助了我很多。”龚玥表示。骆宗伟在每周三组织导师午餐,和同学们一起吃午餐,聆听大家生活中的趣事或者困惑。龚玥第一次参观骆宗伟的实验室了解到许多新奇的设备,让她对计算机领域更为好奇。“很感谢骆老师给予我们的关怀。”龚玥说。
龚玥一开始对将来的打算是本科毕业去就业,“我觉得写项目做工程是一件非常有意思也很有成就感的事情。”后来随着学识的增多和视野的开阔,她的想法渐渐改变了,“我逐渐意识到自己本科学习的东西还是太浅,同时我也为计算机技术日新月异的发展感到激动。因此,我想再给自己一段时间去专心学习探索,希望有一天自己也能成为站在前沿创造工具的人。”
龚玥结合专业知识分享了对大学生活的理解。在学习人工智能课解CARP问题时,如果用“贪心算法”搜索,最后会陷入局部极小值;而跳出局部极小值的方法是以一定概率给较差的解一个机会。她说:“也许我们的大学生活也是这样,如果用‘贪心算法’来过大学四年,每一步都去争取当前最优的选项,也许可以得到局部最优,但也可能就错过了收获人生‘全局最优解’的机会。要相信你遇到的每一个挫折,每一个不如意,都可能是在把你引向全局最优解。”
暑研获“大牛”肯定把“后开”当成艺术
夏季小学期参加境外交流是龚玥成为“offer收割机”的“神助攻”。每年的夏季小学期,南科大都会为同学们创造在国内外学习、实践、科研等机会。不少南科大学子选择在夏季小学期参加特色国际交流项目,感受多元文化,开阔国际视野。
UCI课题组合影
龚玥非常珍惜每年的夏季小学期,她觉得这是非常难得的能与“大牛”教授交流,挑战自己的机会。她曾参加加州大学尔湾分校(UCI)暑期交流项目。在UCI,她在数据库领域奠基人之一MichaelCarey教授课题组参与开源数据库ApacheAsterixDB的研发,在一个前沿的数据库系统上做继续改进。参与这个项目最困难的地方是学习该系统的源码。
该系统已经开发十年了,拥有庞大的代码量,而当时的龚玥还并没有真正的系统编程经验,所以在项目开始的时候感觉“压力山大”。幸运的是,龚玥在UCI遇到了跟她同组的博士生学长。学长专业知识丰富又非常有耐心的指导,让她刚进入实验室就能很快上手,省去了很多磨合的时间,并很快地熟悉了系统,进入了状态。经过两个半月的努力,她完成了一个很完整的查询优化的工作,完成了一篇技术报告,获得了MichaelCarey教授的高度认可。教授为她写了推荐信,并邀请她前往UCI读博。这次的境外科研交流经历和成果,也为她在毕业季申请境外留学提供了强大助力。
除了暑期积极参加境外交流提升科研能力,龚玥也积极参加实习实践。在实习的过程中,她学到了很多新的知识和技术,也了解到了工业界中软件开发的过程。她参与“南科大-腾讯”联合技术实践项目,所在课题组获得“优秀课题组”称号。她目前是腾讯广告后台开发(简称“后开”)实习生,负责广告管理系统的开发。从一开始的需求和功能设计,到开发过程中的版本控制,单元测试,再到发布时的持续集成和代码的持续交付和部署……“
实习时,几乎把我在软件工程课上学到的所有知识实践了一遍。”龚玥感慨道,“以前自己写代码的时候,可能是功能实现了就结束了。但是在公司写代码,需要考虑更多的情况,代码写好之后通常需要自己去写一些单元测试,同时也要考虑代码的可维护性。有的时候即使是一个很简单的需求,想要写得完美也没有那么轻松。”她表示,对于后台开发,“可能真的就是把开发当作一种艺术去完成才行”。她希望自己以后无论在哪里写什么样的代码,都始终保持对于代码质量的高要求。
“造轮子”打牢基础“清单+热身”规划时间
针对计算机系的专业学习,龚玥有不少“干货”分享:首先,她认为打好基础很重要。计算机的各种基础课(数据结构、计网、计组等等)虽然不像教写web、app的课那么有趣,但是确实是基石。她说:“如果这些基础不打牢,很难走得稳走得远。这些基础的掌握程度也是我们计算机科班学生区别于其他人的关键。”这些基础的东西是无法速成的,必须要自己一点点吃透弄懂。其次,学习的过程中一定要“知其然知其所以然”。很多时候会遇到时间紧任务重,但不能只着眼于做完眼前的任务,在有时间的时候再把原理和基础知识摸透,“不能仅停留在交完一个作业的层面”,这样才能真正掌握一个知识点和原理。要怀抱一颗乐于“造轮子”的心态写代码,“造轮子”即别人已经做好的东西,自己再重新下功夫完成一遍。“不要急于求成,当你造过‘轮子’,才会明白高级的框架是怎么运行,学起来也会更有效率。”龚玥说。
学习编程的路上,英文的学习是一块难啃的硬骨头。龚玥考英语之路还算顺利,只专门准备了一个月的时间,第二次GRE和托福的成绩就已达到了和。龚玥认为,英语的提高是积累的过程,在日常的课程中应该充分利用好南科大的英文环境,真正提高自己的英语能力。英语能力提高了之后,GRE和托福取得理想成绩是水到渠成的事情。平日养成多阅读原版英文课本的习惯,习惯用英语去写报告并在语法和句式上对自己严格要求。尽量去读英文文档,耐心看与程序相关的IT技术问答网站上的回答,有空听一些英文技术讲座……这些都是龚玥同步提升英语和专业知识的成功诀窍。
南科大的生活多姿多彩,课余时间里龚玥也参与很多校园活动。她坦言,平衡好学习与课外活动之间,让自己在同等的时间里做到更多事情是非常美好且充实的。她每天都会把当天要做的事情用清单记录下来,然后规划好每个时间段做什么。每天定好的任务要尽量完成,如果实在做不完,也要根据自己的能力去调整,但不要把清单不要安排得太夸张,符合自己精力才是可持续的。此外,她还建议,“开始做一件事情之后就尽量不要分心。”很多人会觉得朋友圈、微博等等诱惑才是分心的原因,但她觉得分心的根本原因是因为面前的任务对于初始态的大脑太难了,所以大脑在本能地逃避。她建议,在开始做一件比较需要脑力的活动时,可以先用一些简单的任务让自己进入专注的状态:比如在开始学习前先背20分钟单词,让自己的大脑充分“热身”,这样学起来效率更高。
龚玥回顾自己成长的四年说:“在南科大,我看到了一个更大的世界也见到了一群更优秀的人。我发现人生原来有那么多的可能性,前方还有很多很酷很有趣的想法等着我去实现。如今我想做的事和未来的目标也是四年前的自己想不到也不敢想的。”
即将前往芝加哥大学读计算机科学博士项目的龚玥,未来的计划是在读博期间对一个领域有很全面而系统的认识,能做出有影响力的工作,以后成为一名独当一面的工程师,在实践中深化自己的研究成果。
来源:南方科技大学南方科技大学新媒体中心新闻中心采写:程雯璟部分素材来源:南科大树德书院、计算机科学与工程系