课程基于专业融合教学理念,以领域需求及特征创建,应用特色突出,适应了信息技术发展新趋势。课程围绕“技能提升、思维训练、系统培养、价值塑造”目标重构课程体系,内容全面、系统,进度安排科学、规范。配套的系列教学软件和能力评价、成效分析,覆盖了教学全过程,学习效果可观测。课程大量的在线练习、学习研讨提高了学生实践强度,自主研发的学习功能使课程共享范围广泛,应用模式多样,形成了资源型、功能型、服务型在线课程。
学习编程包括语言工具、问题求解、实现方法、算法思想、编程抽象、编程范式、设计模式等内容,涉及算法设计、程序实现、计算科学、软件工程、系统开发、学科交叉等方面。本质上,程序是逻辑演绎的形式化表达,反映的是人类对这个世界的数字化理解。因此,提高编程能力可从两点出发:一是以思维训练为中心的编程技能,二是以学科融合为核心的领域知识。
那么,如何学习编程呢?
1.按“双线索”学习程序语言
任何程序语言,包括C语言,都是一个标准化的、具有庞大知识内容的形式语言体系。因此以语言知识为学习线索必然是整体凌乱、抓不住主次,容易迷失学编程的方向。
须知,计算机的基本工作原理决定了计算机问题求解是“计算数据”的过程,编程就是去解决“如何表示数据”和“如何实现计算”。将“数据表示”和“程序实现”作为学习程序语言的两条主线索,抓住语言对此所起的作用,螺旋上升,交叉推进,如下图:
这时,你会发现程序语言是服务编程的工具而不是目标。
2.有“节奏感”推进编程实践
学习程序语言时需要快节奏,学习编程方法和编程技术时需要慢节奏,即使是敲代码也要有节奏,快慢使得学习者“抓大”(设计方法)“放小”(语言知识),得到最大化的“饱满感”编程训练。
学编程需要完成大量练习,称为“刷题”。编程实践过程中的灵感、技术、习惯、动机、反思以及畅想,将会把程序设计的知识逐一转化成技能,形成编程思维。对编程有激情是一件很美妙的事情,但同时也必须培养自己对于编程周边所有事情的热情。在节奏引领下可以更有效地与计算机对话,从而赋予我们将创意变成原型的能力。
这时,你会发现编程是帮助人们与计算机沟通的工具。
3.从“多维度”进行思维训练
计算科学思维是多维度的,例如基于计算技术的普适思维,特点是抽象和构造;基于算法思想的数学思维,特点是形式化和自动化;基于数据技术的逻辑思维,特点是因果关系和相关关系;基于系统结构的应用思维,特点是整体性和结构性。
程序最重要的两个基本要素是算法和数据结构,编程的难点不是算法或者数据结构本身,而是如何理解和分解问题,并将其映射到最合适的算法或数据结构上,这个映射本身不是程序要解决的问题,是人脑在思维,是构造性思维、逆向思维、猜想与试验、设计思维等全脑思维的艺术。
这时,你会发现编程是思维的体操。
4.用“系统观”拓展编程视野
衡量编程有两个重要指标:编程累计行数(TLOC)和单个程序行数(SLOC)。以解题为主的编程训练能提高TLOC,但却止步于SLOC。即使将小规模、数学型问题做成百上千,TLOC指标上去了,但SLOC却不见长。一般的,SLOC小于300行时很难让人体会到“开发的感觉”,这时编程局限在“数学工具”视野里。显然,单纯的思维训练和仅仅摄取知识信息无法形成系统观。
实际上,计算方法(数值计算、非数值计算)仅是程序设计方法的一种,程序方法学中还有诸如操作系统、人机界面、图形图像、多媒体、网络通信、数据库、硬件接口等技术领域,每个领域都有独特的编程技术和精巧的解决方法。通过引入高级编程技术的学习,融合各类学科专业的领域知识,拓展求解问题的专业覆盖面、问题复杂度和数量,可以改变编程的广度、深度和力度,形成编程核心模式及对它们不断运用所形成的思维方式的系统观,这是优秀程序员最重要的素质。
这时,你会发现编程是全方位的创新实践。
5.以“跨领域”塑造核心价值
掌握知识和能力是大学学业的价值,但仅仅是这些就可能掩盖了大学学业的核心价值和潜质,即通过知识内化为思维、通过能力提升到创造,最终拥有终身享用不尽的、可持续发展的知识发现、知识获取、知识建构的科学素养。
学会了编程就等于掌握了信息时代的听说读写能力,学习编程形成的心理技能对于我们生活的其他方面都极其有用。通过跨学科、跨领域的延伸,编程将提高问题求解的能力,提升对世界的理解力和改善解决问题的决策能力,建立起批判性思维、系统性思维、创造性思维。通过增加挑战式内容,强化在专业学科研究上表现出很强的发展潜力,形成学业核心价值。
这时,你会发现编程教会人们如何思考。
归纳起来,就是“技能提升、思维训练、系统培养、价值塑造”。