你将学到什么
Computer Display Standard
C Programming
C++
课程概况
你有没有好奇过:计算机为什么能够进行计算?计算机程序是怎样运行的?你是否想知道:计算机未来可能的发展趋势有哪些?程序是如何编写出来的?如何学习程序设计语言?程序设计语言的基本成分有哪些?《计算导论》这门课将帮助你解决这些疑惑。
学完这门课,你将能够解释计算机和程序的基本运行原理以及它们的特性,向你的朋友讲述计算机的历史和发展趋势;同时,你也将充分“热身”,迎接“计算机程序设计语言”的学习!
课程大纲
周1
完成时间为 5 分钟
欢迎加入《计算导论与C语言基础》!
欢迎大家来到《计算导论与C语言基础》!在这门课程当中,我们将敲开神秘的计算机世界之门,探索它的历史,解读它的基本原理,讨论它未来的发展趋势;同时我们还将学习C语言这一经典的编程语言,开启我们充满趣味与挑战的程序设计之旅。这个欢迎模块就让我们在出发之前读好“地图”,通过观看两段视频来了解一下这段奇妙的旅程都将涵盖哪些内容吧!PS:我们这门课程一直处在不断地建设与优化当中,吸取了很多以往课程的经典视频,所以如果你看到视频中出现了不同课程的名字,也不要惊讶哦,因为你正在集百家所长。
2 个视频 (总计 5 分钟)
完成时间为 1 小时
计算机的基本原理
作为开篇的第一次课,我们先来了解一下现代计算机运行的基本原理。我们将从历史上的三次数学危机开始讲起,引出现代计算机的基本原型——图灵机的基本原理,进而解释支撑现代计算机技术的几个基础性理论(二进制、布尔代数、数字逻辑电路)及其解决的基本问题。本次课的主要目的:帮助同学们了解现代计算机的基本原理。本次课的焦点问题:计算机为什么能利用电路实现计算? PS:我们这门课程一直处在不断地建设与优化当中,吸取了很多以往课程的经典视频,所以如果你看到视频中出现了不同课程的名字,也不要惊讶哦,因为你正在集百家所长:)
5 个视频 (总计 61 分钟)
周2
完成时间为 1 小时
计算机的历史与未来
本次课将带领同学们了解计算机的演变历史,希望通过这个历史演变的过程帮助同学们了解“人类在计算科学方面是如何一步步积累成果的“。在此基础上,我们再来讨论一下未来计算机的发展趋势,并重点介绍了量子计算机的基本原理与研究现状。 本次课的主要目的:希望透过历史引发大家对计算机发展现状的思考。 本次课的焦点问题:未来计算机的发展趋势是什么?为什么不能把CPU造得更大些?什么是量子计算机?
5 个视频 (总计 64 分钟)
周3
完成时间为 1 小时
程序运行的基本原理
本次课带大家走进计算机,了解计算机的几个基本构成成分及其作用,在此基础上,了解CPU指令的基本执行过程、了解计算机执行程序的过程。 本次课的主要目的:了解计算机是如何运行程序的。 本次课的焦点问题:为什么说现代计算机是冯诺依曼式计算机?电路为什么能存储数字?CPU是不是任意命令都能执行?
6 个视频 (总计 50 分钟), 1 个阅读材料
周4
完成时间为 5 小时
感性认识计算机程序
本次课也许是计算机程序设计部分“最重要”的一次课程,在这次课程中,我们将通过一个例子,感受一个结论——“计算机程序 其实是对 人们思维过程的一个描述”;在此基础上,我们将立刻把自己放置于一个“计算机程序设计语言”的设计者的角度,去思考“如果让我们设计一门程序设计语言,我们将如何设计?” 进而,在我们给出关于这个问题的“抽象回答”的基础上,我们迅速地带领大家“快步走进C程序”,迅速了解在C程序设计语言中,都有哪些成分。在这次课的最后,我们通过一个例子,以“感性的方式”让大家感受了一下“什么样的程序是好程序”。 下面就让我们开始这次“最重要”的课程吧——
10 个视频 (总计 99 分钟), 1 个测验
周5
完成时间为 4 小时
从现实问题到计算机程序
本次课程堪称计算机程序设计部分“第二重要”的课程。本次课将在大家感受过“什么是计算机程序”的基础上,来回答一个非常基本的问题——“如何设计计算机程序?” 我们将明确阐述“计算机程序是人们对自己头脑中构想的解决方案的描述”这一思想,并通过例子说明“要想写出计算机程序,必须先想出解决方案”的基本道理。 在此基础上,我们还希望通过一个简单的例子,让大家“感性地”了解一下,什么是“结构化的程序设计”(“结构化程序设计”是比“面向对象的程序设计”更基础的设计思想,因此,了解这种思想,非常重要!)。
4 个视频 (总计 58 分钟), 1 个阅读材料, 1 个测验
周6
完成时间为 6 小时
理性认识C程序 导论
本次课帮助大家了解C语言的历史,了解C语言规范(Specification)的版本演进,了解C语言的规范是一个“宽松”的规范;在此基础上,我们将阐述一门程序设计语言所包含的四种基本成分(如上所述)。 焦点问题:为什么相同的C程序在不同的C程序编译器上,会编译出不同的结果?
4 个视频 (总计 29 分钟), 2 个测验
周7
完成时间为 8 小时
C语言中的数据成分
本节我们将介绍C语言中的“数据成分”。重点在于:掌握各种数据类型在内存中所占的空间大小,掌握各种数据类型的特点。
11 个视频 (总计 94 分钟), 2 个测验
周8
完成时间为 8 小时
C语言中的运算成分
本节我们将介绍C语言中的“运算成分”。重点在于:掌握各种运算符的基本含义,特别需要掌握“由各种运算符引起的数据类型转换规律”。
9 个视频 (总计 127 分钟), 2 个测验
周9
完成时间为 1 小时
C语言中的控制成分
本节我们将介绍C语言中的“控制成分”。重点在于:掌握各种控制语句的使用方式。顺便,了解一下历史上的Goto之争。
3 个视频 (总计 54 分钟)
周10
完成时间为 4 小时
C程序中的数组
在学习了C程序语言的几种重要的构成成分之后,为了帮助大家能够更好地使用已经学到的C语言成分编写程序,我们再介绍一种非常重要的数据结构——数组。 本部分的重点在于:掌握数组的定义、引用方法,并掌握数组的基本作用。特别的,需要大家掌握利用数组的下标来解决问题的“技巧”。
5 个视频 (总计 55 分钟), 1 个测验
周11
完成时间为 1 小时
C程序中的字符串
在能够运用“数组”来解决问题的基础上,再来学习一下“字符串”的特性,在此基础上,我们将讲授C语言的中的“第四种成分”——输入输出成分。
本部分的重点在于:掌握“数组”与“字符串”的区别,理解“输入缓冲区”的基本机理,掌握cin cout的使用技巧。
5 个视频 (总计 67 分钟), 1 个阅读材料
周12
完成时间为 3 小时
期末考试
谢谢你一路的陪伴,我们终于来到了《计算导论与C语言基础》这门课的最后一个模块,现在就让我们给这段难忘的学习里程画上一个圆满的句号。我在期末考试中为大家设计了几道有趣的编程题目,让我们来一起迎接挑战,证明自己的实力吧!如果测试没有一次通过也不要紧,我们的自助平台课程鼓励你反复尝试直到取得满意的成绩,加油!如果你成功地通过了测试,那我们就相约在专项课程的下一门《C程序设计进阶》中见咯!
预备知识
本课程不要求也不假设选课学生有任何信息科学技术相关专业的知识背景,也不要求有任何的程序设计知识背景。
对于具有一定专业知识背景或具有一定程序设计基础的同学,可以选择跳过相应章节,选择有兴趣的章节学习。
参考资料
基本资料
主要参考本课程所提供的讲义资料,以及来自 http://ica.openjudge.cn/ 的相关练习题。
参考教材
[1] Computer Systems -A Programmer's Perspective, Randal E.Bryant, David O'Hallaron, Prentice Hall, 2002.
[2] C++ Programming Today (2 edition), Barbara Johnston, Prentice Hall, 2007.