这次作为助教负责的是广东技术师范学院15信计的软件工程部分的课程,
主要工作是点评了同学们作业,以及对作业进行评分并发布评分博客和千帆竞发图。
评分博客和千帆竞发图如下:
- [广东技术师范学院]第五周作业成绩排行榜
- [广东技术师范学院]第六周作业成绩排行榜
- [广东技术师范学院]第七周作业成绩排行榜
- [广东技术师范学院]第八周作业成绩排行榜
- [广东技术师范学院]第九周作业成绩排行榜
复用了之前写的两篇团队开发示例的博客供学生参考:
完成了四则运算的测试程序的开发,并发布接口提供给学生进行TDD:
由于是中途加入助教工作,之前学生有过Python课程的学习,我加入到后面的软件工程课程中做助教,老师并未严格按照《构建之法》的课程要求来布置作业,布置的作业大多是相对比较简单的,但是即便如此
同学们的完成情况也并不乐观,发现的问题如下:
- 有团队作业在做了三周后只提交了一个SQL文件。
- 部分团队基本没有源代码管理,都是用QQ微信来互传代码进行开发。
- 团队贡献分都一样,结对作业直接拿团队作业来充数。
- 对于助教的点评基本不回复。
- 博客作业的版式混乱。
我觉得出现以上问题的原因可能是同学们对一些工具(如源代码管理工具)的使用不熟悉,另一方面可能是一些先修课程的基础不够扎实,
同时没有花时间认真看《构建之法》中的内容,此外,我认为如果严格遵循《构建之法》中的作业要求,可能效果会好很多,
我认为可以参考以下作业来布置,各个学校可根据实际情况略做裁剪:
-
这个阅读作业适合在一开始就布置给学生进行,作业中的阅读博客较多,老师可根据需要进行精简(不过最好可以都读一遍),我认为这个作业可以达到的目的是:
- 让学生开始使用博客并规范写作格式。
- 通过阅读这些高质量的博客,可以解答很多学生一些迷茫的问题,同时可以提供一些比较好的学习方式。
同时可以附加一个阅读作业,阅读《构建之法》并提出五个问题,到团队项目结束的时候,同学们可以尝试自己回答这五个问题。
-
这里面包含了很多有一定难度的个人项目,之所以要设定一些难度,是因为太简单的作业,没办法判断同学是否抄袭,同时,通过个人项目,可以达到以下目的:
- 学生们可以复习基本的编程技能,以及单元测试的内容。
- 源码管理工具的使用,这个很重要,同时源码管理要贯穿整个学期,这样到了团队作业,就不会纠结这些工具的使用了。
-
结对作业既可以是个人作业的拓展,也可以是新的相对个人作业更复杂的新项目,结对作业的目的我认为有以下两个方面:
- 结对作业是更深入的个人作业,所以可以锻炼学生从简单思路到增量改进的思维模式。
- 锻炼结对编程的两个人之间的沟通。
- 两个人写的代码要整合,就必然涉及到软件模块化的问题,这也是结对编程中可以学到的一些技能(如:前后端分离开发)
-
第三次作业 团队作业
团队由四到五个人的小组组成,每个团队提出项目的计划,要实现的功能,团队成员的角色和安排,发表博客。 每个同学说明自己要做的技术准备工作。
团队作业可以分为alpha和beta两个阶段,通过团队作业,我认为应该可以达到如下目的:- 做团队项目之前的NABCD分析,可以让同学们了解自己到底要做什么样的项目。
- 每天的Scrum报告,燃尽图和站会,了解项目的进度和成员的具体工作情况(最好有代码更新记录以及新功能截屏)。
- 如何推广自己的项目?
- 预测自己的项目发布一周以后的用户数,并对比实际的用户数以及用户反馈,对自己的项目进行改进。
通过以上四次作业,我认为可以基本覆盖到软件工程中的大部分内容,除了作业,先修课程(如:基本编程课,数据结构与算法)的基础也是非常重要的,如果没有扎实的先修课基础,软件工程课程可能会“沦为”编程课:)
如果后续做助教,要改进的地方:
- 对于布置作业这块,我要更多地和老师交流和沟通,布置高质量的作业,才能让学生学到更多的知识。
- 继续完善自动化测试工具,渗入学生的作业中。