《软硬件接口》课程大纲
Coursera课程 The Hardware/Software Interface是华盛顿大学提供的一门课程,当中汇编语言、进程结构、Java实现等章节内容我觉得对于学编程的同学来说很实用。教学环境是Fedora,顺带介绍了一些经常使用工具的使用。
课程大纲
- 这门课程将会让学生知道当软件执行时究竟发生了什么,并说明这个问题可以通过硬件架构层、汇编层、C语言层和Java层等数层抽象解答。-
- 这门课程的核心是关于C、汇编、以及底层数据表示的,但同一时候与更高层(Java语言实现机理)、更底层(处理器通用架构)、操作系统(无关操作系统的实现)相关。
- 对于那些想要专注于高层抽象的计算机专业学生来说,这门课可能是他们学习到的关于C语言及以更下层的唯一课程。只是,他们大多可以同一时候学到一些系统编程、硬件设计与实现、操作系统、编译器等知识。
- 对于对硬件、嵌入式系统、计算机project、计算机架构等感兴趣的学生来说,这门课程是一门入门课程,兴许课程会在特定领域更加深入,而且会关注更下层的硬件实现、电路设计等。
课程主题
本课程主要有三个主题。
- 表示:不同的数据类型,如整数和结构体数组,在内存中怎样存在?指令怎样编码?怎样生成内存地址并用于创建复杂的数据结构?
- 翻译:高层的语言,如C和Java怎样转换成硬件处理器的基本指令?
- 控制流:计算机怎样阻止计算的顺序,怎样跟踪大型程序当前的执行轨迹,多个进程怎样并行执行?
课程目标
课程结束后,学生应该可以
- 理解高层次的程序转换成可以被处理器运行的指令流的过程
- 知道指针是什么,以及怎样使用指针操纵复杂的数据结构
- 可以使用X86汇编语言写简短的程序,并理解汇编语言和高层次语言怎样映射
- 理解分级存储器的基本组织和參数,理解它对于系统性能的重要性
- 可以解释清楚操作系统的功能
- 知道Java和C的本质差别
- 理解并行机制以及它在系统级的重要性
- 成为更高效的程序猿,更有效的debug,对系统性能更敏感
课程专题
大约每周一个专题,包含
- 数字的表示
- 汇编语言
- C语言基础
- 内存管理
- 操作系统的进程模型
- 高层次机器架构
- 分级存储器
- 高层次语言的实现