CSAPP课程网站

课程名:系统级程序设计

课程内容

通过介绍计算机系统的核心概念,使学生了解这些概念如何实实在在地影响应用程序的正确性和性能。了解数字在计算机系统中的表示方法以及算术运算的特点,从而避免算术溢出这一个造成程序错误和安全漏洞的常见根源。了解程序中不同控制结构(比如条件、循环和开关语句)生成的基本指令模式,过程的实现、不同数据结构的分配和访问方式,从而理解常见的代码安全漏洞(比如缓冲区溢出),以及理解程序员、编译器和操作系统可以采取的减轻这些威胁的措施。了解如何从程序员的角度提高代码的执行性能。了解链接的基本过程。

参考资料

1)深入理解计算机系统(csapp),第3版,2016

作者:Randal E. Bryant and David R. O’Hallaron 教材官网:http://csapp.cs.cmu.edu 在这里可以找到完整的教材配套ppt,和一些有用的实验题目。

2)C程序设计语言, 第2版, 1988

作者: Brian Kernighan and Dennis Ritchie 作者是C语言的发明者。csapp从程序员的角度理解计算机系统,而C语言是最接近机器底层的编程语言,汇编语言是最接近程序员的机器语言。因此,C语言和汇编语言是该门课程的必修语言。

3) 课件<a href=“https://gitee.com/li-qingan/cs-docs/tree/master/csapp/”>slides</a>

理论课成绩构成

理论课上课计划

教学计划

第n次课 章节 内容
1 第1章 计算机系统漫游 课程简介、计算机系统概述
2-3 第2章 信息的表示与处理 位、字节、整数的表示与操作
4 第2章 信息的表示与处理 浮点数的表示与操作
5 第3章 机器级表示 机器编程——入门:算术逻辑指令、寄存器、操作数寻址、访存指令
6-7 第3章 机器级表示 机器编程——控制:状态寄存器与条件码、条件分支、循环、switch
8 第3章 机器级表示 机器编程——过程调用:过程调用的控制转移、数据转移、内存管理
9 第3章 机器级表示 机器编程——数据:数组、结构类型的表示与操作,浮点数指令
10 第3章 机器级表示 机器编程——高级主题:内存布局、缓冲区溢出的攻击与防范
11 第5章 程序性能的优化 优化概述、编译优化的限制、人工优化的机会
12 第5章 程序性能的优化 优化概述、编译优化的限制、人工优化的机会

实验课程

  1. Data lab(点击查看详细说明
  2. Bomb lab(点击查看详细说明
  3. Attack lab(点击查看详细说明