软件工程专业有哪些课程?以清华大学的软件学院本科课程为例

标签:
清华大学清华大学的软件学院软件工程如何选大学专业如何选大学 |
http://s9/mw690/002W7iLNzy6ZmRoAc8U18&690
2014-2015 学年度本科课程介绍
软件学院
04100012 算法设计及其复杂性分析 2 学分 32 学时
04100041 大数据技术导论 1 学分 16 学时
34100202 软件工程(
1) 2 学分 32 学时
34100152 程序设计实践 2 学分
34100212 软件工程(
2) 2 学分 32 学时
34100224 离散数学 4 学分 64 学时
34100232 程序设计实训 2 学分 64 学时
34100245 数据结构与算法(
1) 5 学分 80 学时
34100254 数据结构与算法(
2) 4 学分 64 学时
34100294 计算机与网络体系结构(1) 4 学分 64 学时
34100304 计算机系统软件(
1) 4 学分 96 学时
34100325 软件工程(
3) 5 学分 80 学时
34100333 软件理论基础(1) 3 学分 48 学时
34100344 计算机与网络体系结构(
2) 4 学分 64 学时
34100352 软件理论基础(2):函数式语言程序设计 2 学分 32 学时
44100301 专业素质教育 1 学分 32 学时
44100343 Web
前端技术实训课程 3 学分 48 学时
44100354 计算机系统软件(
2) 4 学分 64 学时
44100365 专业专题训练 5 学分 80 学时
44100375 数字媒体(1):图形与动画 5 学分 80 学时
44100385 云数据管理(1) 5 学分 80 学时
44100395 网络系统(1) 5 学分 80 学时
44100415 数字媒体(2):多媒体 5 学分 80 学时
44100425 软件系统建模与验证(
1) 5 学分 80 学时
44100432 软件系统建模与验证(
2) 2 学分 32 学时
44100445 云数据管理(2) 5 学分 80 学时
44100472 软件文化概论 2 学分 32 学时
44100484 软件系统建模与验证(
1) 4 学分 64 学时
04100012 算法设计及其复杂性分析 2 学分 32 学时
The design and analysis of computer algorithm
本课程目的是使同学初步熟悉《算法设计及其复杂性分析》有趣而富有挑战的科研方法,经历其过程,了
解如何设计算法解决实际问题,并能进入计算复杂度这一重要而神奇的世界。教学方式是教师首先介绍关
于算法的基本理论并布置相应的问题,这些问题在不同的学期会有所不同,不过都具有很强的理论价值和
应用价值,其中曾经包括素数判定问题( 2002 年印度理工学院的一位教授和两位本科生在该问题上取得重
要进展,成果发表在《 Science》上)、利用前缀翻转操作进行整数排序问题(微软创始人比尔盖茨( Bill Gates)
在读大学二年级时在该问题取得有意义进展,成果发表在《 Discrete Mathematics》上)等一些有趣而易于
理解的问题。同学可以自由组成学习研讨小组,尝试展开相关问题的研究工作。教师将在科研方法上给予
指导,并且每周将进行一次面对面的专题研讨。最终学生提交问题求解报告以及一些中间过程报告,教师
根据问题的解决程度以及求解过程中提出思想的创新性等评定成绩。选课指导:本课程富有挑战性,需要
较大的勇气以及强烈的求知欲望和上进心。请想混学分或担心学习力不从心的同学不要选这门课。据往届
同学反映,本课程作业量大,富有挑战性,需要付出很大的努力,最终收获也很大。部分同学的研究成果
已经形成了学术论文。
04100041 大数据技术导论 1 学分 16 学时
Introduction of Big Data Technology
近年来,“大数据”作为一个新的名词在众多领域得到关注,包括科学、工程、医疗、卫生、经济、商业,
乃至整个社会。除了直观理解的“规模大”( Volume)特征以外,大数据还具有“高吞吐率”( Velocity),
“多样性”( Variety),“价值稀疏”( Value)等多个 V 特征。本课程侧重引导学生对大数据管理与应用的学
习兴趣和路线。从当前行业现状出发,利用一些真实案例,向学生介绍行业中大数据存在的真实情况,引
出一系列大数据所带来的价值与挑战,使得学生对相关背景和存在问题建立初步轮廓。通过介绍大数据相
关技术,让学生对大数据管理技术有一个大致了解,从而引导学生对后续相关课程的选则。此外,本课程
还将介绍知名大学在大数据研究方面的最新进展,以及潜在的研究方向,激发同学进一步学习研究的热情。
34100152 程序设计实践 2 学分
Practice of Programming
本门课程的目的是培养学生一自学为主熟练掌握一种新的编程环境和编程语言的能力。培养学生综合运用
所学知识,独立对软件的应用需求进行分析和整理,以协作的方式共同完成软件系统的设计,开发和测试,
体验软件项目开发的全过程。教学计划主要分两个阶段进行:首先通过一周的教学和练习使学生对.NET 框
架和 C 语言有一个基本的入门知识,要求学生通过自学和练习熟练掌握编程环境和编程技巧。在此基础上,
学生以三人为单位组成项目小组,根据《实验说明书》的要求以协作的方式完成一个完整的软件项目开发
任务。软件项目开发任务具有一定的开放性,要求学生自己对软件的需求进行分析,并进行功能设计。项
目开发过程中要求小组人员责任分工明确,开发过程阶段划分明确。在每个阶段学生需要提供详细的技术
说明文档并以 ppt 的形式在全班进行报告。项目开发过程应该包括:需求分析和功能设计阶段,系统设计
和模型设计阶段,软件演示和测试阶段。
34100202 软件工程( 1) 2 学分 32 学时
Software Engineering( 1)
本课程采用基本原理和方法讲解与案例教学相结合的方法,讲解过程式程序设计语言及其程序设计技术,
包括包括数据类型与表达式、顺序结构程序设计、选择结构程序设计、循环控制、数组、函数、指针、结
2014-2015 学年度本科课程介绍
构体等内容,使学生理解程序设计语言的基本结构,掌握程序设计的基本思想、方法和技巧。
34100212 软件工程( 2) 2 学分 32 学时
Software Engineering (2)
面向对象已成为计算机领域的主流技术之一, C++语言有效支持面向对象设计思想,应用十分广泛。课程
将以 C++语言为基础,详细介绍用 C++进行面向对象的程序设计的核心思想,注重实用的 C++面向对象程
序设计方法,阐述如何提高程序的可复用性和可维护性,以及如何提高程序编写效率和程序的运行效率。
本课程要求学生建立面向对象的思维模式,并能训练地用 C++实现这些思路。具体包括理解对象建立、封
装、继承、多态、析构等技术手段,理解面向对象的程序设计思想,掌握程序调试和验证的基本方法。通
过完成一定工作量的编程练习,掌握有一定规模的程序设计方法,培养编写实用程序的基本素质。
34100224 离散数学 4 学分 64 学时
Discrete Mathematics
本课程是软件学院的基础数学课程,以离散量为研究对象,即面向计算机科学的应用,同时欲揭示相关理
论的内在联系。本课程主要包括以下内容:( 1)数理逻辑部分:包括命题及其符号化、命题公式及其真值、
命题逻辑等值演算、命题逻辑的推理理论、谓词的概念及其符号化、谓词等值演算,范式以及谓词的推理
理论及公理化等内容。( 2)集合论:包括集合的概念、运算;关系及其表示,关系的性质,等价关系与等
价类、相容关系、偏序关系以及格与布尔代数;函数的概念,反函数和复合函数,模糊子集等内容。( 3)
实数集合与集合的基数、康托定理以及连续统假设等。( 4)代数结构部分:主要介绍代数系统的定义和性
质,半群、群及子群、陪集等的定义和性质及其判定,介绍特殊的群类及群的同态、同构基本定理,介绍
环和域的概念及基本性质,环的同态、同构基本定理等内容。
34100232 程序设计实训 2 学分 64 学时
Practical Training For Programming
本课程是以实践为主的高级语言程序设计课程,是软件工程课组的重要组成部分。本课程采用基于问题的
教学与学习方法。本课程将设计几类适合学生学习与实践的问题(因为每个学期均需要变更问题,所以具
体问题和分类方法可能会有所变化)。问题通常为三大类,例如:基本程序类、平台类和竞赛类。其中基本
程序类侧重于面向对象程序设计的一些思维模式、重要知识点、难点或易发生错误的知识点。平台类和竞
赛类均侧重于面向对象的程序设计的综合应用,提高学生学习的自主性和学习乐趣。本课程的第一个环节
是提出问题。在本课程的第二个环节中,学生将分成为小组,每个小组一般为 3 人,且不超过 3 人。学生
通过小组讨论分析并通过面向对象程序设计的方法解决问题。本课程的最后一个环节是汇报、讨论以及讲
评,从而培养学生综合应用计算机语言程序设计的能力。
34100245 数据结构与算法( 1) 5 学分 80 学时
Data Structrue and algorithm( 1)
本课程教学内容包括图论和数据结构和两部分。图论在计算机理论、算法以及工程实践中均起着非常重要
的作用,通过图论这一在计算机理论、算法以及工程实际中都起着重要作用的基础学科,培养学生的抽象
思维和严格逻辑推理能力,并使学生掌握处理离散结构所必须的描述工具和方法, 从而为数据结构和算法
课的学习奠定基础。数据结构是计算机程序设计的重要理论基础,它所讨论的知识内容和提倡的技术方法,
无论对进一步学习计算机领域的其它课程,还是对从事软件工程的开发,都有着不可替代的作用。通过本
门课程的学习,帮助学生正确理解和掌握图论和数据结构相关的基本概念、基本定理、基本算法及实现方
法,了解相关知识在计算机各个领域的重要应用,同时培养学生将实际问题抽象为数学问题并利用相应的
数学基本理论分析方法和算法解决问题的能力,使学生学会从问题入手,分析研究计算机处理的数据结构
的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储结构及其相应的操作算法,并初步掌握时间
2014-2015 学年度本科课程介绍
和空间分析技术。在理论和实践上都为后续其它计算机专业课程的学习奠定坚实的基础。
34100254 数据结构与算法( 2) 4 学分 64 学时
Data Structure and Algorithms (2)
本课程将围绕算法分析与设计的基本理论、基础知识、基本方法和基本技能等核心内容,以及数据管理、
智能系统和信息检索等领域所需要的基础性方法与新技术,通过丰富的案例,使学生掌握本课程所涉及的
关键技术,并提高实践和动手能力。本课程的主要内容包括:
1. 函数增长
2. 分治法
3. 随机算法
4. 排序算法
5. 动态规划
6. 贪心算法
7. 均摊分析与堆
8. NP 完全性理论
9. 近似算法
10. 多维数据访问方法
11. 图像与多媒体
12. 文本数据访问方法
13. 智能技术中的数据结构
14. 序列数据访问
34100294 计算机与网络体系结构(1) 4 学分 64 学时
Architecture of Computer and Network(1)
针对软件工程学科对计算机与网络原理的培养需求,围绕计算机与网络体系结构,讲解的主要知识点包括:
汇编级机器组织、接口与通信、存储系统组织、功能组织、多处理器和其他系统组织、性能提高技术和实
时与嵌入式系统。
通过这些内容的讲解,并结合混合程序设计、微处理器的软件模拟等实践工作,使学生具备以下能力:
1)系统化认知计算机与网络的基本原理与组织,了解硬件与软件的有效组织;
2)掌握设计与实现计算机与网络的能力。
34100304 计算机系统软件( 1) 4 学分 96 学时
Computer System Software (1)
本课程围绕两类资源(即硬件资源、数据资源和软件资源)的一体化管理及应用,讲解的知识点主要包括:
操作系统概述、进程管理、存储管理、 IO 设备管理、文件系统、操作系统安全;分布式系统概述、分布式
算法和体系结构; Web 技术、分布式对象框架、中间件、面向服务的体系架构;网格计算、云计算。
通过这些内容的讲解,并结合开源的 Unix操作系统 xv6、Linux操作系统 Ubuntu、开源的应用服务器 GlassFish
等,使学生具备以下能力:
1) 具备基于操作系统的核心概念、基本原理,深入分析并改造开源 Linux 操作系统的能力;
2) 具备对分布式系统或中间件设计、构建与优化的能力;
3) 具备编写或构造系统软件的基础理论和专门知识。
34100325 软件工程( 3) 5 学分 80 学时
Software Engineering(3)
2014-2015 学年度本科课程介绍
本课程从软件生命周期的角度讲解软件工程的基本原理和基本方法,使学生掌握需求分析、软件设计、软
件测试、软件演化、软件过程与管理等方面的基础知识,建立软件开发的系统化与工程化观念和质量意识,
能够综合利用软件工程的方法与技术,以小组方式进行中大规模软件开发,为将来从事大型软件系统的开
发与维护打下扎实的基础。
34100333 软件理论基础(1) 3 学分 48 学时
Software Theory(1)
这门课主要介绍形式语言、自动机、可计算性及相关内容,包括:基础知识;确定性有限自动机、非确定
性有限自动机;正则表示与语言;正则语言与正则文法;正则语言的性质、 Pumping 引理及应用;上下文
无关文法与语言;下推自动机、确定性下推自动机;上下文无关语言的性质、上下文无关语言的 Pumping 引
理及应用;图灵机、非递归可枚举的语言、问题的不可判定性等.
34100344 计算机与网络体系结构( 2) 4 学分 64 学时
Architecture of Computer and Network 2
针对软件工程学科对计算机与网络原理的培养需求,围绕计算机与网络体系结构,《计算机与网络体系结构
2》讲解的主要知识点包括:汇编级机器组织、实时与嵌入式系统、程序设计语言概述、虚拟机、语言翻译
简介、语言翻译系统等。
教学重点在于从“程序员角度”系统化介绍计算机与网络的基本原理及组织,突出软件与硬件的有效组织。
为学生掌握设计与实现计算机、网络和高级程序设计语言的能力打下良好基础。
34100352 软件理论基础(2):函数式语言程序设计 2 学分 32 学时
Functional Programming
函数式语言是编程语言的一个重要分支。相比命令式语言(如 C, Java 等),函数式语言更加抽象和简洁,
数学特性更强,更贴近于人的直接思维,便于书写出精简且严谨的程序。本课程的讲解基于纯函数式语言
Haskell。我们首先介绍基础知识(包括语法、语义等),然后介绍函数式语言的设计方法(包括递归、模式
匹配等),再进一步说明函数式语言区别于命令式语言的特点(无副作用、惰性求值、类型推导等),最后
介绍函数式语言在实际工程中的使用方法。
44100301 专业素质教育 1 学分 32 学时
Introduction of Professional Diathesis
通过本课程的学习,让学生了解软件专业的发展过程和基本内容、职业素质的基本要求、软件专业对人的
素质的基本要求,使学生树立正确的专业观和人生观,明确大学四年的学习目标,制定切实可行的实现计
划。
44100343 Web 前端技术实训课程 3 学分 48 学时
Web Front-end Technology
本课程由百度企业有经验的前端开发工程师主讲,结合当前流行的 Web 前端技术以及企业产品开发实践,
针对目前 Web 前端富交互领域和 Web 前端展现领域的研究热点和关键技术,课程从多个方面对 Web 前端
技术和架构进行讲解和分析,主要内容包括 web 交互技术发展趋势、浏览器渲染技术、 CSS 样式之美,
HTML5&CSS3 技术, JS 关键技术、 JS 架构设计以及地图 API 开发等,使学生掌握 Web 前端技术以及前端
工程性的开发方法。