## 课程简介: 《开源软件开发导论》课程是一门面向软件工程、计算机科学与技术等专业的高年级本科生的专业课程。课程的目的是通过系统地讲授开源软件的发展历史与现状、基本思想与概念、开发方法与关键技术、支撑工具与系统平台以及相关科研工作,同时结合基于互联网开源软件平台的课程实践环节,使学生掌握开源软件开发的理论知识与实践技能,具备进行开源软件开发和开展相关研究的能力。 This course is designed for senior undergraduate students majoring in software engineering and computer science and technology. The main objectives of this course are: introduction to the history and current status, the basic ideas and concepts, development methods and key technologies, supporting tools and platform, and related research of open source software; course project practice based on Internet open source software platforms; enabling students to master the theoretical knowledge and practical skills for open source software development; prepare the students for future research and engineering work in this field. ## 课程计划 - 1.  开源软件背景知识(2学时) - 2.  开源软件开发的基本概念与实例剖析(6学时) - 3.  开源软件开发方法与支撑工具(6学时) - 4.  开源软件开发实践(10学时) - 5.  开源软件研究(2学时) - 6.  开源的发展趋势与未来展望(2学时) - 7.  个人实践报告,项目实践总结报告(4学时) ## 教学方法与考核 【教学方法】本课程采用课堂教学、团队实践和研讨并重、结合课外学习和实践的教学方法。由于这门课程是讲开源软件的,绝大部分课程资料和学生的作业都已公开的形式展现出来。 【考核】平时成绩 50%,项目实践成绩 50% ## 课程安排 - 课次1: 课程介绍,开源背景介绍,第一次作业布置 - 课次2: 介绍开源软件开发的基本概念,包括开源平台、开源社区、开源项目、开源生态和开源协议等 - 课次3: 开源软件开发的实例剖析 (1) - 课次4: 开源软件开发的实例剖析 (2) - 课次5: 开源软件开发的实例剖析 (3) - 课次6: 开源软件开发方法与支撑工具(1) - 课次7: 开源软件开发方法与支撑工具(2) - 课次8: 开源软件开发方法与支撑工具(3) - 课次9: 开源软件开发实践(1) - 课次10: 开源研究 - 课次11: 开源软件开发实践(2) - 课次12: 开源软件开发实践(3) - 课次13: 开源软件开发实践(4) - 课次14: 开源软件开发实践(5) - 课次15: 开源的趋势与未来展望 - 课次16: 项目报告(1):个人实践报告,项目实践报告 - 课次17: 项目报告(2):实践报告总结 ## 这门课的老师 - 孙海龙: http://shi.buaa.edu.cn/sunhailong/zh_CN/index.htm - 高翔:http://soft.buaa.edu.cn/info/1124/6921.htm - 邹欣:https://edu.csdn.net/me/softwareteacher ## 关于这门课的教学方法 Learning by Doing (做中学),通过实践来学习。 ## 参考项目 大家可以从这些项目中选择一个或者几个项目参与: - 开源的技能树:https://gitcode.net/csdn/skill_tree_opensource (构建一个覆盖开源软件开发知识和技能的结构化的知识图谱 + 练习题) - 开源的 CSDN 可视化项目: https://gitcode.net/oslabs/csdn-datav (一个基于海量 CSDN 数据的大数据可视化项目,由 CSDN 的技术人员和社区开源爱好者一起合作开发) - 开源的笔记项目: https://gitcode.net/weixin_45873510/okidoki (一个帮助用户做笔记和事项管理的开源小软件,由北航学生开发了第一版,作为 北航计算机学院软件工程课程的项目之一)