> 文档中心 > 南科大计算机系:将开源和企业引入计算机课程教学

南科大计算机系:将开源和企业引入计算机课程教学

开源和企业引入计算机课程教学,南科大计算机系,于仕琪

上面的视频是我参加CSDN在长沙组织的“1024程序员节”的报告视频,介绍了南方科技大学计算机系在提升学生能力的一些尝试。为了提升学生能力,让学生通过开源项目参与真正的实践,并引入企业指导学生,最终实现学生、教师、企业和社会多方共赢。

视频中内容,最初由我跟我的同事唐博和陈馨慧老师一起,发表在CCF通讯上,全文如下。将开源和企业引入计算机课程教学——“把教学场景用起来”模式探讨本文针对南方科技大学已有的一些教学尝试,提出了在计算机课程教学中由教师和企业共同指导学生参与开源项目的教学模式,并希望这种模式能够提升学生能力、促进教师授课积极性,并从多方面帮助到企业。https://dl.ccf.org.cn/article/articleDetail.html?type=qkwz&_ack=1&id=5099305107982336

将开源和企业引入计算机课程教学

——“把教学场景用起来”模式探讨

作者:南方科技大学计算机科学与工程系 于仕琪、唐博、陈馨慧(Shin Hwei Tan)

关于如何提升中国大学教育水平和科研水平,中科院计算所研究员包云岗撰文《Matlab:一个教学小工具为何成为卡脖子利器》[1]对此进行了探讨,他的观点为:(1)把东西做出来,而不是追求把论文发出来;(2)把东西用起来,而不是做完就扔了;(3)把教学场景用起来,而不是把教学当作负担;(4)把持久战意识树立起来,而不是期望速胜论。北京交通大学教授于剑日前在CCCF撰文《奇迹之年,我们应该怎么做?》[2],进一步点明了目前科研领域存在的问题。

国家的发展以及世界形势的变化,对我们的大学教育提出了更高的要求。破除“四唯”(唯论文、唯职称、唯学历、唯奖项)已经是大家的共识,而比“破”更难的是“立”。提升大学的教育和科研水平是一个很宏大的课题。我们尝试对本科生教学做一些探讨,希望能够把教学和科研联系起来,用教学促进科研。

本科教育中的实践与创新

现在本科生教育,已经不是仅靠课堂教学、学生上完课程就能拿到学士学位这么简单了。教育部的“新工科”建设对此提出了更高的要求,高校需要在本科教育中重视实践和创新,并以此带动学生对理论知识的掌握。

在本科生教育中,应该引入大量的“实战”。中国科学院大学的“一生一芯”计划就是一个很好的案例。笔者所在的南方科技大学也进行了一系列尝试,例如计算机系在大三和大四年级开设了一门必修课“创新实验”。这门课共覆盖3个学期,有6个学分,没有课堂讲授,而类似于毕业设计,学生要在教师的指导下完成3个实践项目。加上毕业设计,计算机专业的学生要在毕业前完成4个大型实践项目。

为了进一步推广这种思路,探索“新工科”培养模式,南方科技大学还设立了系统设计与智能制造学院。该学院的培养强调“以学生为中心”“以项目为引导”“多学科交叉融合”,引导学生主动学习。这种模式放弃了传统的以课堂授课为主导的培养模式,改以项目引导的方式促进学生学习。

实践和创新类活动,其目的不是让本科生在科研上有突破,或者做出什么惊天动地的大事,而是让学生知道“为何而战”。在本科教学中,常常有学生问“线性代数”“概率论”“操作系统”等基础课程有什么用。当学生参与了实践类项目后,他们会真正体会到基础课程的作用,也自然知道了为何而学习(也就是“为何而战”)。此外,高年级的学生也会现身说法,把自己的心得告诉低年级的同学。这样会让学生拥有清晰的目标,从而激发学习动力。

参与开源,提升实践能力

中国高校每年录取的学生数量超过500万人,为巨大数量的学生进行选题和指导是一个艰巨的任务。除了依赖高校教师之外,还可以借助开源项目。开源已经成为计算机和信息领域知识传递的一个主流途径,互联网上的开源项目多不胜数,覆盖了方方面面。可以让这些开源项目成为学校的项目池,鼓励学生参加或者创建开源项目。

以开源的方式将自己的工作向全世界公布,可以提升学生的责任感和荣誉感。此外,学生可以从现有的开源代码和开源文档中学习知识。例如,学生通过阅读Linux内核代码,可以学习操作系统知识和优秀的C语言编码习惯;通过阅读OpenCV代码,学习计算机视觉的知识以及提升C++代码执行效率的方法。

在南方科技大学的“软件测试”课程中,我们给学生提供了一个Android开源APP列表,让学生为这些开源APP做软件测试。课程结束时,每个学生都成功地为软件开发者提交了BUG分析报告(共提交29份),大部分报告被开源软件作者接收,相关意见大都被采纳。在这个过程中,学生的软件测试能力得到了提升。

学生也可以在教师的指导下创建一个新的开源项目,每年都有新的学生往里添砖加瓦。几年之后,这个项目可能会逐渐成熟,成为一个具有重大价值的项目。中国的学生数量是世界上最多的,相信在这种模式下,几年之后将会诞生一系列有影响力、有价值的开源项目。

企业参与,促进教学与实际相结合

计算机领域的技术在不断发展,中国的企业和开发者在开源项目中的比重也在逐步提高。企业对未来的方向比较敏感,因此我们欢迎企业参与我们的教育,打造开放融合的教育新生态。笔者曾邀请一家企业到课堂上介绍企业软件开发、软件管理以及企业采用的一些最新的技术,不仅开拓了学生的眼界,也让学生感觉课堂接地气。大疆公司与南方科技大学合作举办夏令营,对参与的学生进行实践指导,让学生接触最新的机器人技术。此外,南方科技大学还设立了创新创业学院,更加系统地引入企业到学生培养环节中,并对学生的创业进行支持。

我们可以让企业广泛地参与我们的实践课程。在具体的操作方式上,可以让学生在教师和企业的共同指导下,就计算机领域未来的方向上对企业长远布局的一些题目进行探索。企业也可以邀请学生进入企业实习,让学生有更多的机会接触实际运转中的企业,对技术、企业和社会有更深刻的理解。此外,企业还可以为学生提供资助,例如为学生提供一笔小的经费,鼓励他们开源代码;为优秀的学生提供金额高一些的奖学金等。

教学和科研互相促进

在过去的本科教学模式下,教学容易成为科研的负担,而教学和科研本应该是一体的。对此,南方科技大学也做了一些尝试,例如邀请学生走进教授的实验室,学生在教授的指导下,参与实践或者参与科研。对学生来说,这样的参与让他们知道了为何而学,并且了解了本行业的前沿动态。此外,部分优秀的学生还可以产生出高质量的科研成果,帮助他们毕业后去往更有发展前途的地方。

例如前面提到的“软件测试”课程中,一位学生对软件测试很感兴趣,在老师的指导下,他的本科毕业设计继续做这个方向。随后,该学生本科毕业后在本校继续读硕士,研一时根据本科课堂的实验以及后续的工作撰写的论文,被CCF-A类会议ICSE接收。又如,学生通过“操作系统”课程了解了集群计算平台Spark,通过“数据结构”课程体会到算法的重要性。一些学生对笔者的智慧城市建设的数据可视分析研究方向产生兴趣,便参与了实验室科研,通过在实验室的科研工作,其中的一位学生在CCF-A类会议VLDB发表了demo paper,本科毕业后继续赴香港大学读博深造。近一两年,笔者所在的科研团队还有学生发表了PVLDB full paper、ICSE full paper、SIGIR short paper、VLDB demo paper、ICDE demo paper等。

对于教师来说,这种模式扩充了科研人才池,也激励了他们对教学投入更多精力,以吸引优秀的本科生参与团队的工作。

结论

针对“把教学场景用起来”,我们根据南方科技大学已有的一些教学实践,提出由教师和企业共同指导学生参与开源项目的教学模式。在这种模式下,学生通过参加开源项目实践,锻炼自己的实战能力;企业可以让学生承担一部分预研工作,并通过教育和开源提升企业在教育界和本行业的影响力,在学生心目中树立更好的形象;开源项目可以有更多开发者,有利于提高项目质量;对教师来说,所选开源项目跟自己的研究方向一致,培养的高质量学生可能会跟自己读研究生,使教学不再是负担,而是科研所需的生源培养;对大学来说,能够提高教学水平与教学质量,打造金牌课程,提升影响力和社会贡献。我们希望新的模式能够将各方积极性调动起来,打造开放融合的教育新生态。 ■

参考文献:

[1] 包云岗. Matlab:一个教学小工具为何成为卡脖子利器[OL].(2020-06-21).https://mp.weixin.qq.com/s?__biz=MzI0NzQzMjU3Ng==&mid=2247502025&idx=1&sn=0562a73cd5ff178a300cbe55b0786a4c&scene=21#wechat_redirect.

[2] 于剑. 奇迹之年,我们应该怎么做?[J].中国计算机学会通讯. 2020, 16(8): 7.

古诗弟