这是
JC诚实选课系列之Computing
由脱盐旗下社团小鱼干协会与盐辞共同推出
“诚实选课,实在有用的选课指南”
供稿 | 司程磊 张纯洁 黄梦琳
排版 | 张拖延
审阅 | 小鱼干协会 盐辞
今天来给大家介绍一门冷门却有趣实用的理科——Computing.为什么说冷门呢,因为学的人实在不多。我们学校这一届只有12个人学这门课,offer这门课的学校也不多,我知道的有DHS,HCI,PJC,NJC, RVHS和JJC,其他学校就不太清楚了。作为一门年轻的课程,很多人对它都知之甚少,今天我们邀请到了两位立化中学的学长:司程磊和张纯洁,以及德明的黄梦琳学姐为大家介绍这门课程。
课程安排
课程考虑到学生水平不同,会统一从最基础的开始教,比如基本的语法什么的,需要安装的软件和安装的教程老师都会给(当然完全可以自学)。我们用的语言是python(算是最好入门的语言了)。
对于没有编程基础的同学,可能会觉得自己以前没有学过编程,会不会跟不上。这个可以放心地说,只要你好好学,完全不会!
对于有基础的学生来说,最开始的这一部分会比较无聊,建议利用这段时间做一些自己感兴趣的research(最好是与课程相关的),老师对此是默许的。
是否提供H1,H3
不提供H1与H3。想要拿H3相关的同学还需要自己找research opportunity(比如NRP,SRP)
授课形式
就立化来说,平时上课的话会按照学校的syllabus,对于有基础的学生来说进度算是比较慢的,老师会给纸质与电子版的notes,课后还有专门的习题网站(CodeCraft),会有很多相关的联系题,基本上按照老师的教学节奏学习是不会吃力的。每个topic先讲完theory然后做lab.节奏比较合理,lab有不懂的可以直接问。
要说缺点的话,可能就是授课时间太均匀了,重难点的课程时间略短,而基础课程又显得有些长,对于不同水平但却在同一个进度上学习的学生来说,很需要学生对自己水平有清醒的认知(千万不要以为你身边的大佬懂了你也懂了,课程学完完全不会的情况也是有的),其实说到底computing这门课很需要自学能力,课上起到的作用更多的是引导性的,课后与老师的交流也很重要,不懂就要去问。
考试形式
Computing一共有两张paper(paper最少的science哈哈)
Paper 1是practical,也就是lab上机实战,3个小时15分钟
一般4-5道大题(当然每道大题有很多道小题…),难度逐渐上升。
会在学校的机房里做,过程中当然是不能联网或者有书面资料的,这一部分不会涉及到理论性的东西,只要记住一些语法、算法和数据结构就可以了,多练习的话会对解题时的思路很有帮助,因为大多数都是有模板套路的,很需要你在读题时就意识到应该用哪些数据结构和算法来解决
个人感觉时间略有些紧张,如果debug不熟练的话很可能会卡住,建议遇到解决不了的bug和看不懂的题直接跳过。DHS的考试很难做完,但A-level的时候时间还比较充裕。
一般来说,第一和第二题是data processing,根据题目的要求读取、处理、输出数据,比较容易。第三题是data structure,一般最难,占的分值也最大,是整张卷子的大boss。第四题出题的范围则比较广,主要是考验逻辑思维能力。解释一下,最后15分钟是用来打印code,然后交纸质的答卷,所以实际考试时间差不多是3个小时。
Paper 2是theory,3个小时,6道大题。
Written部分会考代码和理论两方面,会要求在纸上写代码,理论的话就得去刻意背诵一些知识点了,不是光靠理解就能拿到分的,主要的考点也是算法和数据结构,理论方面会涉及到一些concept的定义之类的。
时间可以说是非常充裕,差不多2个小时就可以写完。出题范围比较广,大部分题目是对学过的知识加以应用,也有一些是直接把背的内容复述出来。这部分复习会比较枯燥。
学习经验
Computing这门课是离不开熟练度的,最好每天都做些相关练习,所以这门课比较适合对编程有极大兴趣的人,不然就会觉得有些枯燥。无论是审题的速度,解题的速度,还是打字的速度,都是在练习中逐渐成长的。
学校课程用的语言是python,老师所提供的例题和课后练习其实量还是很小的,如果想成为这门课上的大神,那就得自己去找一些练习,去一些刷题网站(比如leetcode)做些练习,也可以去Github上找一些小项目练练手,这会帮助你熟悉python的特性,有很多小技巧(比如一些编译器内置的函数和数据结构)课堂上不会教,但学会后会帮助你在考试时省略掉很多麻烦事。
也可以考虑自学一下算法,对于解题也有帮助,编程语言的语法有差别但核心逻辑是一样的,算法是通用的。
当然,如果你是大神的话,大部分内容会做lab就行了。把主要的例题弄懂就问题不大。建议不要背代码,要理解每个数据结构和算法。H2不会考很难,知道些基本的用法就行了。
有计算机基础的学生体会
说个笑话,我精通C++。
我个人肯定不敢说自己在这方面很pro的,computing这门课可以学的很水也可以学的很深,同样拿这门课的人,可能学两年后有些同学还是搞不懂递归之类的概念,有些同学看到一道考题就会有思路,而有些同学已经开始拿python和其他语言结合做一些Artificial Intelligence方面的project了。
这门课教的东西很多很广,比如我们现在正在学的计算机网络的相关知识,其实知识量是很大的,但老师课堂时间有限,只能把考试相关重点梳理一遍,有些难点我也会听不懂,只能下课再去自己研究或是找老师讨论,这不是一门仅靠短暂上课时间就能学好的一门课,很多知识点老师只是一带而过,其实是可以深入研究的,选哪些去研究就是你个人的研究方向、也就是你希望用编程来做些什么决定的了。
当然也有很厉害的人会觉得其实毫无收获,只是为了一个最后的成绩。(真的是很大神的人了)
学习心得
不要学得太死板吧。如果以后想做这一行的话可以找时间学点前沿的技术多实战。
为什么选择Computing
因为爱吧==
个人很喜欢玩游戏,所以对于用于架构游戏的代码还是很感兴趣的,感觉通过代码能实现这么多匪夷所思的效果是很厉害的事啊,很希望自己能像大神们一样能独立或者合作开发自己梦想中的游戏。未来专业和工作个人都会优先考虑这方面的,所以先拿computing也是抱着看看这门课学校都会怎么教的心态拿的。
当然,也有大神是本着“不用花太多时间,上课可以假装听课做自己的事”的心态选的这门课。
领取专属 10元无门槛券
私享最新 技术干货