1、计算与 软件工程课程群的教学实践骆斌( )邵栋( )南京大学软件学院计算机软件新技术国家重点实验室计算机类国家级教学团队会议, 2011,杭州计算与软件工程课程教学改革的背景 人才培养转型 从科学人才培养到工程师培养的转变 软件工程类课程 教学内容 与 教学方法 均需从面向计算机科学向面向软件产业转换科学研究人员与软件工程师 科学研究 人员 扩展 人类对于科学的 认识 需要 系统的学习科学知识和科学 方法 软件工程 师 构建 可靠好用的规模产品 需要学习 更为全面 的科学知识和包括科学方法在内的 各种 方法, 深刻理解 设计一个合格产品所涉及的 多方面 因素计算机科学专业的课程设置方式 分技术
2、主题的课程设置方式 计算机组成原理 (机器语言 ) 汇编语言、 (Fortran- C+)语言 操作系统、编译、数据库、网络 求同:数据结构、离散数学 软件工程、图形、人机交互、人工智能、程序设计语言理论、职业与道德 CAD、电子商务、 分技术主题利于专业分工与研究深入软件产业对人才培养需求的变化 形式化和自动化是 CS的核心, CS的进展不断提高可自动化的程度,对于软件研发而言: 越来越少的人会接触到系统软件构造, CE越来越走进 EE的怀抱 大规模软件、领域软件、嵌入式软件、可信软件、可用性等工程化需求越来越迫切,对大多数开发任务而言,算法 /性能的要求 ,工程性要求 工程性人才培养从 C
3、S中分离出来的想法逐步成熟 D. Parnas, “Software engineering programs are not computer science programs“ IEEE Software, vol. 16, 1999 与产业需求差距最大的十个知识域:沟通能力, 人机交互 /用户界面, 领导能力, 实时系统设计, 管理能力, 软件成本,软件度量,软件可靠性与容错,职业与道德, 需求获取与分析; IEEE Software, vol. 18, 2001 CC2002: SWEBOK2004(2010), SE2004(2010)/SEEKCCSE的课程设置 (计算机科学优先方
4、案 ) 较多沿用传统计算机科学 与 技术课程: 程序设计基础、面向对象方法、 软件工程概论 离散数学、数据结构、软件构造 计算机组织结构、操作系统与网络 软件需求、软件设计与体系结构、软件测试、软件过程与管理、人机交互的 SE方法:(两套) 职业基础、团队交流、工程经济学 一个专业存在专业名称相同的课程意味着该专业尚在成熟的道路上软件工程概论的传统教学方式 软件工程概论的教学方式 定位于计算机科学的一个知识领域 覆盖可研、需求、设计、测试、演化和管理等 就知识而知识,或穿插一个实验用例 软件工程概论在新专业教学面临的问题 因循 CS以程序设计为中心的课程设计思路 (编码编码再编码 , 现在只不
5、过是按照工程规范编码 ) 分离了软件构造与重构的知识教学 知识面面俱到,忽略了适用性描述 : 软件规模,产品特性,开发团队,成本,质量, . 工程观树立的时间? 4 3 2 1(那个年级 )CCSE的软件工程优先方案 整合程序设计基础、面向对象方法、软件工程概论三门课程,构建软件工程与计算 融软件工程技术和程序设计、计算系统认知教学于一体 从一上开始分三个学期执行,小规模系统 /中规模系统 /中规模产品 树立 SE理念,通过软件工程与程序设计的融合树立对计算系统构建认知 独立开设软件职业基础,团队合作动力学我们的对策:折中方案 参照其他工程专业的课程设置方案,面向软件产品构建,从简单到复杂,循序渐进展开教学 什么是计算系统? (软 )计算系统? 如何运用工程方法构造 (软 )计算系统?小型,中型,大型,与特定领域结合 如何训练构建软件产品的综合能力 ?融合软件管理、团队交流、职业素质 从计算看软件工程如何运用工程方法构建计算系统? 普式小型软件系统的构建 普式中型软件系统的构建 普式中型软件产品的构建 大型软件系统构建中用到的特定方法、技术与工具 不同计算环境下的软件产品开发 软件工程方法与特定软件应用领域的结合