等级课程
制作:杭州古德微机器人有限公司 最后更新:2020.4.27
目的
为响应国务院和教育部提出在中小学逐步设置人工智能和编程课程的号召,特开设基于基于树莓派的等级课程。学员可从零基础开始学习,通过积木编程、快速上手,虚实结合、简单易懂,精选教学套件和互动课程案例,通过围绕编程能力提高的图形化等级课程学习后掌握编程原理和应用。再次基础上可进一步学习python等级课程,和图形化编程同样的硬件、同样的案例、同样的编程逻辑无缝切换到Python编程,符合编程学习的规律,让孩子在玩的同时不知不觉学会编程,并能用于实际的应用。
等级课程以编程知识分布、代码构造能力等级和代码调试能力划分为依据,围绕编程知识、传感器和计算机基础应用等知识的认识、提高和深入循序渐进而设计,引导学生理解计算机程序设计的基本思想,熟悉运用树莓派图形化编程和python语言编程的基本过程,并能结合硬件求解实际问题,掌握基本的程序设计方法和调试技术,从而具备基本的问题分析、数据表达以及算法描述和功能实现的能力。
课程内容
本课程分图形化编程和Python编程两部分,图形化课程有初级一、初级二、中级一、中级二、高级一、高级二共六期,python课程有python1、python2、python3共三期。每期课程分别有15次课,每次课两课时共90分钟。
通过图形化编程的逻辑指令模块,在理解顺序、条件、循环三种基本程序结构基础上逐步培养变量和函数的运用习惯并理解程序周期的意义,在虚实对照的直观案例编程实践中逐步提高函数模块对复杂功能归纳和分解能力,通过现实和虚拟的对照理解计算机以结构化数据表示现实物理世界的方式,在此基础上通过多线程案例锻炼统筹安排和抽象思维的协作能力。 图形化等级课程除了包含编程基础知识和代码构造能力,代码调试能力也非常重要,通过模仿对照、主动添加日志、分段添加日志和最小功能验证等分布在等级课程的不同阶段,另外在掌握一定的编程能力后安排了专项调式理论和实践课程。
在掌握编程技能的基础上学习python显得特别简单,主要是先通过相同的案例熟悉代码语法,快速掌握用python实现简单功能的能力,然后通过学习安装扩展包扩展利用外界资源的能力,在此基础上通过查找在线帮助逐步掌握运用开源资源的能力。 在掌握图形化调试技能后,调试技能可以无缝迁移到python编程实践中,在适应了拼写错误查找、依赖库匹配后进一步掌握单步调试、断点调试、批量日志分析和异常处理等编程调试能力。
同时我们在课程中融入人工智能、物联网等先进科技,通过一个个实际生活的有趣应用案例,让学生对人工智能、物联网的基本概念和应用领域有一定的了解,启发学生对人工智能、物联网的兴趣,对其中所蕴含的科学精神能有进一步思考,并培养知识创新和技术创新能力。
等级课程为学员提供了进阶学习的阶梯,有了基础后寒暑假通过主题课程和项目化实践课程更加系统和综合的对所学知识加以巩固和运用,真正让学员掌握编程,让计算机编程成为运用自如的工具。 等级课
编程能力分级理论
学过编程的朋友都有相同的感受,编程案例要么就是很简单的,稍微学下就会了。要么一下就上天了,怎么也看不懂,即使看懂独立实现还是有困难,甚至直接抄都不能抄对完整的代码。
问题描述
接受过大学编程教育的朋友的经历都是这样的:
- 学习程序语法、练习通用案例
- 学习数据结构,了解经典算法,练习几个简单的案例
- 按自己想法完成一个实现简单功能的小程序 (几千行左右的规模,对大部分本科生来说都是困难的,所以这个阶段大部分放弃了)
- 阅读大量的代码、模仿优秀代码案例,反复练习,逐步提高
- 通过面试找到编程相关工作,反复学习和实践,成为能把编程当工具实现自己想法的少数派
理论提出
但是让我们中小学的老师和学生通过这样的方式提高现实吗?作为编程教育者,不就是应该为编程初学者提供成长的阶梯吗?况且大部分老师和学生不需要成为专业程序员,只需要能熟练运用编程工具就可以了。
有了正确的分级,我们就能正确的设计编程教案,使大部分人能通过定向学习和训练达到熟练运用编程的能力。从而解决简单的都会了,难的也学不会的尴尬处境。
古德微基于高水平的程序员团队和高校教师理论研究团队多年的编程教学经验总结出编程水平分级理论:
编程能力分级试用于所有编程语言,包括图形化编程、Python编程和C语言等。
举个不恰当、的例子,耕地水平的高低,要看结果,要看是否适合具体某种庄稼的种植, 而不是具体用哪一种工具锄头、牛犁或拖拉机等进行耕地。 不同的工具在效率上会有很大差别,但是质量上要看具体操作人的水平。
编程能力分级可以按代码构造能力和代码调试能力进行分级。
* 所谓代码构造能力是指,当一个功能需要实现时想一想大概知道应该怎么实现,然后能把代码大致写出来。 * 但是真正实现起来和想的会有很大差距,会有这样那样的问题,正所谓理想很丰满,现实却很骨感。 比如由于字写错了,由于临界值问题没考虑到,甚至可能是原先设想的逻辑根本就是错误的等。 这个时候需要掌握代码调试能力,通过调试找到代码错误的地方,分析原因并修正。这样就能真正完成代码编写了。
代码构造能力分级
第一级 感知级
理解功能语句的意义和用法,能通过堆积代码实现自己想要的功能。
这一级只要通过简单的学习,人人都可以达到。所以这个时候编程觉得很简单,对学会编程充满了信心。但是这一级的编程初学者只能完成一些非常简单的功能,如果不会调试,对一般人来说100行左右的代码是一个坎。
第二级 入门级
理解程序的基本结构是由顺序、循环、分支组成的,能够利用循环处理重复的功能,利用分支处理不同的条件。
真正会正确使用循环和条件的朋友这个时候觉得自己能力爆棚了。配合调试技能说不定能写1000行代码,在许多人眼里能写这么多代码好厉害啊,包括写代码的人自己写想多写点代码以显示自己好厉害。但是按这样的思路写再多的代码也没什么用,还是只能实现很简单的功能,对编程能力本身也不会有质的提高。
当然理解程序是由顺序、循环、分支组成的是很重要的一步,因为很多朋友可能学了一两年都没搞清楚它们应该如何正确使用,毕竟编程用来用去最多的就是这几个基础知识。
第三级 初级
了解变量和函数的用法,有使用变量的意识,会把某些简单的功能封装成函数。
这一级的朋友会发现写程序好像有点困难,有时候无从下手。并不是不会写程序,而是觉得应该有更简单的方法或者这一级的朋友想实现稍微复杂点的功能。不管怎样,我要恭喜您已经在正确学习编程的道路上了,坚持下去就会真正学会编程。
但是就我目前的了解,大多数非专业程序员在这一层就封顶了。哪如何才能进入下一级呢?
第四级 提高级
理解变量的使用,理解程序运行周期含义,可以通过循环和条件动态改变变量并用变量控制程序的运行状态,变量能有合适的命名。
好像有点拗口,如果没达到这一级的朋友可能看不懂是什么意思。我举个简单的例子:用数码管做一个时钟显示(时和分),要求中间冒号闪烁要均匀(0.5秒亮,0.5秒灭)。这个一说好像很多人都觉得简单,但是为了方便后面继续添加其他传感器,还要求程序每个循环需要在0.1秒以内。如何控制数码管如下图所示:
0表示不显示点,1表示显示点
这个要求一提出很多没达到这一层级的朋友开始抓狂了,还会有朋友会说应该用多线程解决(在不理解多线程的情况下,使用多线程只会更麻烦。我们用的python有多线程,其实背后是单线程运行的)。 我们还是来看看如何通过动态改变变量来实现这个简单的功能吧。解题思路也很简单,大概可分以下几点:
- 通过获取时间,拆分十位数和个位数设置时间。
- 冒号的显示周期是1秒,可以一秒为一个功能块通过判断是前半段还是后半段控制冒号显示,也可以像本例一样通过以0.5秒为倒计时触发软件开关。
- 倒计时触发后需要重新设置之前时间,以避免重复触发软件开关。
主程序
看了答案后好像也不是很难,但是真自己能想到写出来就很困难了。
那如何才能达到这一级呢?
通过阅读大量优秀代码,学习数据结构并完成练习可能慢慢达到这一层级。但是数据结构是基于C语言,本身就是晦涩难懂,所以就不推荐了,留给专业程序员学就可以了。
那怎么办呢?我的建议是:
1. 写代码时养成使用变量的意识。
2. 遇到问题时刻意的思考是否能通过增加变量解决问题。
3. 坚持开发些小程序,并完善功能细节。因为完善功能细节时往往有很多练习和提高的机会。如果能坚持一年两年我相信人人都能跨越这个层级。
4. 跟着古德微的等级课程学习就能突破这一层。
第五级 熟练级
能对功能进行分解,了解简单的数据结构。
所谓的功能分解就是按功能封装函数、类,能把复杂的功能通过分解成简单的功能,这个分解不一定是平行的,也可以是层层嵌套。这样就可以完成复杂点的功能开发了。
第六级 运用级
在理解周期的基础上,掌握周期检查变量实现功能的能力。
第七级 应用级
能使用多线程简化程序基本逻辑来实现不同类型的功能(每个线程负责一种类型),且通过周期性检查和更改变量协同完成复制的功能。
第八级 自主学习级
通过网络能找到实现功能的关键知识,并能把搜索到的知识点重新组合运用, 达成目标、实现所思所想。
后面还有很多层级,但是我们非专业程序员基本到第五级就够用的,另外我相信达到第五级的朋友也有能力学习和实践继续往上提高。真正难以突破的是第三到第四级。
代码调试分级
接下来我们继续讲讲另一条线,对就是代码调试能力。没有代码调试能力的提高,代码构造能力不可能从第三级突破到第四级。
第一级 感知级
听说过代码调试,但不会主动调试,代码错误基本靠看。觉得能通过看找出程序的错误很厉害。
第二级 入门级
有代码调试的概念,当程序出错但看出来时会在程序的中间加调试日志试着查找错误。
第三级 初级
知道代码调试的必要性,程序出错习惯在程序的开始、中间和怀疑出错的位置添加。无法找到错误时,会先用几行简单代码验证环节。
第四级 提高级
写新功能时喜欢先用调试信息验证部分关键代码正确后继续编写后续代码,有积小成到大成的习惯。编码时可能有临界值时都会先行验证。
第五级 熟练级
能使用异常处理命令进行正确的调试差错和容错保护。比如python里可以使用try...except。
后面还有很多层级,比如单元测试、熟练运用多种调试工具、多线程和多进程调试等等。但是对大部分人来说调试技能达到第三第四级就够了。在调试技能第三级的帮助下,代码构造能力能从第三级突破到第四级。