​北大图灵班直博生亲身讲述所有专业计算机学习的建议

大家好,我是北京大学计算机系的大四学生,大一下学期通过二次选拔进入了北大图灵班进行学习,目前已经直博到清华大学计算机系;本科在校期间,我担任了北京大学计算概论、数据结构与算法 (实验班)、计算机系统导论课程的助教。近期很多我们的签约会员表示在编程入门的学习中遇到了困难,今天我来谈一谈对计算机学习(尤指编程入门)的建议:如今,随着计算机的快速发展,计算机学科的应用知识已经渗透到各个学科内,不只限于理科、工科,乃至于社会学、法律、中国语言文学等,各类学科与计算机的结合无数不在。如在北京大学,理工科、医学部要学计算概论B,文史类要学文科计算机基础。因此即使学生的专业不是理工科,掌握基本的计算机技巧也是非常重要的。那么对于不同专业的学生,对计算机的了解程度、掌握水平与需求肯定也是不同的,在计算机学习上应使用的方法也是不同的。下面我将分别对3类学生给予计算机学习的建议:计算机专业、非计算机理工科专业、社科文史哲类专业。
 
1. 计算机专业:既需要有熟练的编程能力,也需要对计算机的系统与组成结构有很好的了解。对于C和C++的学习,建议使用c++ primer plus等经典教材,并多做编程题,做题会带来很好的提升。需要特别注意的是,每一门编程语言都不是可以在上课上覆盖全部功能的,编程注重实践而不是学习,抱着上述教材看并不是一种正确的学习方式。学习编程一定要多写多练,同时遇到不明白的问题时查询上述教材来辅助学习。对于python这类语言可以尝试自学,并在线上的编程网站上做题进行练习。而计算机的系统与组成结构可以直接看《深入理解计算机系统》这本书,是计算机系统领域的经典教材,配合网上的视频和各种博客可以有很好的理解。
 
一般学校的计算机专业课程安排中,大一会学习基本的编程技能,大二会接触更多的数据结构、算法与计算机系统类的课程。在编程课程中,我最大的建议就是多做题、多写代码,推荐两个编程网站:洛谷:首页 - 洛谷 | 计算机科学教育新生态和POJ:OpenJudge。练习的内容可以跟上课的进度保持一致,多做题既可以帮助我们掌握课程内容,也可以为我们后续的学习打好基础。对于大一的算法题来说,是否会写是一回事,是否会debug得到分数又是一回事,大部分情况下bug并不是细心就可以避免的, 所以掌握合理的debug方式和工具非常重要,这里推荐大家学习麻省理工学院的课程,missing semester,专门讲解编程工具。 对于不好理解的算法,在看了答案或者问了同学之后,一定一定要自己写一遍,毕竟从考试的角度来说,如果不能bug free的写出一道题,就无法得到分数。在数据结构、算法课程中,代码训练依旧很重要,编程练习仍是必不可少的,因为大部分学校都仍会在考试中设置机试环节,依旧可以去前面所说的编程网站上做题。对于算法的分析(复杂性、正确性等)则需要较好的数学基础,推荐阅读《算法分析》这本经典书籍。
 
2. 非计算机理工科专业:并不需要很熟练的编程能力,更多的是要学会如何使用编程作为学习、科研的工具,对python语言的要求,以及matlab这类工具的使用可能会更多,而学校也一般会开设C或C++的课程。因此对C或C++可以在学校的课程中学习,而python、matlab等可以通过网上的资料进行学习(如廖雪峰),并且一定要多使用。可以试着用这些工具写一些专业课中学到的内容(如物理学、数学专业可以试着用matlab绘制函数图像),加深理解。
 
3. 社科文史哲类专业:需要基本的编程能力(如python)与一些软件的使用技巧(如excel),虽然要求不高,但文科生可能会缺乏计算机的思维体系。编程的本质原则是逻辑,在此之上,每种语言有自己特定的格式与语法,因此对文科生而言,理解逻辑+掌握语法是两个基本要求,也可以说是全部要求。因此,文科生在学习计算机时,一定要多思考代码的逻辑,并关注语法上的细节,在细节上的问题可以多询问身边理工科、计算机专业的同学。与此同时建议阅读简单、基础的学习资料,没有必要学得太难太深。

(0)

相关推荐