From 4771838ed2b0130343f393d8a64e0e1add593f31 Mon Sep 17 00:00:00 2001 From: minghuizhou Date: Tue, 6 Jul 2021 16:32:57 +0800 Subject: [PATCH] Add files via upload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 课程简介和课程大纲 --- README.md | 15 +++++++++++++-- outline.md | 31 +++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 outline.md diff --git a/README.md b/README.md index 5a81843..07cab0a 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,13 @@ -# OSSDevelopment -Materials for the course <open source software development/open source technology> +本课程为大学计算机系本科生和研究生设计,课程目的是使得计算机领域的同学们对于开源软件的开发方法、开发过程和支持技术有深入的了解,对于如何将抽象方法和理论知识结合到工程中有更好的锻炼,对于参与开源软件社区有基本的掌握。 + +## 课程背景: +开源软件在科学研究、工业制造、以及日常生活中发挥着重要作用。特别是近年来,开源软件在云计算、大数据、人工智能等新兴领域迅速成为技术主流。开源软件不仅是重要的计算基础设施, 也成为了社会生活依赖的基础设施。此外,国内很多IT公司也逐渐推出了一些高质量的开源项目,比如openEuler、TiDB、oceanBase、PaddlePaddle等。开源已经成为软件技术创新和软件产业发展的主要模式。 + +与传统开发模式相比,开源开发展现出充分共享、自由协同、无偿贡献、用户创新、持续演化的新特征,颠覆了诸多经典软件工程的基本假设和理论。越来越多的IT公司在内部推行开源理念和开发方法,以期提高创新能力以及开发效率和质量等。相比传统软件开发,开源软件开发有一套新的模型和技术。然而,鉴于相关课程的缺乏,广大同学们对此缺乏理解和实践。因此,我们开设此课程,以帮助计算机领域的同学们了解开源软件开发和开源社区参与,这是现时代技术环境下亟待掌握的基本知识。 + +## 内容提要: + + 本课程采用理论知识和开源实践相结合的方式进行设计,从开源模式出发,以学生参与开源项目的实践为整体线索,讲授开源软件开发方法、过程及其涉及的理论知识和技术。本课程将首先讲述开源模式,接下来分别介绍每个开发活动的背后的原理、基本操作流程和技术及最佳实践。其中,开源模式以开源历史发展为基础,介绍互联网协作技术的演变和革新,并计划邀请工业界开源布道师进行分享,让同学们对开源活动有直观的认知和体验;开源开发活动的理论知识和最佳实践将参考当前学术界对开源软件开发的经典以及最新的研究工作进行教授;开发活动的基本操作流程、技术和实践将邀请业界开源领域的优秀开发者进行传授。最后,课程将以选择并参与某个开源项目为课程大作业,以训练同学们将所学理论知识应用到实践当中的能力。 + +## 学时分配 +课程总学时为48学时(3*16),大概分配:课程讲授占50%,学生的文献阅读和讨论占20%,学生参与开源项目的实践报告占30%。 diff --git a/outline.md b/outline.md new file mode 100644 index 0000000..78ccf66 --- /dev/null +++ b/outline.md @@ -0,0 +1,31 @@ +课程大纲 + +## 第1次课:开源软件及其开发概述:历史和现状,国际开源社区,国内开源发展。(引言) + +## 第2次课:软件开发过程:开源的变革。传统软工与开源软工的异同。(软工基础理论篇) + +## 第3次课:开源开发的支持平台、技术以及参与贡献的过程。(熟悉开源平台和相关参与操作,布置开源任务的选择) + +## 第4次课:课程项目的开始:选择开源项目和开源任务。(criteria to select open source project and task) + +## 第5次课:邀请国内开源项目maintainer分享其创建、维护/开发开源项目的经验。(多个项目,为开源任务选择做准备&提供依据) + +## 第6次课:软件工程经典思想和原则:设计原理。及其在开源项目中的应用和变化。(软工基础理论篇) + +## 第7次课:开源软件开发的典型开发活动及支持技术(1)。(开源贡献实践篇:如何沟通,如何提交PR, et al.) + +## 第8次课:课程项目报告(1):任务选择,合作反馈,工具使用等。 + +## 第9次课:开源社区及开源文化。与开源布道师面对面。 + +## 第10-11次课:开源软件开发的开发活动和支持技术、及实践(2)。(开源贡献实践篇:讲授+课堂实践) + +## 第12次课:课程项目报告(2):工具使用,社区体验,问题和挑战等(尤其协同协作问题)。 +  +## 第13次课:开源治理,开源基金会,开源与法律。 + +## 第14次课:开源软件开发的挑战和相关研究。 + +## 第15次课:邀请业界开源专家就开源开发进行经验分享:开源需要的技术和能力。 + +## 第16次课:课程项目结题报告。