从大二亲自体验OO课的第一次改革成果,到大三担任OO课的助教,OO课程已经陪伴我两个学期了。作为改革的亲历者,我切身体会到了OO课变化,学习体验越来越好。我这学期的助教工作主要是企业微信开发、第二单元实验以及bug修复的审阅。

       这一学期的OO课因为疫情的原因,只能是在家以网课的形式进行。因为我不是随班助教,所以与同学接触的机会相对较少。例会和研讨课都以腾讯会议的形式线上如期进行,最大程度上减少了疫情带来的影响。

企业微信开发

 

  因为考虑到手机登录课程网站的不便,造成一些重要消息无法及时传达,这学期我们决定使用企业微信作为课程网站的辅助通知工具。我利用寒假的时间对企业微信的开发进行了研究,已经对企业微信前端的所有接口比较熟悉。

 

我设计的企业微信前端可以实现的功能有

 

  1. 在企业微信中查询成绩和关注贴
  2. 通过菜单跳转至课程网站
  3. 对简单的问题进行回答(如查阅课程规则)
  4. 上传文件到微信后端供同学们下载。

 

不过因为课程开始后助教们就开始忙于课程作业和实验的事情,网站没能提供接口实现上述功能。下一届的助教可以考虑利用假期或者春季学期对企业微信进行适当的开发,完善功能后将会更方便与同学们进行交互。

第二单元实验

 

第二单元实验主要是针对多线程方面,我也第一次引入了填空选择这一题型。实验很大程度上是要为该单元的作业服务的,所以客观题主要是为了考察同学们对一些基本概念的理解和掌握,对一些基本的方法,如wait(), notify()等的作用进行考察。

 

因为考虑到实验期间时间比较紧张,让同学们写大量的代码是不合适的,而且快速阅读和理解他人代码也是一个重要的能力,所以我设计了程序补全题目。该题目是对完整的程序进行挖空,让同学们对挖空出根据理解进行补充,以实现要求的功能。

 

为了实现自动化评测,需要同学们将写好的答案放到一个json文件中,我们提供了可供复制的json模板。

 

第三次实验时绝大多数同学是前一天才第一次接触多线程这一概念,所以编程题让同学们直接从零开始模拟一个多线程的执行时不切实际的。我们利用课件上的一个生产者消费者的例子作为引入,对题目要求做适当的改变,让同学们改写代码。生产者消费者模式是多线程的一个经典设计模式,如果同学们能举一反三的话,作业中也可以利用该模式进行设计。

 

第三次实验中发现的问题:同学们似乎对多线程的随机性的理解还是不到位,有些同学试图复现样例输出的顺序,或者是同学们不清楚我们的评测是对输出的逻辑进行检查,而不是进行字符串匹配,这点之后可以再强调一下,以免引起不必要的纠结。

 

第四次实验时同学们已经接触多线程半个月时间了,所以这次实验主要对一些多线程实现的细节和易犯的错误进行考察,重点考察线程安全、死锁以及一些多线程的设计模式(观察者模式和worker thread模式)。

 

第四次实验中发现的问题:有同学还是没能解决UTF-8中文编码的问题。存在一些同学还是对多线程理解有问题,使用错误的方法写代码,但输出符合逻辑,会被判为正确。之后出题应多以同学们可能犯的错误方面进行考虑,尽量避免这种情况的发生。

bug修复

这学期的所有同学的bug修复基本全部由我来负责审查。开始时会查的比较慢,需要仔细阅读同学的代码来判断是否是同质bug。看了几十份提交之后就会大概知道错哪几个点是同一类型的bug,就能稍微提高一些审查的速度。

体会

这学期是比较特殊的一学期,缺少了线下的面对面交流。不过通过老师助教和同学们的配合还是达到甚至超过了预期的效果。助教工作时分工明确,各司其职,有条不紊地进行着,最大程度地发挥了每个人的能力与作用。

感谢课程组能给我这次成为助教的机会,感谢老师和助教一学期的指导、鼓励和帮助。在这个团队里我学到了很多,收获了很多。最后,预祝下一届助教工作顺利,预祝OO课程越来越好。

 

posted on 2020-07-17 19:58  柠檬草Ian  阅读(206)  评论(0编辑  收藏  举报