可能有同学不理解为什么要做翻转课堂,我来解释一下:
我们这门课所教给大家的,并不是具体的知识,而是培养能力,具体来说,由低到高依次是三种能力:
- 课堂学习能力(高中之前主要就是训练同学们的这种能力)
- 自学能力(本科一年级必须要具备的能力)
- 项目开发能力
于是,我们这门课程的学习也分为三个阶段
一、课堂学习能力
我们通过Python的基本知识作为内容,在讲课的同时,让同学们掌握课堂学习的能力。课堂教学是同学们从小学到初中接触最多的一种方式,所以课堂学习能力应该是每一个大学生都具备的,所以我们也就把零基础的起点,放在了课堂学习能力。
- 基础语法
- 开发环境使用
- 基本数据结构
- 基本算法
由于是零基础,所以基础知识部分必须由老师带着手把手教,确保每个同学都掌握。如果你跟着我们走到这里,并且都能够跟得上、听得懂、作业也能自己完成,那么说明你的课堂学习能力已经达标,并且你已经具备了Python的基本入门知识,可以进入到第二阶段的能力学习了。
二、自学能力
编程是需要具备自学能力的,比如:
- 阅读文档
- 阅读开源项目的源代码
同时,还需要具有自己寻找答案的能力,比如:
- 构造关键词,上网搜索问题的解决方式
- 了解技术术语,通过社交网络向其他人咨询
- 了解知识点,寻找适当的在线课程进行学习
自学能力不能通过课堂教学学到,必须通过一些具体问题,在自己的亲身实践过程当中掌握。于是,在具备了基础能力之后,就进入到掌握自学能力的学习阶段了。
翻转课堂,就是老师给你一个题目,让你去自学。那么如何检验你自学能力掌握的好不好,最简单最有效的办法,就是请你来给其他同学讲解你所学到的知识,如果大家都听懂了、学会了,那就证明你自己已经掌握了自学的知识,你的自学能力也已经具备,后面就是继续熟练的问题了。
三、项目开发能力
对于大学生来说,一项必不可少的能力就是项目开发能力,就我们这门课而言,至少包括这些部分:
- 组队的能力(是否能和陌生人组队)
- 团队领导力,即形成团队分工,形成团队统一思想统一指挥的能力(组长是否能有效组织,组员是否能有效配合)
- 发现问题的能力(确定小组的大作业选题)
- 解决问题的能力(实现大作业)
- 阐述、解释的能力(汇报你的大作业)
- 判断工作量、工作价值的能力(大作业互评)
只有具备了上述能力,才谈得上项目开发的基础。项目是工业化时代,分工合作,共同完成一项任务。在现代社会,几乎任何一项具有社会价值的事情,都不可能是一个人就能完成的(自己是可以一个人在家做饭,可是如果你要创造点社会价值,开个小餐馆,一个人估计也忙不过来吧)
没有团结合作,就无法进行有效的创造。计算机技术,尤其是基于计算机技术的软件技术,就是人类工业化发展到最顶端时产生的,所以软件开发对团队合作的要求再怎么强调都是不过分的。一个人的智力时有限的,时间也是有限的,任何一个软件开发过程,都不可避免地要利用他人的工作成果:
比如你引用了系统库,类似于
/* C语言,引入标准输入输出API */
# include <stdio.h>
# Python语言,引入基础数学计算API
import math
// Java语言,引入线性表数据结构
import java.util.ArrayList
这些代码就是别人的工作,你看似自己独立完成的编程,事实上也是一种协同、合作,只不过这种合作是在时间上的,是单向的,即:过去的别人与现在的你,进行合作;别人可以告诉你他的要求,比如API的名称、参数、功能,你只能被动接受,你不可能把你的要求反向告诉他,毕竟时间不可逆,这是常识。
但是,很多时候,你需要和当下的人进行合作,假如你需要的某个API正好没有怎么办?你当然可以亲手做一个,但是这很慢,而且效率很低,你明明有一个团队,那么为什么不做个约定,分工合作,每个人按照约定来做一部分,最后把大家的工作集成起来,这样就可以大大加快进度,同时由于有了更多的大脑来思考,思考的精确度、思考的深度甚至预见性、洞察力,都会远远超过一个人的工作效果。
(当然,如果团队组织很糟糕,也很容易出现 1+1 < 1 的情况。可即便如此,掌握团队合作的能力也是值得的。这就好比一个人由于没有学会列方程,于是直到20几岁了,还继续用算术方法解决问题。他的能力是被锁死的,他永远只能解决简单问题。)
那么这种神奇的能力怎么才能有呢?对于我们这节课,就需要你在具备了课堂学习能力、自学能力的基础上,通过一个实际项目进行锻炼。如同学走路,其实没有人能够教会你,是你自己学会的,我们能做的,只能是给你一些指引,给你创造个氛围(学步机)
网友评论