CodeLab与计算机程序教学(四)
2009-06-15张玥
张 玥
编者按:在2008年11月15日召开的“第四届全国计算机教育论坛”上,一位从大洋彼岸远道而来的特殊嘉宾为我们带来了西方的教育教学理念,引起了普遍关注。他就是美国纽约市立大学布鲁克林学院(CUNY)计算机与信息系教授David M. Arnow。David教授是计算机科学课程改革的主要倡导者,主要研究领域包括实验性分布式计算软件和计算机科学教育。在这次论坛上,他详细介绍了自己开发的基于Web的交互式程序设计编程语言学习系统——CodeLab,与各位老师交流了自己的教学经验和体会,赢得与会者的好评。本刊记者(以下简称记)在会议期间采访了David教授(以下简称D),就计算机教育教学等内容进行了深度访谈,以资国内同行了解和借鉴。
记:CodeLab系统的反馈设计理念是什么?
D:CodeLab系统有针对用户提出的问题而设计的反馈和建议板块。有时学生提交的代码总是通不过测试评估,他们很懊恼,会通过这个板块提交意见,发泄一下,以为这样的反馈意见反馈给了商业开发大机构,实际上他们并不清楚是直接提交给我本人了。我们开发教师会这样亲切地引导他们:“你最好是以一个礼貌的方式进行交流……”,这名学生才恍然大悟。
去年暑期,我们以2003年来学生提交的3000万条代码为基础,分析他们的反馈问题及产生错误的原
因,充实系统反馈信息和指引,如对逻辑错误和编译器错误信息的分析。在2006年秋季至2007年春季的时间里,反馈信息数量从600多条下降到60多条,这是因为我们引进了新模块:“Markup-注释”。它收集了1300万条提交的代码,对正确或错误的方案进行分析设计,增加了红色小箭头提示和阴影区域指引——可以称之为“Google效应”。我想,如果CodeLab有中国用户,我们所收集的代码量绝不仅仅是1300万条,而是一亿三千万条了。这个功能大大减少了老师和学生的询问信息,效果还是很好的。
我们提供的反馈信息越好,得到用户支持需求的邮件越少。我们积极地改进系统提示分析信息,得到更好的反馈!
记:您如何运用CodeLab成绩册来评估学生学年的分数,如何量化?
D:我的方式是:学期总成绩由五部分组成。即10% CodeLab;30% 期末考试;20% 期中考试;20%课堂提问和出勤;20% 程序设计。当然,我也很重视学生的思考和表达。在20%的课堂提问和出勤分数中,如果学生每堂课出勤并得到小测验满分,但是从来不发言或提问,那么只能得到总分20分里的16分。
虽然CodeLab成绩只占10%,但它是基础,其他90%的成绩受益于基础知识的掌握,课堂的小测验来自课本预习和CodeLab的习题。
在CodeLab花名册评分记录中,红色为零分,绿色为满分,黄色为半分。在规定的300道练习中,如果学生100道题准时完成提交,100 道题延迟提交,100道题未完成提交,就只能获得150分——因为有1/3的题目迟交了。
记:学生使用CodeLab的效果如何?老师和学生们对它的评价如何?
D:根据学生使用CodeLab的反馈表明,一些学生很喜欢这个学习系统;一些根本就不喜欢,因为做练习枯燥;一些接受但不喜欢:一些学生认为这个系统很棒,比阅读教材和听讲座的兴趣要高涨得多。总之,CodeLab是一种学习工具,也是一种学习资源,大多数学生能够意识到CodeLab对它们的学习是有帮助的,因此持接受的态度。还有老师发来不满意的报告——说他的学生做CodeLab的兴趣比听讲课和读课本高得多了。
威斯康星大学的Michael Schultz老师说:“作为一名大学二年级编程入门课程的教师,我现在向其他所有教师和学生强烈推荐使用CodeLab。我终于找到了既可以提供编程练习又可以提供评估支持的软件了。”
奥克拉荷马大学的Deborah Trytten教授说:“从2003年1月至今,我一直在“计算机编程导论”课程中使用Java CodeLab,它对那些以前没有编程经验、总出错的学生帮助很大。CodeLab 对学生答案的快速反馈能够引导学生不停地尝试寻找解决方案,而不是放弃或即使写下错误答案也一无所知。与以往相比,学生在编程方面的挫折感明显更少,也更喜欢这门课。我们从Turings Craft得到大力支持,他们对所有合理要求及大部分不合理要求都给出了即时的回复,我非常满意,并打算在今后的编程入门课程中继续使用它。
而学生的体验就更多些:
Akron大学的Greg M说:“我在学期初注册了CodeLab,以为这又是枯燥的工作,但是它却对我在C语言编程某些概念的理解上给了很大的帮助。”
布鲁克林学院Enthan A说:“使用CodeLab后,我看到了自己测试成绩有了实实在在的提高。它将编程概念分解为简单的步骤,帮助我看清这些概念是如何结合在一起的,我可以更轻松地完成作业。”
奥克拉荷马大学的N.G.说:“我喜欢CodeLab,它让我熟悉编程词汇。我不仅学会了如何通过编程获得结果,还学会了与其他专业人员沟通的必要词汇,让别人知道我在做什么。CodeLab还给我带来更多的实际编程经验,它好像家庭作业和编程项目的一个交汇点,让我一边熟悉词汇、语法,一边又在项目编程中乐此不疲。”
记:您对编程语言入门课程教学设计的未来有何展望?
D:我的班级教学已经是“课堂内外颠覆”。我为课堂教学准备了视频,学生在课堂外就可以收看并学习;学生通过CodeLab的实践练习巩固他们所学到的基本知识;而在课堂上,我提供额外的讲座,但大多数时候,学生将时间花在做实验室项目上——这和25年前的教学完全相反。那时候,学生只能在课堂外做实验项目;而在课堂内仅有讲座而已,更没有CodeLab。
记:计算机科学技术发展日新月异,您如何看待教学、研究与开发的关系?
D:总体上讲,我们今天教授的理论技术知识,在十五年前大多数是不存在的。今天教授知识,是为了让学生明天可以得到工作。我们的基础教学不被今天的技术所左右,而仍然专注于基本原理和主要计算机技术知识的方向是正确的,无论是现在,还是未来的10年~30年。
大学的教学总是滞后于技术的发展和公司的开发速度,因此新技术何时到大学的教学课堂从来都是大学系里最大的争论议题。通常计算机科学新技术都来源于科研成果,公司将研究成果应用于实践,然后科研机构才用于教学——这确实是一个怪圈。因为新技术源自学术研究,但直到在商业应用领域取得了控制优势才被学术教学所采纳,教授们才决定是否用于课堂教学。例如Python是由学术研究机构开发的,直到Google 公司将其运用于搜索引擎的商业技术开发,北美多数的大学和企业才将其引入教学或培训课程。
记:您对这次访问中国和参加“第四届全国计算机教育论坛”有何感想?
D:通过对中国的访问和参加“第四届全国计算机教育论坛”,我了解到,无论在中国还是美国,我们教师都面临许多同样的教学方面的问题。通过与各位中国教师的交谈和讨论,我很惊讶中国教育教学领域对C和VB教学的需求,而在美国,这方面的教学已不常见。现在,我打算在CodeLab上给这些语言充实更多的内容。
记:欢迎您再一次访问中国,对未来之行,您有何希望?
D:我真的希望有机会能常来中国,一次的旅程不足以了解全面中国,了解中国的计算机教育。我想坐在中国大学的课堂里,旁听中国的计算机课程,观看实验室项目,也想有更多的机会和中国的教师面谈。
非常遗憾,这次来华我没有更多的时间参观中国美丽的历史古迹,了解更多的中国历史和文化。相信随着两国学术交流的日益加深,我会认识更多的中国学者,与他们进行更深入和有益的对话。