2021-07-06 16:32:57 +08:00
|
|
|
|
本课程为大学计算机系本科生和研究生设计,课程目的是使得计算机领域的同学们对于开源软件的开发方法、开发过程和支持技术有深入的了解,对于如何将抽象方法和理论知识结合到工程中有更好的锻炼,对于参与开源软件社区有基本的掌握。
|
|
|
|
|
|
|
|
|
|
## 课程背景:
|
2021-07-12 18:31:34 +08:00
|
|
|
|
开源软件在科学研究、工业制造、以及日常生活中发挥着重要作用。特别是近年来,开源软件在云计算、大数据、人工智能等新兴领域迅速成为技术主流。开源软件不仅是重要的计算基础设施, 也成为了社会生活依赖的基础设施。此外,国内很多IT公司也逐渐推出了一些高质量的开源项目,比如openEuler、TiDB、OceanBase、PaddlePaddle等。开源已经成为软件技术创新和软件产业发展的主要模式。
|
2021-07-06 16:32:57 +08:00
|
|
|
|
|
|
|
|
|
与传统开发模式相比,开源开发展现出充分共享、自由协同、无偿贡献、用户创新、持续演化的新特征,颠覆了诸多经典软件工程的基本假设和理论。越来越多的IT公司在内部推行开源理念和开发方法,以期提高创新能力以及开发效率和质量等。相比传统软件开发,开源软件开发有一套新的模型和技术。然而,鉴于相关课程的缺乏,广大同学们对此缺乏理解和实践。因此,我们开设此课程,以帮助计算机领域的同学们了解开源软件开发和开源社区参与,这是现时代技术环境下亟待掌握的基本知识。
|
|
|
|
|
|
|
|
|
|
## 内容提要:
|
|
|
|
|
|
|
|
|
|
本课程采用理论知识和开源实践相结合的方式进行设计,从开源模式出发,以学生参与开源项目的实践为整体线索,讲授开源软件开发方法、过程及其涉及的理论知识和技术。本课程将首先讲述开源模式,接下来分别介绍每个开发活动的背后的原理、基本操作流程和技术及最佳实践。其中,开源模式以开源历史发展为基础,介绍互联网协作技术的演变和革新,并计划邀请工业界开源布道师进行分享,让同学们对开源活动有直观的认知和体验;开源开发活动的理论知识和最佳实践将参考当前学术界对开源软件开发的经典以及最新的研究工作进行教授;开发活动的基本操作流程、技术和实践将邀请业界开源领域的优秀开发者进行传授。最后,课程将以选择并参与某个开源项目为课程大作业,以训练同学们将所学理论知识应用到实践当中的能力。
|
|
|
|
|
|
|
|
|
|
## 学时分配
|
|
|
|
|
课程总学时为48学时(3*16),大概分配:课程讲授占50%,学生的文献阅读和讨论占20%,学生参与开源项目的实践报告占30%。
|
2021-07-20 17:44:08 +08:00
|
|
|
|
|
|
|
|
|
## 文件结构
|
2021-08-02 18:10:20 +08:00
|
|
|
|
* [outline.md](./outline.md):课程大纲
|
2021-07-20 17:52:11 +08:00
|
|
|
|
|
2021-08-02 18:10:20 +08:00
|
|
|
|
* [courseware](./courseware/):课程课件
|
2021-07-20 17:52:11 +08:00
|
|
|
|
|
2022-07-19 14:58:08 +08:00
|
|
|
|
* [recruitOSSproject](./recruitOSSproject/):开源项目报名(为学生参与开源项目提供线索)
|
|
|
|
|
|
2021-08-02 18:10:20 +08:00
|
|
|
|
* [publicizeMaterial](./publicizeMaterial/):跟本课程相关的宣传/研讨材料等,例如大会报告slides
|
2021-10-11 23:21:37 +08:00
|
|
|
|
|
|
|
|
|
* [uploadYOURS](./uploadYOURS/):任何贡献者对课程有建议或素材或课件可记录或上载于此
|