《软件工程》授课总结:2020-2021学年第1学期

本学期的软件工程课程在教学目标、教学内容、教学方法、手段及组织形式上与之前基本保持一致,在助教、作业、教学软件工具平台的使用、设计与开发上做了一些工作。

一、助教工作

最初助教是从往届毕业的优秀学生中招募志愿者,后来加入了一些同级优秀学生,这学期直接全部招募的同级优秀学生。经过这几年的尝试与探索,关于助教团队建设及管理这学期比以前有了很大进步,首先周小结大部分助教大部分时间是可以按时提交的,其次博客点评工作大部分助教大部分时间都能及时点评并且点评的质量较以前有较大提高,点评的内容更加具体,助教对点评方法的掌握也比较熟练了。在以前工作的基础上,结合其他学校的经验,本学期还整理了一份助教工作手册:软件工程课程助教工作手册

对于助教团队建设也有了一些新的想法和规划。在下次上课时要实施:

  1. 助教团队可以分两部分。一部分是同级优秀学生助教,一部分是从合作企业聘任的工程师助教(甚至可以聘成课程教师团队成员)。同级优秀学生助教的主要工作是点评学生博客作业、参与课堂教学活动组织、协助教师收集整理课程资源、批阅学生作业、整理学生成绩、开发课程教学所需软件及平台。从企业聘任工程师助教的想法来自系部的一位新教师,她毕业于莫纳什大学,她们的软工课程中是从企业聘了好几位企业工程师来做导师,在项目立项、项目进行过程中的某个时刻、项目发布等关键节点前来学校进入到自己所负责的团队中深入指导团队的项目。这种形式我觉得非常好。我们有合作企业,企业就在园区内,我们甚至可以比他们做的更深入,比如:一起研发课程资源,将工程师工作中的问题转换为课程中的作业、项目等。企业工程师助教可以弥补同级优秀学生助教经验不足的问题,同级优秀学生助教可以弥补企业工程师助教时间精力不足的问题。这样的教学团队,我觉得超级完美。想到这一点我就迫不及待想要开始上下一次的课程!

  2. 同级优秀学生助教需要提前招募并培训。同级优秀学生最好能提前一个学期招募并提前指导这些学生参与课程教学平台和相关工具软件的开发工作,通过参与这些项目训练他们的软件工程能力与素养,让他们具备一定的软件工程经验。其次是让他们提前完成所有的作业,这样他们才能更好指导学生完成作业。最后是培训具体的工作任务该如何开展,如:点评学生博客作业,撰写周工作小结等。

  3. 同级优秀学生助教要明确负责指导的团队。由于同级优秀学生助教和当前的学生物理距离和年龄相近,沟通方便,可以更深入具体的帮助同学甚至手把手指导班级同学,所以可以提前明确负责的学生团队,参与到其负责的学生团队开展项目的全过程去,在这个过程中监督观察每个团队的执行情况,发现他们的问题和困难,反馈给教师的同时,及时给予帮助和指导。这是在第二轮迭代时想出的办法,经过一轮迭代发现学生的很多项目活动走样,为了完成任务而完成任务,或者有的想做但是光靠教材和教师讲授并不知道具体做法,所以也做不好。于是在第二轮迭代时就给每个团队指定了一名负责的助教,让助教参与到这些团队的每日立会中去。经过这样的指导后,大部分团队都能更好的组织召开每日立会,并且能使用Markdown开始做会议记录了。助教也能及时发现学生们遇到的困难,比如:有团队看完了Markdown的教程依然不知道该怎么写,助教就可以现场立即演示,结束后删除刚才演示创建的内容,让团队成员立即做一遍,在做的过程中遇到问题当场解决。这种深入团队中手把手指导的教学方式比较适合我们的学生,因为我们的学生学习能力与文字阅读能力较弱,如果仅仅让学生看文档,他可能不仅学不会看文档,也学不会具体的技能,只能收获满满的挫败感。当然,教师也可以根据团队和项目情况选择几个项目和学生团队进行负责深入指导。

二、作业工作

本学期在周老师的督促下开始尝试对作业进行标准化,最后完成了以下几个作业的标准化:

作业标准化之后的好处是作业的可重用性变高了,也给助教参与作业的设计提供了很好的培训素材和资源。对于个人项目这样的作业助教就可以根据现在的作业进行设计并撰写。不过作业上还有如下需要进一步完善的地方:

  1. 由于学生的基础,个人项目目前我设计的是步骤比较明确的任务,更像是实验或者教程。拓展任务部分的设计则比较粗糙,可以进一步细化和增加难度梯次。拓展任务的完成也不计入成绩,可以给予一定的成绩比例。这个在下次课程中就要实现。

  2. 个人项目(零)和个人项目(一)主要教授学生Git、码云、JUnit和单元测试,对于个人软件开发技能来说,还差一项性能分析的任务,所以还需要设计一个个人项目用以教授学生性能分析任务。这个在下次课程中就要实现。

  3. 由于这些任务比较简单且可复用性较高,学生也比较容易找到答案,所以还需要设计更多这种类型的题目,以构成题库,尤其是要设计在网上不容易找到甚至找不到的项目,这样学生的学习效果应该会更好。这个需要不断持续建设。

  4. 目前还没有设计结对项目,还需要进一步设计结对项目,融入代码复审、代码规范的内容。这个在下次课程中就要实现。

  5. 对于个人项目的批阅,目前是助教人工去评,还需要研究更高效的评阅方式。这个目前还没想好怎么做,还需要持续关注思考。

  6. 对于每一个作业学生会存在一些共性问题,这些问题的解决可以写一份FAQ或者录制视频给予反馈,在学生完成作业的过程中给予解答。另外,对作业的完成方法在作业截止后可以发布完成方法的视频,这样也可以促进完成的不是很好的学生观看学习。这个下次上课要开始做,不过需要投入较大的时间和精力,可能还需要培训助教团队协助,所以可以作为一项长期任务。

三、教学设计软件平台的使用、设计与开发

前年我尝试了码云提供的高校版,感觉不好用,没用起来。去年我调研了一些软件工程能力实训平台,有几个不错,但是价格比较高,目前没有经费,买不起。所以我又回到了码云高校版的探索和使用上。今年用的时候发现功能又有了很大的改进,用起来还不错,果断在课程中使用。这个平台可以进行项目管理、代码仓库管理、代码管理、文档管理、发行版管理。可以满足大部分的教学使用需求。不过在项目成员工作量代码量统计上,在项目燃尽图上总是有一些问题。这个需要反馈给开发团队,希望可以改进。

其次是生成千帆竞发图,以前都是使用表格制作,后来李尚诺助教开发了一个可以高效生成千帆竞发图的工具,链接如下:

当前这个工具还有改进升级空间,下学期没有软工课程,计划让助教对其进行升级完善。

最后,组织助教开发了软工教学助手平台,本学期助教团队完成了一些基本功能,主要是学生管理、团队管理等,希望下学期可以指导学生对其进行进一步的设计和开发,让它能支持下次上课时的一些工作,主要是助教和教师工作中不方便的地方,比如:学生换组的成员管理,使用Excel表格容易发生数据不一致的问题;学生立项申请、Alpha版本发布汇报、Beta版本发布汇报等环节的评分现在是使用评分表,只能是教师和助教评价,如何让学生也更高效参与进来,且能快速统计整理出成绩等等。

四、项目相关工作

在项目设计上,我一直希望学生能做出一些真实的、有价值的产品,最终能申请软件著作权,甚至成立工作室创业。但是经过这几年的尝试,觉得还是需要循序渐进,差异化教学,在项目设计上要有更多的梯次,要有一些原型系统设计项目(这个邹欣老师给过建议),要有一些持续维护更新的项目,要有一些具有创造性的能够达到我最终想法和目标的项目。而且其中的原型系统设计项目应该更多一些,这才符合我们目前的学情。所以我下一步需要更进一步与我们的合作企业合作,从学生身边常接触的酷课网、智慧北软APP等入手,设计出一些原型系统设计项目。

另外,在项目的设计上,目前是比较粗糙的,也应该像标准化规范化的作业那样,对项目进行规范化。不过这方面目前还没有比较好的想法,我准备借鉴一些软件设计比赛的经验,看看是否能融入到项目的设计中。

对学生项目成果的收集整理工作我做的不好,后续还需要加强,这次课程学生的一些项目成果需要继续收集整理完善,这也是非常好的课程资源,也是对未来学生的激励。还好这学期用了码云平台,工具很重要。

学期末组织了项目成果海报展,但是因为疫情突然紧张,学生都离校了,没能完成,下次课一定提前设计并组织好,也希望疫情不要再来。

五、汇报评价工作

结合之前的经验对学生汇报活动的评估设计了评估量表,但是个人比较满意的是Alpha版本汇报的,对于立项申请的评价量表、Beta版本的评价量表在实施后都发现了一些问题,在下次上课前要完成对这些量表的改进。

六、总结

教授软件工程已经有四年了,通过这四年的教学实践与探索发现要建设好这门课程是一个大工程,软件工程的工具、方法也都可以用在课程的建设上。另外,人才培养是一个系统性的工作,软件工程课是软件技术专业比较靠后的课程了,前序课程如果学生没学好,学习这门课程确实会比较难,对老师和学生都是煎熬,所以我们已经果断开始了前序课程的改革与质量提升工作。

非常喜欢周老师和邹老师分享了每天二十英里的故事,在这门课程的建设上我正努力实践中,越来越有成效了。我也将这门课程中学到的,以及周老师指导的一些方法用到学校的管理工作中,也取得了一些效果,所以由衷感谢周老师、邹老师一直以来的敦促、为大家搭建的平台还有指导和为课程提供的支持。当然也要感谢这几年来为这门课程付出过的助教。继续努力!

posted on 2021-02-24 16:26  白马学软件开发  阅读(271)  评论(0编辑  收藏  举报

导航