面向AI实践的软件工程基础课程-北京航空航天大学罗杰.md

本文主要是介绍面向AI实践的软件工程基础课程-北京航空航天大学罗杰.md,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

面向AI实践的软件工程基础课程

目录:

  • 面向AI实践的软件工程基础课程
    • 目录:
    • 一、课程基本情况介绍
      • 1. 发展
      • 2. 课程在课程体系中的位置
      • 3. 课程的能力培养目标
      • 4. 课程的组织结构
    • 二、课程内容的建设方案
      • 1. 尽早引入人工智能开发平台与工具
      • 2. 面向智能软件开发的敏捷软件开发流程设计
      • 3. 面向智能软件开发的团队项目设计
      • 4. 课堂实践安排模板
    • 三、课程教学和共建计划

一、课程基本情况介绍

1. 发展

事件
2007首次邀请邹欣老师讲授软件工程
2012再次邀请邹欣老师讲授软件工程
2013基于“做中学”的模式,开始以实践为核心的软件工程课程改革试点
2016软件工程系列课程改革基本完成,软件工程课程改为选修
2017引入翻转课堂,尝试将软件工程课程教学和实践流程规范化
2019-软件工程课程更名为敏捷软件工程,与人工智能软件工程与嵌入式软件工程合并为计算机学院软件工程课程,变为必修,三门课程独立授课

2. 课程在课程体系中的位置

学期课程
大三下敏捷软件工程
大二下面向对象设计与构造
大二上算法设计与分析
大一下数据结构与程序设计基础

3. 课程的能力培养目标

  • 软件能力:按照工程化方法来开发高质量复杂软件系统的能力
  • 软件工程基础课程:通过团队协作使用现代软件工具按照软件工程方法来开发高质量并且可用复杂软件系统的能力
    • 复杂软件系统:具有一定复杂性、需要团队协作来完成的软件系统
    • 团队协作:两人协作、5-7人团队协作
    • 软件开发工具:充分利用现代工具来提高开发的效率和质量
    • 软件工程方法:构建一个有效协作的功能团队,综合运用极限编程、测试驱动、敏捷等软件工程方法和最佳实践,通过有效项目管理按计划的开发满足典型用户需求的可用软件方法
    • 高质量:能够使用技术性手段来确保所开发软件的质量
    • 可用:能够通过技术性手段来证明软件的可用性并获取用户的反馈

4. 课程的组织结构

  • 课堂教学:研讨性教学、课堂练习、作业点评、讨论、团队项目汇报
  • 课后作业:博客作业
  • 项目实践:
    • 结对项目 (2周)
    • 团队项目 (12周)
    • 总结回顾 (2周)
  • 16周左右完成课程

团队项目

  • 目标
    • 练习1对多合作
    • 学习敏捷软件开发方法,软件团队的构建,软件生命周期及各个阶段所用到的工具
    • 开发一个值得骄傲的可用软件
  • 时间
    • Alpha迭代4周,项目评审和反思1周
    • Beta迭代4周,反思1周
    • Gamma迭代4周,项目评审和反思1周

    注:Beta阶段反思与Gamma阶段设计与计划压缩成一周

  • 内容
    • 代码规模在1-2万行左右,面向实际用户的可用软件
    • 在已有软件的基础上进行软件开发,或者提出满足特定用户需求的软件并进行开发
    • 以5~7人团队的形式进行团队协作
    • 通过两轮迭代的敏捷软件开发,体验软件开发的全生命周期
    • 每一轮迭代的流程和任务: |时间|软件开发阶段|博客任务| |--|--|--| |第一周|计划和设计|1. 团队贡献分分配
      2. NABCD需求分析
      3. 功能规格说明书
      4. 技术规格说明书| |第二周|实现(冲刺第一周)|五篇每日例会博客| |第三周|实现(冲刺第二周)|五篇每日例会博客| |第四周|稳定和发布|1. 测试计划和报告
      2. 发布说明| |第五周|评审和反思|1. 维护和反思
      2. 项目展示
      3. 转会人员确定(Alpha)|
  • 要求
    • 团队项目每一项任务都必须有结果
      • 代码签入、博客、文档等
    • 团队项目过程中所有材料公开
      • 每个团队公布可实施的进度表
      • 在冲刺过程中发布每日例会记录
    • 团队项目开发的软件要有真实用户
      • 展示用户数量和对软件的反馈
    • 在每轮迭代之后进行反思
      • 找出自己和团队在本轮迭代之中的不足之处,并提出改进办法
      • 从反思和错误中学习巩固软件工程知识和方法
  • 课程实践安排
    • 以19年上学期为例: 课程实践安排

二、课程内容的建设方案

1. 尽早引入人工智能开发平台与工具

  • 在开课之前,基于微软AI301课程整理出一个基础的人工智能开发平台和工具预训练资料
  • 尽可能早的将资料分享给学生进行预习,使其基本掌握人工智能开发工具的使用
  • 在课程中加入对人工智能软件开发等发展趋势的介绍
  • 为在团队项目实践中引导学生自觉地使用人工智能技术解决实际问题做准备

2. 面向智能软件开发的敏捷软件开发流程设计

  • 在经典的敏捷软件开发流程的基础上,面向智能软件的开发要求和特点进行改造适配

    软件开发流程改进适配计划
    需求分析加入与智能相关需求的
    设计人工智能模型的设计及
    实现人工智能模型的实现、训练及验证
    测试人工智能模型的测试

3. 面向智能软件开发的团队项目设计

  • 智能软件开发项目设计:
    • 从人工智能领域研究者手中获取需求,提升项目类型的多样性
    • 注意与当前先进的人工智能技术和理念相结合,激发学生的兴趣
  • 过程管理机制设计:
    • 在过程管理的结点中加入与人工智能技术相适应的检查结点
    • 加强对技术风险的管控,注意引导学生规避

4. 课堂实践安排模板

时间课堂任务项目作业
第0周第0次个人作业,人工智能开发平台和工具预训练
第1周个人项目
第2周代码复审、结对项目
第3周个人项目点评代码复审、结对项目
第4周案例分析、团队博客作业(团队介绍,采访说明)
第5周结对项目点评团队项目选择:项目建议和NABCD用户需求分析,需求中智能化问题分析,团队贡献分分配方案
第6周审核项目计划计划和设计:功能规格说明书和设计文档,包含人工智能模型设计、训练数据准备方案、技术选择等
第7周规格说明书审核实现(冲刺):发表至少10次每日例会记录,人工智能模型的实现与训练
第8周项目进度追踪
第9周项目进度追踪稳定和发布:测试报告、发布说明,人工智能模块的测试
第10周测试和发布情况推广和收集用户反馈
第11周Alpha阶段项目评审Alpha阶段反思,团队成员转会
第12周反思博客点评,Beta阶段改进计划计划和设计:功能规格说明书和设计文档,包含人工智能模型设计、训练数据准备方案、技术选择等
第13周规格说明书审核实现(冲刺):发表至少10次每日例会记录,人工智能模型的实现与训练
第14周项目进度追踪实现(冲刺):发表至少10次每日例会记录
第15周项目进度追踪稳定和发布:测试报告、发布说明,人工智能模块的测试
第16周测试和发布情况推广和收集用户反馈
第17周Beta阶段项目评审Beta阶段反思

根据学校课程体系的情况,可以依据模板进行若干修改。例如本届北航删去了个人项目,并增加了一个团队开发迭代。

三、课程教学和共建计划

任务时间节点
完成预训练资料并发布2019年1月底
完成团队实践项目开发流程的改造2019年2月
完成面向智能软件开发的团队项目题目设计2019年3月初
《软件工程基础》课程选课2019年3月初
引导学生完成预训练,发布团队项目题目2019年3月底
团队项目选题完成,开始项目计划和需求分析,分享学生的项目计划,需求分析报告和设计文档2019年4月初
项目实践过程和源代码在GitHub公开2019年4月初开始
项目每日例会报告在cnblogs公开2019年4月初开始
分享第一轮迭代团队项目展示以及反思2019年5月初
进入第二轮迭代,优化需求分析报告和设计文档,优化团队项目协作方式和项目管理方式2019年5月初
进入第三轮迭代2019年5月中
分享最终项目展示及总结反思2019年6月中

班级:

  • https://edu.cnblogs.com/campus/buaa/BUAA_SE_2019_LJ
  • https://edu.cnblogs.com/campus/buaa/BUAA_SE_2019_RJ

这篇关于面向AI实践的软件工程基础课程-北京航空航天大学罗杰.md的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/694414

相关文章

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装