第一步:点赞,没关注的可右上角先关注
因为小升初的原因,我家孩子不得不去学小升初数学,导致一直没有时间学习编程。同样也是因为小升初的原因,我们选择了报考信息学奥赛,以前叫做NOIP,今年改名字为CSP-J/S(官方说明:这两个考试没有任何关系)。
虽然我们早早的就报了名,但由于一直没有太多的时间去学信息。直到国庆节来临,算算时间,距离10月19日得初赛,可用时间已经不足18天了,我和孩子确定下来,这段时间暂停学科类,全力以赴搞信息。
但这段时间真的特别忙,正好赶上了学校合唱团参加10月16日区合唱比赛,合唱团也占用了大量的时间来训练。还有日常的钢琴、声乐等艺术类课程也不能落下。于是在这种情况下,我们放学一回到家,作为作业就开始信息刷题。
幸好,功夫不负有心人,学校的合唱团顺利通过了区赛,孩子也考出了63分的成绩。虽然比我的预期要低了很多,但想想湖南省2019年普及组A类分数线为54分,孩子的成绩在全省2000多名考生中排名23%,在全省近300名小学考生中排名前20,似乎也不能有太多的要求。
当然学习时间比我们家短,初赛成绩比我们家高,编程能力比我们家强,成长年龄比我们家低的娃大有人在。但今天我还是愿意想说说这个备考的过程,只是单纯地希望能够让更多地家长了解编程,让更多地孩子学习编程。
1. 艰难的决定,忽悠儿子带来信心
时间永远如同白驹过隙,一眨眼就不见了。国庆节到来,全家正在讨论去哪里旅行,我突然记起CSP-J的考试也悄然而至,在心急之余也产生了一个大胆的想法:突击18天,拿下CSP-J!
儿子第一个不相信。见过痴心妄想的,没有见过这么痴心妄想的。还18天通过CSP-J初赛!各位看官可能不知道CSP对于小升初的外挂作用。据小道消息,去年NOIP普及组三等奖可以进入长沙二类民办,二等奖可以进入长沙四大民办,一等奖免学费进入四大民办。(当然,谣言止于智者,希望大家不信谣,不传谣,理性看待CSP-J考试!)那么去年到底有多少小学生获得一等奖,数了数8个。收益率如此之大,收益率如此之少,想想也不是一件容易的事情。孩子妈妈更是直接就发出了这样的挑战。
所以,我要给儿子信心。这个信心就是:我们先通过初赛,而NOIP(CSP)普及组的初赛很好考!
要各别人信心,首先要自己信心!而信心不是空谈,必须建立在事实的基础上。于是我向儿子摆出了这些数据:
第一:普及组初赛总分100分,前年分数线为20分,去年分数线为37分。
今年就算再高,也不过为43分。根据去年的报名人数和通过人数分析,初赛通过率大约70%。而这70%考生进入复赛后,获奖率为90%。也就是说,只要进入了复赛,基本上人人有奖。
第二:复赛四道程序题,答对一道100分。
但是第一道题相当简单,简直就是一道就是送分题,所以基本上人人都可以上100分。第二道题也比较简单,双重循环就可以搞定。于是做对两道就是200分。而去年湖南省复赛的录取线是多少?80分为省三等奖,150分为省二等奖,190分为省一等奖。只要做对了2道题,就是一等奖!当然,初赛结果证明这个推测其实是个大忽悠,但不可否认,一下子就让儿子充满了希望。
第三:我亲自分析历年真题,发现信息奥赛中的数学奥数题分数占比一般在20~40分之间。如果说分数线只是一个虚无缥缈的希望,那么数学题占比立即把虚无化为了实锤。
第四:给儿子打气:
虽然你以前陆陆续续学过一点点编程,虽然只学到了循环语句,但是只要经过全天候魔鬼式地集训,也足够用于初赛了。学英语,找妈妈办的太格教育。学奥数,学信息,找老爸办的银河补习班!
第五:继续给儿子打气:
翻出了我以前的各种证书:国家人事部门颁发的“系统分析师”证,中国农业银行颁发的“高级工程师”聘书,湖南大学颁发的“研究生导师”聘书,还有出版的《计算机达人成长之路》、《精通Unix下C语言编程与项目实践》等书籍。你聪明我厉害,还怕学不好!于是在我连哄带骗的忽悠之下,儿子也是信心满满,嗷嗷叫地开始学习。
2. 学习基础知识、数据结构与算法
自信固然重要,但是空有自信就成了自傲了。所以我必须科学地进行指导,我分析了历年地试题后,发现普及版初赛试题分为四个大题,分别是基础知识选择题,问题解答填空题,阅读程序填空题和补全程序填空题。(今年改革了题型)。那么策略来了:
对于小学生而言,基础知识选择题可以突击掌握,问题解答填空题就是数学题,必须掌握。于是前面40分是考取高分的关键,必须尽可能多的拿下!而这40分题目,基本上包括以下内容:
第一,基本的计算机知识,比如CPU、网络、数制转换等。
对于计算机基础知识,我根据购买的《信息学奥数一本通·初赛版》为大纲,再深入而又生动地给孩子讲解每一章知识点,这其中,有两点特别重要。
(1)好记性不然烂笔头,必须要求孩子记下笔记。
(2)不会讲课地爸爸就不是好老师,讲解一定要清晰、生动、深入和全面。
一般的辅导书侧重于算法和编程,在基础知识上阉割了很多,知识之间不具备连贯性。所以学员学起来总是感觉断断续续,特别不易理解。所以讲述时一定要多扩展,多联系,一定要能够自圆其说,让孩子不至于产生太多的疑惑。
比如学习第一章的计算机地发展史,就不能错过比尔盖茨与乔布斯地传记,比尔盖茨和艾伦保罗在学校里面通宵编程的故事不仅有趣还能励志。乔布斯错打了一个字母“i”才导致苹果产品名称前面以“i”开头。又比如讲述TCP/IP结构,就必须讲三次握手,才能形象地展示通信的原理。虽然这些扩充地内容大概率不会考,但可以帮助孩子加深理解。
又比如在讲述汉字编码时可以讲述当年为了解决计算机显示汉字得问题而出现得汉卡和UCDOS,讲述五笔字型的编码,再用程序向孩子展示如何汉字点阵字库显示到屏幕上。还可以加上当初因为计算机无法处理汉字而有人恶意提出了“汉字不完,中国必亡”的悲观论调,但是中国人迅速处理了这个问题,一种民族自豪感油然而生,此生无悔入华夏,来生还在种花家。一堂信息课也可以转化为爱国课。
又比如介绍计算机病毒,可以讲讲CIH病毒、熊猫烧香病毒,江民、瑞星、卡巴斯基到360,还可以增加点幽默,比如“祖传秘方,专杀千年虫!”
第二,奥数题。
信息学里面的奥数题一般排列组合内容,或者数列内容,比较简单,对于数学好的孩子而言不是问题。
第三,数据结构。
辅导教材上关于数据结构的描述一般是枯燥的、静态的、平面的。给孩子讲述时要把它们活起来,动起来。可以用生活中的物品来形容这些数据结构,尤其注意存储方法和各种数据结构的动作。比如解线性表的查找、插入和删除,栈与队列的出和入,树的顺序存储、图的操作以及衍生的最短路径、最小生成树、拓扑排序等即可。初赛一般喜欢考察数组存储的链表操作。
第四,算法。
主要是查找、排序、图论算法,还有递推、贪心、动态规划法等基本算法。务必用例子和图形的方式把查找和排序的过程,动态地展示出来。尤其记忆各种算法的时间复杂度、空间复杂度、稳定与否。要学会计算时间复杂度和最优最坏情况。
这一部分,我们整整学习了7天!然后测试了一套模拟题,得了57.5分,我忽悠孩子说其他机构学了一年多的六年级小学生的成绩大约为40-50分之间(其实我哪里知道别人的成绩),儿子顿时信心爆棚底气十足!
3、总结代码套路,阅读补充程序
基础题30分,问题解答题10分,都可以突击获得。但初赛还有60分是阅读程序,真的需要有大量编程经验的同学才可以答出来。今年还改变了题型,基础知识题只有30分,后面70分时程序代码题。我们家编程时间太少,这是最大的弱项。如果时间允许,我会让孩子狂练编程,编码10万行,做起代码题来才可以横着走,但显然这是痴心妄想!我只能寻找程序题中的套路。功夫不负有心人,还真让我发现了:
(1)2017年以前的程序题很简单,有的甚至就考一个“if”语句。但从2017年以来越来越难,不搞两个以上的数组,三重以上的循环,再来个数组指针什么的,都不好意思跟人打招呼。
(2)喜欢阅读函数递归调用的程序。对于这类题目,代码跟踪法是不可取的,只会被程序绕晕过去。正确的方法是“他强由他强,清风拂山岗;他横由他横,明月照大江”。咱就不跟着代码走,而是先直接根据递归调用写出数列的递归的数学表达式,再数学方法推测出其通项公式或者计算其取值,这就容易多了。
(3)喜欢使用一些常用代码段。比如经常遍历字符串数组,经常求最大公约数,经常遍历整数的各个数位。还有连乘、连加代码都有很明显地特征,记住了这些特征,自然很容易推测代码。尤其喜欢考类似折半查找或者从两边向中间靠拢的快速排序代码。要么递归,要么循环。比如递归调用一个函数,函数有个LEFT参数和一个RIGHT参赛,每次程序都是搞一个MID,下一步带用要么是LEFT到MID,要么是MID到RIGHT等等。
4、疯狂刷题
考试前把2008年以来地真题都刷了一遍,其实时间很不够,我手头上还有十多套真题和模拟题都没有来得及刷。考前一天的晚上,刷了一套官方提供地最新题型模拟题,考了84分,心中禁不住有点洋洋自得起来。
5、初赛估分
10月19日考试那天,我要送儿子去考场,只发现人山人海,接踵摩膀。开考五分钟后还看到一个学校的队伍才到,考生们急冲冲地跑入考场。我们做地铁过去,没有堵车。但下午我要去教奥数课,不能在考试外等候。考试出来,儿子打电话给我,口气中没有往日地那种自信,“后面地题目考得不好!”,儿子说:“有程序填空题没有写出来,程序阅读题也有一些不知道。”
我心中咯噔了一下,难道我们18天的努力付之东流?“没关系,没关系。”我的劝解明显有心无力。
CSP初赛的试卷可以带出来,当天晚上,参考答案和估分系统都出来,我输入孩子的答案,63分。嗯,我松了一口气,虽然分数不高,但按照我的预测,通过是没有问题的。
仔细观察孩子的答题情况:
第一大题基础知识得了满分30分,说明国庆期间的知识讲解是很成功的。
第三大题30分两个程序共10题对了一半,小计15分。其中第一个程序对1错4,第二个程序对4错1。虽然我觉得很简单,但是孩子就说不会。
第二大题40分只得了18分,其中大部分为第1个程序得分,后两个程序题几乎全军覆没。改版后的程序阅读题不再是根据程序写输出,而是针对代码提问,比如某行代码能够修改,如果没有这行代码会怎样,程序在最优和最坏情况下的时间复杂度如何等等,比单纯的看程序写结果要难得多!但又由于改填空题为选择和判断题,这又给学员猜题得分得机会。两相对比,分值相差不大。
6、等待分数
接下来的一周,我时刻处于紧张之中,总是关注NOI官网的成绩发布。盼望着盼望着,别的省份都出公示和小道消息了,比如江西、陕西全部通过,江苏、浙江小道消息分别为79和86的分数线,就是没有湖南的。
时间就在忐忑不安中度过,直到周五,此时距离考试已经过去了一周,一位消息灵通的家长发了一份长沙的成绩单,我迫不及待地看了下,果然63分!再统计下,进入了全部考生的前四分之一,心中才稍微的松了一口气。但依然很担心,因为这些xls表格虽然文件名称为“成绩公示”,但只要没有挂在官方网站上,就统统不算。随后的几天,各路消息灵通人士一直有新的名单传来。终于在10月29日在官网上看到了最终的名单和复赛方法,其参与复赛的方法与前面的小道消息有一定的补充。
现在想想,前面在朋友圈中传播地的名单其实就是一种公示,收到成绩的家长如果有疑问可以去查询。不过,我还是不太理解,这些“公示”信息怎么全是通过微信传播的,不应该先在官方网站公布吗?像我这种宅男,倘若朋友圈里面没有消息灵通人士,岂不是得不到这些信息。
7、备考复赛
与初赛不同,复赛主要考察编程能力,这一点对于初学者来说是绝对弱项。处理方法无非就是:
一个字:编。 重点:只要编程序才是复赛得分的学习不二之选。
两个字:我编。重点:一点要学员自己编。家长或者老师帮助编是无法提高学员能力的。
四个字:我编编编。重点:重要的事情说三遍,多编历年试题才是重点。
好吧,复赛准备中,只要努力了,无论什么成绩我们都接受。
还请转发、评论、点赞或者收藏
当然也可以关注思源爸爸的公众号:zyxhpzsy(长按可复制)。或者直接在今日头条中私信思源爸爸,一起讨论孩子的学习