IB Computer Science Command Terms
Objective 1(数字越大要求的解释就越详细)
Classify: 简单排列即可
Define: 给出一个字、词、概念或者物理量的准确定义
Draw: 画图表示
Label: 标图
List: 给出顺序,无需解释
State: 给出简短解释,名字或者量,无需解释
Objective 2
Annotate: 给图像加简短的笔记
Apply: 讲概念应用到问题中
Calculate: 计算值,展示过程
Describe: 细节描述
Design: 给出计划或者模型
Distinguish: 给出清晰的不同点
Estimate: 展示估算值
Identify: 在一系列可能中给出一个答案
Outline: 简要总结
Present: Offer for display, observation, examination or consideration
Trace: 画trace table,记录算法的行为
Objective 3
Analyse: 将大概念拆分成小的本质或者结构
Comment: 对给出的计算结果做出评价
Compare: 给出相似点
Compare an ...
IB计算机组成知识小结
Computer Architecture(话说CA和CO难道不是一个意思吗?)
CPU:Central Processing Unit, data or instructions that are processed by a computer system in the process phase of the input, proces, output and storage model are processed by them.
ALU:Arithmetic Logic Unit, performs all basic arithmetic, logical or input/output operations.
CU:Control Unit, is responsible for the operation of the CPU. It controls the retrieval of instructions from the primary memory as the sequence of their execution. (Or a simpler defin ...
节点搭建指南
网络通信的基本过程
五层基本模型:应用层、传输层、网络层、数据链路层、物理层。
数据包格式:| 源MAC | 目标MAC | 源IP | 目标IP | 源端口 | 目标端口 | 数据 |
访问网址时首先在本地缓存检查是否存有域名绑定的IP地址,没有的话继续检查本地host文件,然后访问电脑中配置的DNS服务器(应用层协议,发送请求)。
请求传到传输层,将应用层的数据封装,源端口为404,DNS默认目标端口是53(封装端口)。继续将封装好的数据包向下传,在网络层在数据包中添加源IP和目标IP(目标IP是DNS服务器的IP)。
如果电脑发现目标IP不在网段范围内,则请求网关(家庭中通常是路由器),传到数据链路层。在数据链路层继续将本机MAC地址和网关MAC地址封装到数据包中(同一局域网内的通信用MAC地址),同时在数据包后面插入一些数据做校验。
这样数据包就能顺着物理层来到网卡接口,通过网线发到交换器。交换器只能解析两层的数据,通过解析数据链路层封装的MAC地址,交换器可以将数据包发送给路由器,而路由器可以解析三层数据,然后将MAC的数据头删掉。
路由器之后会将数据包转发给公网上的其他路由 ...
IB Computer Science: 伪代码、流程图和简单算法小记
伪代码编写练习可以使用网站:http://ibcomp.fis.edu/pseudocode/pcode.html
伪代码语法
循环逻辑:
1234567loop i from ... to ... TODO()end looploop while (condition?) TODO()end loop
分支逻辑:
1234567if (condition?) then TODO()else if (condition?) then TODO()else TODO()end if
数组管理:
1234arr = new array() // set a new arrayarr = [..., ..., ...] //set values for the arrayarr[...] //returns the value of a certain indexarr.Length() ...
南京大学计算机系统基础课程笔记4:乘除运算及浮点数运算
4.1 整数乘法运算
通常在高级语言中两个n位整数相乘得到的结果通常也是一个n位整数(2n位乘积中的低n位)
参与乘法的两个数据类型相同,如果不同会先转换。
对于无符号乘法,判断高n位是否都等于0,是则不溢出;对于带符号乘法,判断高n位是否每位都等于低n位的最高位,是则不溢出。或者可以判断低n位与两个输入之间的关系,如上图所示。
因为无符号和带符号处理不同,对应的乘法指令也不同。
因为乘法指令所需的时钟时间长,所以在编译器处理乘法时,往往通过移位运算和加减法运算来代替组合运算(移位和加减法通常只需要一个或者更少的时钟周期)。
4.2 整数除法运算
整数除法的商一定小于被除数,所以不会发生溢出。
按照整数除法,正数商取比自身小的最接近整数(Floor),负数商取比自身大的最接近整数(Ceiling)。
整数除法时,除数不能为零(机器数无法表示),如果为零就调用异常处理程序。
除法运算更加复杂(30个以上的时钟周期,并且不能用流水线实现),所以在编译器中常使用右移运算实现(处理除数为2的倍数的情况时)。
不能整除时,采用下面两个截断方式:
无符号数、带符号正整数(地板):移出的低位直接 ...
南京大学计算机系统基础课程笔记3:运算电路基础
3.1 布尔代数和基本逻辑电路&无符号数加法器&整数加减运算器和ALU
布尔代数基本定义:
0和1分别表示逻辑值的假和真
通过逻辑关系可以构建基于0和1的布尔代数运算
最基本的逻辑运算有:与(AND)、或(OR)、非(NOT)
真值表可以反映输入和输出之间的关系
逻辑运算可以通过逻辑门电路实现:与门、或门、非门。假使我们要进行按n位逻辑运算,则需要n个逻辑门
逻辑电路有以下两种类型:
组合逻辑电路:没有存储功能,输出依赖于当前输入。
时序逻辑电路:具有存储功能,输出不仅依赖于当前输入。
功能部件:用逻辑门电路组成的带有特定功能的组合逻辑部件。
一位加法器称为全加器(n位加法器可以直接用若干个全加器实现,但是在这种情况只能实现无符号的整数加法):
两个加数为A和B,低位进位为Cin,和为F,向高位的进位为Cout。
不考虑低位进位的加法器叫半加器。
n位带标志加法器:
溢出标志OF:OF = Cn ^ Cn-1
符号标志SF:SF = Fn-1
零标志ZF:当且仅当F = 0时ZF = 1
进位/借位标志CF:CF = Cout ^ ...
南京大学计算机系统基础课程笔记2:数据的表示和存储
2.1 十进制数和二进制数&不同进制数之间的转换
转换的概念在数据上的表示
机器级数据分为两大类
数值数据:无符号整数、带符号整数、浮点数(实数)
非数值数据:逻辑数、西文字符和汉字
计算机内部信息都使用二进制进行编码(冯诺依曼结构规定),原因:
制造两个稳定态的物理器件容易(电位高/低、脉冲有/无、正/负极)
二进制编码、计数和运算规则简单
正好与逻辑命题的真与假对应,便于逻辑运算
方便地用逻辑电路实现算术运算
真值和机器数
机器数:用0和1编码的计算机内部的二进制数
真值:真正的值
数值数据表示的三要素
进位计数制(二进制、十六进制、十进制、八进制及其相互转换)
定、浮点表示(定点整数、定点小数、浮点数)
二进制编码(原码、补码、反码、移码)
二进制的表示十分繁琐,所以我们有时会使用十六进制(后缀H,前缀0x)和八进制(后缀O)表示,便于阅读和书写。
十进制数与R进制数的转换
R进制数转十进制数:按“权”展开
十进制数转R进制数:先转二进制,再转其他进制数。整数部分和小数部分分别转换。
整数部分,除基取余,上右下左;小数部分 ...
南京大学计算机系统基础课程笔记1:计算机系统概述
1.2.1 冯诺依曼结构主要思想
ENIAC
1946年,世界上第一台通用电子计算机ENIAC出现(Electronic Numerical Integrator And Computer)
有电子真空管组成
由宾夕法尼亚大学研制
用于解决复杂弹道问题,5000次加法/s
用十进制表示信息并运算
使用手动编程,通过设置开关和插拔电缆实现
体积大,质量大,耗电大
冯·诺依曼
1944年参加原子弹研制工作
1945年遇到美国弹道实验室的军方负责人
加入ENIAC研制组,发表了“存储程序通用电子计算机方案”,Electronic,Discrete,Variable,Automatic,Computer
普林斯顿高等研究院批准依照方案建造计算机,1946年开始设计“存储程序”计算机,1951年完成IAS
报告中提到的计算机结构被称为冯·诺依曼结构
“存储程序(Stored-program)”的工作方式:
任何计算机完成的工作要先被编写成程序,然后将程序和原始数据送入主存并执行,启动后可以自行完成取出指令和执行指令的任务。
冯·诺依曼结构计算机被称为冯·诺依曼机器(Von Neuman ...
黑盒子与现实世界的桥梁:指令集
本文对体系结构相关知识做一个简单的梳理,不进行具体技术的讲解。
前言
今天,计算机正在以惊人的速度发展着。如果运输行业能够和自从20世纪40年代末诞生的计算机行业保持同样的发展速度,那么如今我们花一分钱就可以在一秒钟内从纽约赶到伦敦 (David A. Patterson,计算机组成与设计)。但是如今人们并没有时间去深入了解飞速发展期间的每一门技术,这就导致大部分人将所需的技术视为一个黑盒,之把时间花在学习其表面上,而并没有探索到其本质,仅仅接触表象同样导致很多人对计算机感到乏味。计算机结构的底层是晶体管,其顶层是计算机显示器上呈现的信息。尽管现代计算机的内部结构不断推陈出新,但其本质上仍然是一些常见且简洁的操作集合。受限于字数限制,本文不会对计算机最底层的组成细节和抽象层次较高的软件进行详细解释,而是将精力主要集中软件和硬件的接口——指令集。希望可以作为一个引子激发起更多人对于计算机的关注,当你掌握了计算机的本质,计算机就会变得越来越有趣。
程序表象之下
或许你曾使用过C实现某一个具体的算法,但你有没有好奇过它究竟是如何在计算机上运行并且实现想要实现的功能的?
从复杂的应用程序到简单 ...
线性回归2:极大似然估计
更复杂的模型
上篇文章介绍了最基本的线性回归,文末的向量表示方法也允许我们进一步扩充模型的复杂度。
我们现在可以使用四次方模型、八次方模型来提高复杂度。
为了变得更加牛逼,我们还可以将原来公式:t = w0 + w1x + w2 * x^2 + … + wk * w^k
中的x替换成函数,h(x)。
函数的具体内容就可以发挥你的想象力了,指数、三角…
如此原本矩阵X的内容就取决于函数h(x)了。
但正如上篇文章中所说,复杂性的增高并不意味着泛化能力一定提高,而我们应该怎么选取最合适的模型呢?
测试
为了验证我们模型的性能,我们可以使用N - C个数据(N为数据总个数)去训练多个模型(也就是代入上篇文章中提到的计算w公式中),对于剩余C个数据做出最好预测的模型就是质量最高的模型。我们将这N - C个数据称为训练集,C个数据称为测试集。
计算测试损失同样可以使用之前的损失函数:
Lv = 1/C Σ1->c (tc - **w**^T * xc)^2
通过这样的手段我们可以得知质量最好的模型实际上是最开始的线性模型(返璞归真了?)
但是我们应该怎么进行数据集和训练集的划分呢?
最通 ...