我们之前询问过您 如果您有机会,您想问 1200 位计算机科学教授关于开源的什么问题。因此,当我前往德克萨斯州达拉斯参加 SIGCSE 2011,全球最大的计算机科学教育会议时,我带着您的问题参加了 开源教学 (TOS) 小组会议,并倾听了那里的对话。感谢所有与会者提供的见解,并感谢来自 Olin College 的 Sebastian Dziallas 和来自 Western New England College 的 Heidi Ellis 的组织!
与会者范围广泛,从像 加州大学尔湾分校 的 Patricia Lee 这样的博士生,她刚刚开始教授计算机体系结构课程,并希望从一开始就涉足开源教学,到像来自 Trinity College 的 Ralph Morelli 这样的资深教员,他是 HFOSS(人道主义自由和开源软件) 合作的领导者之一。对话主题同样广泛,从 Google Summer of Code 到 IBM 的 SWT Java UI 库,再到 OpenHatch 项目,该项目旨在为学生寻找“入门问题”来解决。一个小组讨论了多伦多大学的 UCOSP(本科生顶峰开源项目) 计划的可扩展性,而另一个小组则讨论了将开源参与纳入服务学习计划。感谢使用 Etherpad 进行协作笔记,我们设法捕捉到了我们对话的重点。事实证明,教授们自己也有一些问题。
我们如何选择合适的学生项目? 加州州立大学 的 Tyson Henry 将问题反过来,指出学生们更投入于他们选择的项目——而且,进一步来说,学习如何识别好的贡献机会是学习经验的一部分。很快就有人指出,教授在这种情况下扮演的角色是理智检查者——兴奋的学生经常提出规模宏大的项目,因此具有更多项目管理经验的教员需要介入并帮助学生团队专注于现实的目标,以便他们可以在一个学期的时间内朝着他们的愿景迈出坚实的第一步。
在让学生自由实验和充分指导他们以确保成功之间找到平衡。 当与真实世界的环境(如开源社区)合作时,教授们必须平衡帮助学生成为独立学习者的愿望与确保他们获得成功体验的愿望。何时需要在混乱中增加结构,以便学生不会迷失方向,特别是考虑到在一个学期内完成一些有意义的事情的时间限制?来自 Beloit College 的 Steve Huss-Lederman 在解释教学材料可以帮助在独立性和指导之间取得良好平衡时说:“我希望有人能给我看一份工作表,交给学生,帮助他们选择项目。”由于这是教授们让学生参与开源社区的共同问题,因此培养诸如家庭作业和评估量规之类的共享资源将是有益的。
您如何衡量学生的成功? 当项目的完成取决于学生无法控制的许多因素时,教授需要找到不同的评分方式。仅仅因为外部依赖项出现问题,或者外部开发人员在学期结束前没有回复他们的电子邮件,就惩罚学生因未被接受为补丁的优秀工作是不公平的。为了解决这个问题,来自 University of the Western Cape 的 Grant Hearn 建议使用能力类别而不是硬性量规——学生是否在项目中做了与文档相关的一些事情?编写了某种形式的功能规范?学生能否向您提供与上游远程开发人员的聊天记录(无论对话结果如何)?找出学习目标,并将它们转化为学生可以控制的基准。
开源经验擅长教授哪些内容? 正如来自 Immaculata College 的 Mary Elizabeth Jones 指出的那样,相同的入门级计算机科学课程材料可能会导致完全不同的学习体验。比较一下目标是学习基本 Java 语法的 CS 101 课程和目标是体验您的第一个软件开发生命周期的课程。Drexel University 的 Greg Hislop 补充说,开源项目特别擅长软技能,这些软技能比例如学生是否记住了 shell 排序和冒泡排序之间的区别更难衡量。看到和使用他们没有编写的代码、通过与来自世界各地的队友合作获得跨文化敏感性,或者必须向行业资深人士组成的观众捍卫他们的功能提案的好处更难量化,并且在学期的匆忙中很容易被错过。这就是为什么诸如“成为有效的团队成员”之类的目标需要通过诸如日志写作或团队动力咨询之类的作业来支持,这些作业使学生退后一步,并参与关于他们正在学习的非技术技能的元认知。
开源项目应如何向教员展示自己。 多位教授建议,避免被认为是非结构化的。突出各个级别的学生可以做出的许多不同类型的贡献。许多教员将“开源”与“代码贡献”联系起来,并将其降级为高级顶点项目领域,从而错失了让年轻学生参与文档、测试或设计的潜在机会。
开源项目并不完美。 有时开源项目具有较差的软件开发实践。这是“自然软件开发经验”的现实——您上次加入一家所有事情都做得完美的公司是什么时候?这些实际上是学生们转变思路并尝试使用他们在课堂上学到的技能来改进他们项目的实践的绝佳机会。来自 Western New England College 的 Heidi Ellis 讲述了不完整的文档给她学生带来的“顿悟”时刻——“哦!这就是为什么我应该注释我的代码!”——当她默默地为这个启示欢呼时。
很难放弃在教室前排的专家席位。 来自 University of Chicago 的 John Bell 说:“我的学生比我知道的还多,”他的学生运营着 FLOURISH,这是一个关于开源的年度会议。John 自己没有参与过开源项目,但参加 SIGCSE 部分是为了宣传他的学生正在做的事情——这对于通常被期望成为“舞台上的智者”并掌握所有答案的教员来说,需要很大的勇气。多位教授建议从小型独立学习小组开始,逐步过渡到开源教学,而不是一开始就开设大型课程,因为学生和教授都习惯于将独立学习视为由学生主导、由教员促进而非支配的学习活动。
开源确实对学生产生了影响。 尽管在课堂上尝试任何新事物都会带来尴尬和偶尔的失误,但他们对学生的首次实验的早期承诺是激励教员年复一年地继续努力使开源在他们的课堂上发挥作用的原因。教授们讲述了他们的学生从工作面试回来后说,他们整个面试过程都在与未来的雇主讨论他们的开源工作。来自 Union College 的 Kristina Striegnitz 解释说,她参与开源是为了吸引更多女性加入她学校的计算机科学专业,现在有一个由女性学生组成的多学科小组在课外聚会,致力于 Sugar Learning Environment。
正是在 SIGCSE 的整个过程中,最后一点给我留下了最深刻的印象;我遇到的每一位与会者都在那里为了他们的学生,在某些情况下,甚至飞了半个地球来参加。我看到教员们用自己的钱购买机器人套件,赠送给来自低收入家庭的青少年,希望它能激励他们玩转科技。我以为我已经为了会议的准备工作而熬夜了——直到我意识到许多与会者也做了同样的事情,并且仍然在每天晚上会议活动结束后在他们的酒店房间里批改作业。这些教授真正关心改变他们学生的生活,我感到鼓舞和振奋,他们找到了开源参与作为一种方式来做到这一点。
1 条评论