郑莉
(清华大学计算机科学与技术系,北京)
摘要慕课作为一种新的在线课程形式在近年得到广泛的应用,建设和运行一门慕课要经过需求分析、课程设计、拍摄制作和课程运行几个阶段。文章从课程的需求和定位、慕课优势与C课程特点的结合、知识点划分的方法、课程各部分的呈现形式几方面,介绍清华大学“C语言程序设计”慕课的设计。
关键词慕课;C;面向对象;程序设计
1课程背景
慕课(MOOC)如果能够基于线下课程进行开发建设,就能够将其教学内容和教学经验用于在线课程,将信息技术与成熟的课程结合,在继承的基础上创新。这门慕课就是以清华校内的“C语言程序设计”(国家精品课、精品资源共享课“面向对象的程序设计”)为基础建设的。
早在年我们就针对非计算机专业开设了C课程。该课程教材《C语言程序设计》当时填补了针对非计算机专业的C教材空白,获得了中国高校自然科学二等奖。多年来该课程一直是校内最受欢迎的课程之一,受到学生的一致好评,选课需求量总是远远超过课程容量。一直以来,我们通过教学录像、在线课程等技术手段努力扩大课程的受益面。针对该课程,我们在年就拍摄了全程教学录像并在“清华网络学堂”开设在线课程,后来又在年、年、年拍摄了多个版本的教学录像。该课程在年出版第1版教材,目前已经出版到第4版,预计在年出版第5版教材。
“C语言程序设计”是一门高级语言程序设计的入门课程,完全针对零起点的学生,可作为其他信息类相关课程的基础课。教学目标是使学生通过该课程的学习,掌握面向对象程序设计的基本概念和方法、C的基本语法、程序设计方法和调试方法,学会使用集成开发环境,初步了解常用数据结构和算法以及C标准模板库的使用方法;课程内容包括程序设计基础知识、数据的表示和基本运算、函数与重载、类与对象、数据的共享与保护、数组、指针、字符串、继承与多态、运算符重载、模板与泛型程序设计、文件I/O、异常处理;主要教学活动包括大课、实验、课外作业、自选题目的大作业、期中考试、期末考试,其中大课32学时、实验30学时、课外作业30学时,另有课外讨论环节。
2C慕课的需求与定位
慕课建设的首要问题就是需求分析和课程定位。只有明确了需求和定位,才能开发出适合学习者的课程。建设“C语言程序设计”慕课是为了兼顾社会和校内两方面的需求:社会需求包括向业余学习者开放和为兄弟院校提供课程;校内需求包括为混合式教学翻转课堂提供在线学习资源,扩大选课容量,满足更多学生的选课需求。
“C语言程序设计”慕课移植了清华大学校内课程的全部内容及教学要求,是作为一门完整的大学课程开设的。这不同于一些为科普和宣传目的专门开发的课程,学时和作业量都比较多,目标是为需要学习C与面向对象程序设计的学生服务。
多数业余学习者多习这门课程是因为工作和考试需求,因此他们需要通过一门完整的课掌握C的语法和面向对象的程序设计方法。如果只讲授部分内容或者只作科普介绍,那么学习过程可能很轻松,但是学习者完成课程以后写不了程序,没什么意义。兄弟院校采用这门课也主要是为了与教材配套开设校内课程,因此必须将清华大学校内课程的所有内容完整呈现。
清华大学校内学生可以用慕课资源进行混合式教学。由于部分课程内容采用在线学习方式,因此课堂的课时就可以用来深入讲解和讨论重点问题,可以在一定程度上解决课堂学时不够、学生被动听课、对内容理解不透彻的问题。虽然混合式教学通常只是使用慕课中的部分内容,但是将完整的课程制作为慕课,便于按照不同需求调整课程的教学模式。
3慕课的优势与C课程的特点
慕课作为在线课程的一种新形式,能够有效地利用信息技术手段。设计慕课应该充分利用信息技术,尽量再现真实课堂的特色和精华;在建立跨越时空的学习环境、交流协作环境方面超越线下课堂。慕课的主要优势就是可以在自己方便的时间和地点自主学习,这对没有时间或机会进入大学课堂的学习者是极大的便利。如何充分利用技术上的优势设计出基于线下真实课程、又超越线下课程的慕课呢?每门课程本身的特点不同,设计自然也就不同。首先,我们应该对课程本身的特点进行一个全面的分析。
“C语言程序设计”是针对零起点的程序设计入门课程,又是完整地讲授C和面向对象程序设计的课程。学生完成课程学习后要有基本的程序设计能力。因此,课程内容多、学习难度大,教师除了讲课,还要在机房对学生进行上机辅导并通过大作业培养学生的基本编程能力。由于课程压力大,每学期到期中就有一些学生因跟不上进度而退课,因为只要课后没有及时复习完成作业和预习新课,下节课就会听不懂,然后越来越不懂,到期中就只好退课。
这样一门课放到网上业余学习,就需要学习者有更好的自律性,否则肯定完不成课程。然而,在线课程也有其优势:可以在自己方便的任何时间学习,有不懂的地方可以随时复习学过的内容,不至于在没有消化前面内容的情况下硬听新课,也就是可以自己掌握学习节奏。我们在设计和运行课程时,首先要将原来在大课上讲的内容全部拍摄成讲课录像,但是要划分为以知识点为单位的片段。讲大课时教室大、学生多,不便在开发环境中演示程序的编写和调试过程,可能后排学生看不清,也可能因步骤繁多而每个人的理解速度不同,因此学生难以同步跟上老师的节奏。这导致很多学生连续听了两学时的课,但听完就忘,对于上机实验更是无从下手。
设计慕课就是要将讲课内容按照知识点划分成小段,必要时在线演示程序的编写和调试过程,每个知识点之后有练习题可以复习巩固。线下课程有实验课并有助教辅导,在线课程如何实现这一环节呢?我们设计了在线的实验演示,通过录屏一步一步地演示程序的编写和调试过程。线下课程的学生要做大作业(项目训练),有助教辅导和逐一演示答辩。在线课程人数众多并进行远程学习,无法完成这个过程。作为弥补,我们设计了一个贯穿整门课程的综合实例,作为每章的单独一节。
对于线下课程,我们原来就是在线提交作业和自动批改,但是有助教进行人工检查和当面解答疑问;而对于在线课程不能当面辅导,因此这一环节就通过在线讨论进行弥补。我们设计了按知识点和题目划分的讨论区,对同一题目有疑问的学生可以更容易地一起讨论,同时还有助教给予在线答疑。
4知识点划分的方法
由于慕课的学习者很多是利用碎片化的业余时间学习,在没有班级和同班同学的情况下独立学习,过程中多少有些孤独和枯燥,并且长时间集中精力学习比较困难,因此慕课的每段讲课录像不宜过长,需要将原本以45分钟为单位的课程重新安排成几分钟一个片段。
那么是不是直接切分呢?答案是不能将长录像直接切分。按45分钟组织的课程内容往往是连续讲解多个知识点,或者从不同角度反复讲解多个知识点,然后给出一个或几个包含多知识点的综合例题。按知识点切分就要对课程内容进行重新设计,每段一个知识点,包括讲解和例题。如果有些知识点讲解时间必须很长,就将讲解和例题分开。这样将授课内容片断化以后,就容易出现学习不连贯的问题。本来是学生必须在教室里连续听一大节课,理论内容、例题、思考与讨论一气呵成。学习慕课有可能是今天看了一个知识点,没看例题;明天再继续看例题时已经忘记头一天学的内容,又看不懂例题了。
程序设计课程内容对于零起点的初学者来说,其实不适合零零碎碎的学习。为此,我们在课程结构设计上既要划分小片段,又要充分体现各片段间的关系和学习逻辑。这种关系和逻辑不是给一张总体的知识图谱就可以,学生在学习过程中不会时时查看和回顾知识图谱,因此我们在设计课程内容时就要体现其结构,如图1所示。图1中窗口左侧的每个小标题是一个相对比较完整的模块,右侧上部横向展开的是多个知识点及其配套练习。学习者可以在学习的时候一目了然,尽量一次完整地学习一个模块,而不是仅仅学一个知识点,这样更符合认知规律。
图1课程结构示意图
5呈现形式的设计
课程各部分的呈现形式也需要规划设计好。设计课程的呈现形式应该遵循形式为内容服务的原则,根据内容的需要、经费投入和制作团队的优势特点选择恰当的表现形式。“C语言程序设计”选择以演播室录像的方式讲解,文字、录屏与人像穿插。重要概念、语法、程序全屏出文字,实际操作录屏,开始导语和展开讲解出人像。各部分要设计好穿插切换,每种形式时间都不能太长,否则会引起学习者疲劳。课后练习分成两种形式,包括每个知识点之后的选择题和一章之后的综合编程题。综合编程题需在线提交源代码,由OJ系统自动评判(设置多个测试点,仅对比运行结果)。另外,每个知识点和题目都有相关联的讨论区,便于学习者进行讨论和答疑。
6结语
课程设计是建设和实施课程的第一步。慕课是一种新的在线课程形式,其设计尤为重要。文中所述的设计是基于“C语言程序设计”这门课程具体特点并结合制作团队的特点和优势制定的,恰当、详尽地设计为后续的课程拍摄、制作和运行奠定了基础。
基金项目:北京市高等教育学会“十二五”高等教育科学研究规划重点课题“高校‘教学共同体’计算机创新人才培养模式与教学资源共建共享研究”(BGZD)。
作者简介:郑莉,女,教授,研究方向为教育信息化、软件工程、计算机基础教学,zhengli
tsinghua.edu.cn。(本文详见《计算机教育》年第23期)
完整视频请单击页面下方的“阅读原文”。