UW CSE 351: The Hardware/Software Interface 目的及大纲

课程目的

本课程旨在培养学生对于当软件运行时到底“发生了什么”的感知能力,这个问题其实有多种抽象层次的答案,包括硬件构架层次的,汇编层次的,C程序层次的以及Java程序层次的。本课程构建围绕的核心是C语言,汇编,和低级的数据表现方式,但这些恰恰与更高级的内容(大致如基础Java如何实现)和跟低级的(处理器的基本结构)以及操作系统的角色(不是操作系统的实现方式)相关联。

对于那些想研究高级抽象的学生,此课程极有可能是他们学过的只考虑C语言及以下内容的专业课。但大多数学生还是会学习如System Programming,OS,Compiler,Computer Network之类的课程的。

对于那些对硬件,嵌入式系统,计算机工程,计算机架构感兴趣的同学,此课程是一个对于后来的如Digital Design&Digital Circuit这些课程的先导课程。更多高级课程有…

课程主题

本课有三个主题
- 存在方式: 不同的数据类型是如何在内存中存在的,指令是如何编码的,以及内存地址是如何产生并用其来创造复杂结构的。
- 翻译: 高级语言(特别是C和Java)是如何被翻译成可被硬件执行的指令的
- 控制流: 计算机是如何掌控计算的顺序,跟踪自己在大程序中的位置,以及创造多进程并行的幻觉的。

课程目标

课程完成后,学生能够:
- 描述这样一个多步骤的过程:高级程序如何变成一串指令流
- 使用指针处理复杂数据结构
- 能够写简单的x86-64汇编代码
- 描述内存层次结构的基本组织结构和组成元素并解释其对系统功能提供的重要意义
- 解释操作系统的定位
- 解释Java是如何根本地不同于C
- 解释并行性是什么以及为啥对于系统很重要
- 更有效率地编程

课程大纲

大概的主题单(每周 2~4课)
- 内存与数据呈现
- 整数和浮点数的表现方式
- 机器码与C语言
- x86汇编
- 过程和栈
- 数组和其他数据结构
- 内存和缓存
- 操作系统过程模型
- 虚拟内存
- 内存分配
- 高级语言实现

工作量

大致内容为:
1. 讲座: 29次讲座
2. 编程任务(Labs): 有6个编程任务,大概是每隔一周的时间安排。…我们会用这些任务加强关键概念…
3. 写作任务(HOMEWORK):有4个写作任务,也是每隔一周一次,大部分是课本上的问题。…
4. 阅读:我们会安排来自相对应讲座主题的课本的阅读
5. 期中考:…
6. 期末考:…

注意:’…’是个人认为可以忽略的内容,详细见CSE 351: The Hardware/Software Interface

阅读更多
换一批

没有更多推荐了,返回首页