Academic Teaching is Hard

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

几个月前,我有机会在Innopolis大学(俄罗斯)为三年级的BSc学生教授一门课程。这门课程的标题是“系统软件设计”。这个小组的规模大约有150人,课程的持续时间是8周。我应该给他们讲授16节课,每周两节。并且我被要求在课程结束时考察他们的知识。对于一名大学教师来说,这基本上是一份正常的工作。而且,你知道的,我觉得我在大部分方面都失败了。下面是我所学到的。

顺便提一下,所有的讲座都被录像下来,所有的幻灯片都可以在GitHub上找到

我在软件会议、研讨会、聚会等活动中发表演讲有很多经验。通常,这样的演讲持续30-40分钟,结束时有10-15分钟的问答时间。然后,你就可以离开并放松了。

这里的情况完全不同。首先,讲座需要90分钟,中间有短暂的五分钟休息。其次,我必须连续进行两个讲座。第三,我周二有两个讲座,周三也有两个。因此,每两周我需要教授360分钟的课程。360分钟!这相当于10场会议演讲!想象一下准备十场会议演讲需要多少时间。我的所有晚上和周末都被这些占据了。我学到的教训是:在课程开始的第一天之前就要开始准备,预计会花费很多时间。

似乎对于一些/大部分学生来说,我的课程并不是关于学习新知识,而是关于获得“A”等级。他们从课程开始就开始纠缠我:你将如何评估我们的项目,评分决策将如何进行?我不怪罪他们,我怪罪自己:我没有在课程开始时给他们提供教学大纲。在课程中间的某个地方,我写了一份大纲,在这里查看

不是考查他们的知识,我决定让他们用他们在讲座中所学的知识来编写一些软件。这是个好决定,因为我无法想象对150个人进行口试需要多少时间,也无法想象它会多主观。虽然还有另一个选择:一份有正确和错误答案的问卷调查。但是,创建这样一份问卷调查也需要很多时间。要求他们编写一段软件是一个更好的选择,直到我意识到我不知道如何客观地评估它。

教学大纲中,我提出了一些标准,但它们远远不能算是客观的。唯一客观的标准是他们的代码库在GitHub上获得的星星数量。顺便说一下,他们所有人都达到了所需的最高星星数量:十五。其中一些人得到了超过四十个,这正是我计划中的意图:向他们展示良好的软件在一点点推动下(通过朋友和家人给予你的星星),可以轻松获得更大的受欢迎程度。

顺便说一下,我仍然梦想着一个能够检查任何GitHub代码库并对其进行质量分析的软件包或托管服务。不仅仅是代码质量,还包括过程质量、文档、纪律、沟通等。这样的软件可以使用机器学习对代码库的内部进行非确定性猜测。它还可以对成千上万个GitHub代码库进行基准测试,然后对给定的代码库与最佳代码库进行评估。

没有这样的软件,我不得不一个一个地审查他们的代码库。这让我花了一整天的时间。助教在我之前进行了审查,这也很有帮助。

不仅仅有讲座,还有实践任务,称为“实验室”。我有三位助教(TA),每位助教负责三分之一的学生。助教们也在教授他们软件设计,试图与我在讲座中传授的内容保持一致。效果如何呢?不太理想。这完全是我的错。

每位助教都对软件设计、软件质量、管理以及其他许多事情有自己的看法。如果我想做得好,我本应该首先“教授”助教们,在开课之前花些时间做这个。也许我甚至需要给他们一些指导,解释我的期望。这将非常有帮助,因为助教与学生的互动远多于讲师。作为一个站立式教师,我无法与学生进行讨论:我主要是传递我的思想。讨论发生在助教和实验室中。

因此,我得到的教训是:在开始教学之前,请确保你的助教非常了解你的内容。非常了解。

在我第一次讲座时,房间里大约有120个人。到最后一次时,只有十个人。我不确定原因,但可能有几个可能性。首先,也许讲座很无聊。那么,下次我能让它们变得有趣十二倍吗?我怀疑。

第二个可能的原因是我没有检查他们的出勤情况。我在课程一开始就告诉他们:“我不关心你们在这里的实际出席情况,我只关心你们在八周内创造的产品。”也许这是个错误,但我仍然认为强迫学生去上讲座是不尊重的。

第三,也许大部分学生觉得看录制在YouTube上的讲座比去上课更舒适。我试图在每次讲座后的几天内发布视频。这是个错误吗?也许是,但我仍然相信视频内容至关重要。顺便说一句,已经发布的十六次讲座中,每一次都至少被观看了一千次在YouTube上。教室里只有几十个学生,而YouTube上有一千多人:你认为谁更重要?

因此,如果你想每次课堂都满员:1)娱乐他们,2)让成绩取决于出勤情况,3)考试后再发布视频(或者根本不录制)。但我不会做这些。我对教室里只有十个人、YouTube上有成千上万人,并且有一些非常有趣的产品是由那些很可能从未参加过的人创造的(我在下面会讨论他们)。

有四个可能的成绩等级可供给出:A、B、C和D。不及格的是”D”,但”C”也不好。学生们组成了最多四个人的小组。每个小组创建了自己的GitHub项目(实际上,有50个小组中的三个小组在GitLab上创建了它们),我对它们进行了审核。以下是我分发成绩的方式:

从形式上讲,我给了2+6+22人(包括”A+”和”A++”)”A”级别的分数,但我觉得有必要强调优秀和良好项目之间的差异,即使它们在同一个”A”级别中:这就是为什么有额外的”A++”和”A+”分数。当然,有可能只给那些在我的分类中是”A+”和”A++”的人”A”级别的分数,将其他时间表向后推,给出更多”C”级别的分数,但我担心这会引发很多抱怨。简单来说,我退缩了。

现在,为了奖励那些获得”A++”和”A+”的人,我在这里公布了他们的项目和账户。他们可以把这篇博客文章视为我对他们每个人的推荐信。如果你,亲爱的读者,是这些人的潜在雇主,我强烈推荐他们。

这里是两个”A++”:

看看这些存储库的质量!不要太过于以代码质量或产品的实用性来评判它们(尽管它们是实用的)——这门课程并不是关于编程的。这门课程是关于组织你的代码和做出技术决策的。我相信,考虑到他们是学生,他们做得非常好。

这是六个“A+”级别的存储库:

它们也相当不错。

非常感谢Innopolis大学,特别是它的院长Giancarlo Succi教授,给了我这个机会,让我意识到做一名教师是非常辛苦的,但也很有趣。

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-05 at 22:21

sixnines availability badge   GitHub stars