开源教学系统
学术界是培训和准备明天的开源开发人员的绝佳平台。 在研究中,我们偶尔会编写开源软件。 我们这样做有两个原因。 一是促进使用我们生产的工具。 第二,进一步了解他人在使用时所面临的影响和问题。 在编写研究软件的背景下,我受命重新设计了布拉德福德大学二年级学生的本科软件工程课程。
这是一个挑战,因为我面对80名来自同一学位的不同学位的学生,包括IT,业务计算和软件工程。 最困难的部分是与具有广泛编程经验水平的学生一起工作。 传统上,该课程包括让学生选择自己的团队,责成他们建立车库数据库系统,然后最后提交报告作为评估的一部分。
我决定重新设计该课程,以使学生深入了解实际软件团队的工作过程。 根据学生的学位和编程技能,我将他们分为五个或六个小组。 目的是在各个团队之间平均分配技能,以防止一个团队相对于另一个团队的任何不公平优势。
核心课程
课程格式已更新为既有讲座又有实验课。 但是,实验室会议充当指导会议的角色,在该会议中,讲师拜访了每个团队,要求他们进行更新,并查看团队在与客户和产品方面的进展情况。 有关于项目管理,软件测试,需求工程和类似主题的传统讲座,并辅以实验室会议和导师会议。 这些会议使我们能够检查学生的学习进度,并监控他们是否遵循讲座部分所讲授的软件工程方法。 我们今年教授的主题包括:
- 需求工程
- 如何与客户和其他团队成员互动
- 软件方法,例如敏捷和极限编程方法
- 如何使用不同的软件工程方法并完成冲刺
- 团队会议和文件
- 项目管理和甘特图
- UML图和系统描述
- 使用Git进行代码修订
- 软件测试和错误跟踪
- 使用开源库作为工具
- 开源许可证以及使用哪个许可证
- 软件交付
除了这些讲座,我们还有来自企业界的一些嘉宾演讲,他们讨论了他们在软件产品交付方面的实践。 我们还设法让大学的知识产权律师来讨论英国软件的知识产权问题,以及如何处理软件中的任何知识产权问题。
协作工具
为了使上述所有可能性成为可能,引入了许多工具。 对学生进行了如何将其用于项目的培训。 这些包括:
- 团队和导师内部共享Google云端硬盘文件夹,以维护文档和电子表格以用于项目描述,需求收集,会议记录和项目时间跟踪。 这是一种非常有效的监视方式,也可以直接将反馈提供给每个团队的文件夹。
- 也可以使用Basecamp进行文档共享,并且在课程的后期,我们认为这可以替代Google云端硬盘。
- 诸如Mantis之类的错误报告工具再次拥有一定数量的免费报告用户。 后来,Git本身被团队中的测试人员用于任何工具的错误报告
- 远程视频会议工具被使用,因为许多客户不在校内,有时甚至不在同一城市。 学生们经常使用Skype与他们交流,记录他们的会议,有时甚至记录下来以备后用。
- 许多开放源代码工具包也用于学生的项目。 允许学生根据项目要求选择自己的工具包和语言。 唯一的条件是这些必须是开源的,并且可以安装在大学实验室中,技术人员对此非常支持。
- 最后,所有团队都必须将其项目交付给客户,包括软件的完整工作版本,文档以及自己选择的开源许可证。 大多数团队选择了GPL版本3许可。
提示和教训
最后,这是有趣的一年,几乎所有学生都表现出色。 以下是我学到的一些经验教训,可能有助于改善明年的课程:
- 在有趣的项目(例如游戏开发或移动应用程序开发)以及有目标的项目中,给学生多种选择。 使用平凡的数据库系统不会使大多数学生感兴趣。 通过有趣的项目,大多数学生成为了自学者,并且也在帮助团队和外部的其他人解决一些常见问题。 该课程还有一个消息列表,学生可以在其中发布遇到的任何问题,以期从他人那里获得建议。 但是,这种方法有一个缺点。 外部考官建议我们回到一种类型的项目和一种语言的风格,以帮助缩小学生的评估标准。
- 在每个阶段为学生提供有关其表现的定期反馈。 这可以在与团队的指导会议期间完成,也可以在其他阶段完成,以帮助他们改善下一次的工作。
- 学生非常愿意与外部大学的客户合作! 由于新的经验,他们期待与外部公司代表或大学以外的人合作。 当与导师互动时,他们都能够表现出专业的行为,这使教师放心。
- 许多团队一直在进行单元测试,直到项目结束为止,从极端编程方法的角度来看,这是严重的禁忌。 也许应该在各个阶段的评估中包括测试,以帮助提醒学生,他们需要与软件并行开发单元测试。
- 在80岁的班级中,只有四个女孩,每个女孩都在不同的团队中工作。 我观察到男孩们非常愿意担当团队领导的角色,将最有趣的代码片段分配给自己,而女孩们则大多遵循指示或编写文档。 由于某种原因,即使在女指导员的鼓励下,女孩们也选择不表现出权威或宁愿不编码。 这仍然是需要解决的主要问题。
- 有多种样式的文档,例如使用UML,状态图等。 在这一年中,允许学生学习所有内容并与其他课程合并以改善他们的学习体验。
- 有些学生是非常优秀的开发人员,但有些从事商务计算的人员则很少有编码经验。 鼓励团队一起工作,以防止这样的想法:如果开发人员仅参加会议记录或文档,他们将获得比其他团队成员更好的分数。 还鼓励在指导会议期间轮换角色,以确保每个人都有机会学习如何编程。
- 允许团队每周与导师见面有助于监控团队的活动。 它还显示谁在做最多的工作。 通常,未参加小组的学生不会参加会议,并且可以通过每周由其他成员介绍的工作来识别。
- 我们鼓励学生在与外部图书馆和客户合作时将许可证附加到他们的工作中,并确定知识产权问题。 这使学生可以开箱即用,并了解实际的软件交付问题。
- 给学生选择自己的技术的空间。
- 拥有助教是关键。 管理80名学生非常困难,尤其是在评估他们的那几周。 明年我肯定会有助教帮助我与团队合作。
- 实验室的技术支持非常重要。 大学的技术支持非常支持该课程。 明年,他们正在谈论将虚拟机分配给团队,以便团队可以根据需要在自己的虚拟机上安装任何软件。
- 团队合作会有所帮助。 大多数团队对其他团队成员表现出支持的性质,指导也有所帮助。
- 其他工作人员的额外支持也是一个加号。 作为一名新学者,如果我对如何使他们参与课程感到困惑,我需要从经验中学习,也需要在多个方面寻求建议,以处理某些学生和团队。 高级工作人员的支持使我感到非常鼓舞。
最后,这是一门有趣的课程-不仅对我作为指导老师,对学生也是如此。 学习目标和传统的评分方案存在一些问题,仍然需要解决,以减少其对指导员产生的工作量。 对于明年,我计划保持相同的格式,但希望提出一个更好的分级方案,并引入更多的软件工具来帮助监视项目活动和代码修订。
学校
本文是“ 重返校园”系列的一部分,该系列侧重于面向所有级别学生的开源项目和工具。
翻译自: https://opensource.com/education/15/9/teaching-open-source-development-undergraduates
开源教学系统