*计算机概论与课程绪论
第一节课为绪论课,所有内容考试都不做要求
目录
*计算机简史
第一台电子计算机:ENIAC
- 在 1946 年诞生于美国宾夕法尼亚大学
- 物理学家约翰·莫克利和工程师普雷斯伯·埃克特领导研制
- 占地 170 平方米,重达 30 吨,耗电功率约 150 千瓦
- 每秒可进行 5000 次运算
第二代计算机(50 年代中后期到 60 年代中期)
第三代计算机(60 年代中期到 70 年代中期)
- 逻辑元件与内存均由集成电路实现
- 硬件上,开始应用微程序、高速缓存(Cache)、虚拟存储器、流水线等先进技术
- 出现操作系统,其具有资源调度、人/机交换控制等功能
- 大型机/巨型机与小型机同时发展
第四代计算机(70 年代中期开始)
- 以大规模超大规模集成电路及微处理器为典型特征
- 并行处理技术
- 计算机网络的发展与广泛应用
- 超标量技术
- 一个时钟周期执行多条指令
- 向量化技术
- 一条指令运算多组数据
- 嵌入式系统
*计算机基本结构
- 服务器
- 超级计算机
*处理器、操作系统与编译器简介
- 处理器
- 操作系统
一组主管并控制计算机硬件与软件资源、提供公共服务并组织人机交互的系统软件程序。根据运行的环境,可分为桌面操作系统、手机操作系统、服务器操作系统、嵌入式操作系统等- 进程管理与线程管理:处理器的调度、分配和回收等
- 存储管理:存储分配、存储共享、存储保护、存储扩张
- 设备管理:设备分配、设备使用、设备传输控制等
- 文件管理:文件存储空间的管理、目录管理、文件操作系统管理、文件保护
- 进程与线程
- 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配(包括存储分配)和调度的基本单位,是操作系统结构的基础
- 线程(Thread)是操作系统能够进行运算调度的最小单位,被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务
*计算机编程语言
- 二进制与汇编
- 高级编程语言与编译
- 编译器
- 将一种编程语言(通常为高级语言)翻译为另一种低级语言(通常为低级语言)的程序
- 主要工作流程:源代码(source code)-> 预处理器(preprocessor)-> 编译器(compiler)-> 汇编程序(assembler) -> 目标代码(object code)-> 链接器(Linker)-> 可执行程序(executables)
- 包括词法分析、语法分析、语义分析、中间代码生成、中间代码优化、后端代码优化、代码生成等步骤
- 有众多编译选项供选择使用
- GNU、LLVM、Open62 等开源编译器;Intel 等商用编译器
- 编译器
- 高级编程语言
*Fortran 编程语言
- 世界上第一个被正式推广使用的高级编程语言
- 为科学工程计算和企事业单位管理中能用数学公式表达的问题而设计的,其数值计算功能较强
- 自 1954 年被提出以来,仍历久不衰,在物理、化学、地学、航空航天等学科学科的数值计算中始终是主要编程语言
- 对科学计算领域的人员而言,Fortran 程序设计是需要熟练掌握的一项必备技能
*课程教学目的、教学安排与考试方式
*为什么开设本课程
- Fortran 是科学计算仍在广泛使用的编程语言
- 国际上有大量 Fortran 并行科学计算软件,为各学科的发展提供了有力的基础支撑
- 清华大学之前没有 Fortran 程序设计课程,而物理、化学/化工、热能、建筑、水利、航空航天、环境、地学等学科有基于 Fortran 研制自主科学计算软件的需求
- 本课程将有利于清华培养能为基础科学计算软件的高水平自立自强做出贡献的人才
*教学目标
- 让学生了解计算机的相关背景和 Fortran 编程语言的重要性
- 让学生掌握 Fortran 编程的系统性知识,具备科学计算的熟练编程和调试能力
- 让学生了解并行编程的知识,具备 Fortran 的并行编程能力
*参考书目
《Fortran 95 程序设计》,中国电力出版,彭国伦编著
*授课内容
- 开发环境与工具
- Linux 操作系统
- 编译器简介
- 编辑器 vi
- Linux 下编译器的使用
- 科学计算中的 Fortran 软件
- 航天航空领域
- 计算物理领域
- 计算化学领域
- 计算地球领域
- Fortran 程序设计基础
- 字符集
- 书面格式
- 数据类型声明与混合运算
- 数字表达式
- 输入输出及声明
- 输出命令
- 输入命令
- 格式化输入输出
- 自定义数据类型
- KIND 使用
- 流程控制与逻辑运算
- IF 语句与逻辑运算
- 浮点数与字符集的逻辑运算
- SELECT CASE 语句
- 其他流程控制语句
- 二进制的逻辑运算
- 循环
- DO 循环
- DO WHILE 循环
- 循环的流程控制
- 循环的应用
- 数组
- 基本使用
- 动态数组分配
- 数组的存储规则(内存机制)
- 数组的内容设置
- 数组的应用举例
- 函数
- 子程序(SUBROUTINE)的使用
- 函数(FUNCTION)的使用
- 函数中的局部变量
- 全局变量(COMMON)
- 函数参数声明与传递
- 接口函数
- 特殊函数类型
- MODULE
- 宏定义
- 文件
- 文件的概念
- 文件的操作
- 顺序文件的操作
- 直接访问文件的操作
- 二进制文件的操作
- 以文件方式访问字符串
- NAMELIST
- 应用举例
- 编译器的高级使用
- 编译器的完成功能
- 编译过程
- 基于编译器的程序调试
- 编译优化与选项
- 与其他语言链接
- 数值方法应用
- 求解非线性函数
- 线性代数
- 积分
- 插值算法与曲线近似
- 数值计算库 IMSL
- Fortran 并行程序设计
- 并行程序简介
- 消息编程接口 MPI 入门
- MPI 并行程序编译与运行
- MPI 组通信
- MPI 求解泊松方程
- MPI 非连续数据发送
- MPI 并行的两种基本设计模式
- 共享内存并行体系架构
- OpenMP 并行编程
- MPI + OpenMP 混合程序的并行运行提交
- 科学计算库
- 偏微分方程求解
- 高性能数值计算库 PetSC 入门
*考核方式
- 考勤 10%
- 课堂表现 10%
- 平时作业 40%
- 期末考试 40%