面向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

相关文章

Java 的ArrayList集合底层实现与最佳实践

《Java的ArrayList集合底层实现与最佳实践》本文主要介绍了Java的ArrayList集合类的核心概念、底层实现、关键成员变量、初始化机制、容量演变、扩容机制、性能分析、核心方法源码解析、... 目录1. 核心概念与底层实现1.1 ArrayList 的本质1.1.1 底层数据结构JDK 1.7

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

springboot依靠security实现digest认证的实践

《springboot依靠security实现digest认证的实践》HTTP摘要认证通过加密参数(如nonce、response)验证身份,避免明文传输,但存在密码存储风险,相比基本认证更安全,却因... 目录概述参数Demopom.XML依赖Digest1Application.JavaMyPasswo

Spring的基础事务注解@Transactional作用解读

《Spring的基础事务注解@Transactional作用解读》文章介绍了Spring框架中的事务管理,核心注解@Transactional用于声明事务,支持传播机制、隔离级别等配置,结合@Tran... 目录一、事务管理基础1.1 Spring事务的核心注解1.2 注解属性详解1.3 实现原理二、事务事

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

Java 结构化并发Structured Concurrency实践举例

《Java结构化并发StructuredConcurrency实践举例》Java21结构化并发通过作用域和任务句柄统一管理并发生命周期,解决线程泄漏与任务追踪问题,提升代码安全性和可观测性,其核心... 目录一、结构化并发的核心概念与设计目标二、结构化并发的核心组件(一)作用域(Scopes)(二)任务句柄

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche

SpringBoot集成WebService(wsdl)实践

《SpringBoot集成WebService(wsdl)实践》文章介绍了SpringBoot项目中通过缓存IWebService接口实现类的泛型入参类型,减少反射调用提升性能的实现方案,包含依赖配置... 目录pom.XML创建入口ApplicationContextUtils.JavaJacksonUt