ICS课程学习(1)——概述
计算机导论学习(1)——概述
课程课件链接:15-213 Lec1:Overview
课程主题
学习系统知识。
硬件(处理器、内存,磁盘,网络设备)和软件(操作系统,编译器,库,网络协议)如何结合支持应用程序的执行
完成该课程学习后可以获得:
- 成为一个更加高效的程序开发者
- 更加高效的找到和消除bug
- 能够理解和调优程序性能
- CS后续专业课程的基础
为CS专业后续课程(像编译器,操作系统,网络,计算机架构,嵌入式系统,存储系统,计算机安全等等)的基础课程。
理解事物是如何工作的(工作机制)非常重要
在大部分CS课程中强调抽象,像:
- 抽象数据类型
- 渐近分析
- …
然而这些抽象有其局限性, 尤其存在bug的情况下,因此就需要理解底层实现的细节,因为抽象接口有时不能提供所需要的控制或性能需求。
课程学习方法
大部分的CS专业的系统课程学习方法是通过课程的学习,然后从零实现一个简化版的系统。例如:
计算机架构
verilog语言实现一个流水线处理器操作系统
实现一个简单的可执行操作系统编译器
编写一个简单语言的编译器网络
实现和仿真网络协议栈
而该计算机系统导论的学习是从程序员的角度了解更多关于底层系统的知识,然后成为一个更加高效的软件开发者。
课程内容
程序和数据
主要内容
- 比特操作,算术,汇编语言程序
- C语言控制和数据结构表示
- 架构和编译器方面的内容
相关实验
- Lab0(C programming Lab): 测试C语言能力
- Lab1(datalab): 操作比特
- Lab2(bomblab): 拆除一个二进制炸弹
- Lab3(attacklab): 代码注入攻击方面的基础知识
分层存储架构
主要内容
- 内存技术,内存层次,缓存(cache),磁盘,…
- 架构和操作系统方面的内容
相关实验
- Lab4(cachelab): 构建一个cache仿真器,并对局部性进行优化
- 学习如何在开发的程序中利用局部性原理
虚拟内存
主要内容
- 虚拟存储,地址转换,动态存储分配
- 架构和操作系统方面的内容
相关实验
- Lab5(malloclab): 编写自己的malloc接口
- 体验下系统级编程
异常控制流
主要内容
- 硬件异常,进程,进程控制,Unix信号,非本地跳转
- 编译器,操作系统和架构方面的内容
相关实验
- Lab6(tshlab): 编写一个自己的Unix shell
- 首次介绍并发(concurrency)
网络和并发
主要内容
- 上层和底层I/O网络编程
- Internet服务,Web服务器
- 并发,并发服务器设计,线程
- I/O复用机制(通过select方式)
- 网络,操作系统和架构方面的内容
相关实验
- Lab7(proxylab): 编写一个自己的Web代理
- 学习网络编程以及更多的关于并发和同步的知识。
注:
每个实验都有一个明确定义的目标(解决一个难题或者赢得比赛)。
通过完成实验学习新的概念和技能
课本
- [Computer Systems: A programmer’s Perspective, Third Edition)(http://csapp.cs.cmu.edu)
- The C Programming Language, Second Edition, Prentice Hall, 1988
ICS课程学习(1)——概述相关推荐
- 201671010456-张琼 实验十四 团队项目评审课程学习总结
博文简要信息表 项目 内容 这个作业属于哪个课程 http://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu- ...
- GAMES101课程学习笔记—Lec 14(2)~16:Ray Tracing(2) BRDF、渲染方程、全局光照、路径追踪
GAMES101课程学习笔记-Lec 14(2)~16:Ray Tracing(2) BRDF.渲染方程.全局光照.路径追踪 0 引入--辐射度量学概述 1 相关概念 1.1 Radiant Ener ...
- CS224N课程学习笔记
CS224N Lecture One学习笔记 本文是斯坦福大学CS224N课程(课程主页:http://web.stanford.edu/class/cs224n/) lecture one的学习笔记 ...
- 嵌入式新手学习路线,嵌入式课程学习课程分享
嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,ucos,vxworks,linux,android等.另外,用c,c++或汇编开发:用高级处理器,arm7,arm9,arm1 ...
- 嵌入式新手学习路线,嵌入式课程学习
嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,ucos,vxworks,linux,android等.另外,用c,c++或汇编开发;用高级处理器,arm7,arm9,arm1 ...
- [陈天奇]机器学习编译课程学习笔记
[陈天奇]机器学习编译课程学习笔记 文章目录 [陈天奇]机器学习编译课程学习笔记 @[TOC] 第一节 机器学习编译概述 1.为什么要学习机器学习编译? 2.机器学习编译的目标是什么? 3.MLC(M ...
- 【Mybatis源码学习】概述
[Mybatis源码学习]概述 1.怎样下载源码 1.1 下载地址 1.2 导入Idea 1.2.1 环境 1.2.2 部署与打包 2.源码架构 2.1 核心流程三大阶段 2.1.1 初始化 2.1. ...
- 基于Android智能手机的微课程学习系统设计与实现 毕业设计源码100909
摘 要 随着现在网络的快速发展,网络的应用在各行各业当中它很快融入到了许多学校的眼球之中,他们利用网络来做这个微课程学习系统的网站,随之就产生了"智能手机的微课程学习系统 ",这样 ...
- 阿里云ACA认证课程学习(阿里云简介掌握云服务器ECS)
阿里云ACA认证课程学习 阿里云高校计划 https://developer.aliyun.com/adc/college/ 阿里云简介 阿里云 成立于2009年9月10日 在杭州.北京和硅谷设有研发 ...
最新文章
- ul li设置横排,并除去li前的圆点
- 安卓makefile与linux,分析linux make命令与Makefile的区别
- hadoop jetty的应用
- 编程去除背景绿幕抠图,基于.NET+OpenCVSharp
- 求一个有限长度字符串 最长的有序可重复字符串长度
- 管道的应用(pipe)《深入分析Linux内核源码》
- django中处理表单实例
- 《Android软件安全与逆向分析》— Android 书籍
- 项目,项目集与项目组合的区别
- 华为电脑如何投屏到电视linux,华为手机如何投屏到电脑上?手把手教你,无线投屏怎么做...
- 常见的平面设计风格有哪些?
- java自动洗扑克牌算法_扑克牌 洗牌算法 的java实现
- 车架号校验 php代码,VIN车辆识别代码查询
- SCSI, IED, SATA 具体是什么
- vue脚手架下载及使用
- python randn_numpy.random.randn()用法
- Leedcode编程题18: 四数之和----C++实现
- 【科普向】谁都能看懂的CRC(循环冗余校验)原理
- Shader学习之Cg语言一(Cg语言概述)
- 如何对齐word封面的下划线(word标尺如何使用)