为什么我选择计算机科学2 计算思维

我准备交替地发布《我为什么选择计算机科学》系列,强调计算机领域的特性和有意思之处(劝进);以及《从0开始的计算机科学》,强调一些基础知识(劝退)。 这次我们将讨论一种思维模式:计算思维。 下面的内容以例子为主。当你学完本科阶段学完后,再来看这些例子,就会越发意识到其中的重要性。 什么是计算思维 这里引用 Jeannette M. Wing [1] 的观点(选择了一部分内容)。 计算思维建立在对计算这个过程本身的能力和限制的理解之上。 计算思维不仅是计算机学家,也是每个人的基本技能。为了更好... Read more

从0开始的计算机科学-状态与编码

我准备交替地发布《我为什么选择计算机科学》系列,强调计算机领域的特性和有意思之处(劝进);以及《从0开始的计算机科学》,强调一些基础知识(劝退)。 注意“基础”的意思不是“简单”,而是基本。这也是我劝退的手段。如果你能够理解这些基础知识,那么你学习计算机应该没有什么问题。 这次我们将讨论补码、字符串以及一些非常有趣的,应该了解的内容。 状态与编码 在本章中,我希望能够带给新生对于计算机的一些最基本的要素的认知。我们从创造者的角度来看待计算机的一些最基本要素。 当然在这个过程中我们使用的是... Read more

为什么我选择计算机科学

作为一个即将毕业的学长,这些年很受科大照顾,多次出国比赛交流。而我这个人呢也很直,希望能够帮到新生。从15级开始我每年开学都会给新生做若干次交流(包括不限于新生活力社团讲座,去年讲了量子计算和深度学习;14级经验交流等等),本人也在各个年级新生班群中看着新生会怎么发展。去年还担任了计院程序设计课程的助教(虽然因为比赛等原因我个人觉得自己不是很尽职)。 我花费这么多时间做这些事情,动机(基于对教育学的兴趣)还在于希望了解为什么新生选择 Computer Science,以及什么样性格和态度的人会发展的... Read more

Wallpaper Engine DIY

Steam 上面可以自定义桌面背景的 Wallpaper Engine 可以说在前一段时间非常火。这里我给出一种实现 Wallpaper Engine 的方式,并给出探究的具体过程。你可能只对最后的结果和方法感兴趣,但是我仍然希望你能够了解其中的原理。方法是只对一定时期的windows有效的,但是原理却是通用的。 这篇文章用来揭示windows(特别是windows10的)窗口机制,并介绍如何创建自己的 Wallpaper Engine。主要使用的工具是Spy++(装 Visual Studio 的... Read more

马赛克之恢复

所谓马赛克,即是一种抹除图像细节的一种手段。一般用于抹除关键部位或敏感信息等(好了老司机刹车)。 马赛克一般被认为不可恢复。但是最近的一些论文例如 Google Brain 的 Pixel Recursive Super Resolution 等等确乎一定程度上恢复了马赛克(如下图),这是什么回事呢? 图像空间 首先我们需要讨论所谓“图像空间”的事情。(这里我们并不把它严格作为数学上的“空间”对待,而是泛泛的使用这个名称,并且启示性的说明它的性质而不是严格的描述)。所谓图像空间可以被认为是一类... Read more

降维打击-观察高维世界

我们知道1维的世界最多有2个点互相距离相同,2维的世界最多有3个点,3维有4个。那么4维呢?数学上的直观可以告诉我们是5个,并且可以证明出来。但是,你能想象这种情况吗?–不能,因为我们天生如此。 你可能觉得这个没有什么意思–数学做的足够好了。但是,对于一些复杂而又不平凡的情况,不是用简单的数学可以解决的。比如如果我们把手写数字的图片想象成一个向量–向量每一项代表图像中每一点的像素值,那么即使对于mnist这种最简单手写数字图片的数据集之一,向量的维度也可以达到 28*28 = 784。 这是MNI... Read more

你和人工智能

你和人工智能 T_T 唉没想到已经写了一个星期了等集够赞再补全 T_T 本文是一篇很久前就打算写的综述,目的是让我们对人工智能更加“了解”。 人工智能最近无论是因为比较实质的技术进步,还是商业圈的人为炒作,变成几乎家喻户晓的话题。但是,它也变成了各种无聊和反智话题的重灾区。类似于“计算机要全面压倒人类”,“只是计算机暴力求解的快”,“xxxxxx是量子的”,“xxxxx本质上是一样的”,“xxxxx本质上是不同的”,“只有xxxxx才能创造xxxx”。各位我奉劝一句,各种动不动上“量子”、“本质... Read more

计算思维译文(带原文对照)

by Jeannette M. Wing It represents a universally applicable attitude and skill set everyone, not just computer scientists, would be eager to learn and use. 计算思维展现了一种普适的观点和技能,不仅适合计算机学家,也适合所有人学习和使用 Computational thinking builds on the power and... Read more

入门-真实的 Computer Science & Technology

这个是给CS方面新人深度科普用的 首先本人看上去就很弱,欢迎大家调教(咦?) ---正文--- 很不幸的是,计算机是一个极其大,内容极其多的学科。如果之前你以为就是写写代码或者设计电路那就错了。 计算机主要问题是计算,“计算”wikipedia定义是对信息的处理,所以计算机工业也往往叫IT(信息技术) 计算机的来源 能造出这样一种机器的理由 能够有一种模型,只要人们能够明确表述出某种计算或者操作的具体规则,它就模仿人做到相同的事情?这个一点都不显然。 图灵构造性证明了:可以。这种模型叫... Read more

深入理解 Deep Learning 前端框架 (II)

技术篇 理论篇 此篇侧重介绍计算图(Computational Graph) 概述 计算图是一种计算模型,可以用于表示符号计算。 在传统的数值计算中,很多表达式的推导和计算流程无关,因而不需要特定的数据结构对计算流程进行表示。而符号计算中,很多流程(比如求梯度)都需要对计算流程或者表达式进行分析。这个时候就需要对计算流程进行表示,一般采用(有向)计算图或者(有向)计算网络(Computational Graph)。 这篇blog给出了计算图的一种表示和处理方式,其他形式的原理大致相同... Read more

深入理解 Deep Learning 前端框架 (I)

技术篇 理论篇 Deep Learning(即深度学习,DL) 作为机器学习的一个分支,自06年以来飞速发展。与机器学习的发展史相比,DL仍然非常年轻,但是在诸多领域(计算机视觉,语音,增强学习,甚至计算机艺术) DL对于其他模型已经到了碾压的地步,并且目前仍然没有明确看到它的能力的极限。DL 同样非常与众不同的一点是它需要前所未有的计算能力,高性能计算领域的发展(NVIDIA GPU,FPGA,Infiniband,专用芯片,分布式计算框架)恰如其分的给了DL前所未有的发展动力,成为其坚实的... Read more

关于旧blog

告示 旧blog网址为 http://zsy.blog.ustc.edu.cn/,目前就干货而言比现在这个多,但是当时我的思想深度和能力可能都远远不如现在。新blog实体内容相对偏少,主要还是受时间约束。最近在自己折腾一些东西,如果有了一些质量比较高内容的就commit一下吧。 This is an ‘open-sourced’ page created by Si-Yuan Zhuang. For reference, plz keep it open & free, thanx. ... Read more

操作系统演示视频

技术篇 关于标签 简介 这是个操作系统相关视频教程,目的主要是教学,旨在揭示程序从API到内核入口的整个机制。 内容基本上是原创的,网上很难找到相似内容。 涉及的具体内容有: 汇编语言(略) 基本Linux操作(略) Linux编辑文件(VIM,略) Linux编译程序(带调试符号,详) Linux反汇编(objdump,详) Linux调试(GDB,主要) Windows盲调试(Ollydbg,主要) 对调试后得到的猜想的验证(略) 另外间接提到... Read more

C语言计算机模型

C语言是一种高级语言,对于使用者来说是一种抽象和虚拟。使用者原则上只需关心其语法结构和和平台接口。下面将对C语言(虚拟)计算机从各个层面进行思辨性的讨论。 C语言虚拟的目的 虚拟有不同的目的。虚拟机和沙盒更多的目的是隔离环境--里面的操作基本不会对外面的环境造成影响。 C语言可以通过接口访问底层的硬件,可以嵌入汇编代码(内联汇编),也经常用来写操作系统。可见C语言的虚拟和抽象主要是为了“好用”。 C语言虚拟的层次 虚拟有着不同的层次。ISA将软件完全隔离在它之上;操作系统几乎完全控制... Read more

智能是否可以用算法实现?

思考篇 启示篇 关于标签 本篇讨论人工智能的算法性质,以及一些更深刻的问题。我们在此处只讨论可行性。关于算法本身到底需要多复杂,参见智能有无捷径。 智能是否可以用算法实现?这个问题由来已久。 罗杰特在《皇帝新脑》中曾经论述过这个问题。他的观点是不可能。 但是,在将近20年后,特别是 deep learning 这个领域进入人们视野之后,很多变化都超出了人们的预期:机器不仅能够识别图像,还能“看图说话”。在去年,微软在 ImageNet 上利用深度残差网络第一次让机器对非特定图像的识别率... Read more

数字模拟电路Final

这个是FPGA+超声测距仪+扬声器+树莓派完成的一个作品。 FPGA板和树莓派之间通过Pmod-GPIO(8条并行线,无差分传输)通信。 FPGA是Verilog实现的硬件功能,树莓派使用了Python进行编程。 以后有时间我贴上代码。 视频如下(需要Flash): Read more

智能有无捷径?

这是一篇关于 Michael A. Nielsen 的一本书的最后一篇文章的精心翻译(详见文末)。Nielsen 先生曾经写了关于量子计算和量子信息方面具有历史性的著作(Quantum Computation and Quantum Information),在诸多领域(人工智能,数据挖掘,美学等等)有非凡的造诣。这篇文章凝聚了 Nielsen 的非常严谨的思维精神和高超的思辨能力,为此我花了很长时间将它翻译出来。如有不当之处请指正。 在本书中,我们聚焦了神经网络的方方面面:它们是如何工作的... Read more

9. 量子理论

在这里,我希望用高等量子力学非常优美的公理化形式将量子力学讲清楚。我认为对于部分的大学生,内容不会很难。基本上就是简单的,几乎是某些省份高中水平的线性代数,和极其简单的数学分析。 由于时间不足加之作者水平有限,以及一些细节不便于解释,难免会有一些错误或者表述不当的地方,欢迎指正。 这里描述量子理论不走套路,我希望结合一些最新的研究进展以及研究方向,进行系统的阐述。 搞清楚量子理论,也是此生一大成就。它很有可能是一种元物理。至少到目前,无论是什么物理理论,都不敢轻易离开量子理论的框架。 首先... Read more