For quick search
Coursera can be found here
本专项课程旨在系统培养你的程序设计与编写能力。系列课程从计算机的基础知识讲起,无论你来自任何学科和行业背景,都能快速理解;同时我们又系统性地介绍了C程序设计,C++程序设计,算法基础,数据结构与算法相关的内容,各门课之间联系紧密,循序渐进,能够帮你奠定坚实的程序开发基础;课程全部配套在线编程测试,将有效地训练和提升你编写程序的实际动手能力。并通过结业实践项目为你提供应用程序设计解决复杂现实问题的锻炼,从而积累实际开发的经验。因此,我们希望本专项课程能够帮助你完成从仅了解基本的计算机知识到能够利用高质量的程序解决实际问题的转变。
计算导论与C语言基础
Lecture slides can be found [here]
Coursera can be found here
About this course: 你有没有好奇过:计算机为什么能够进行计算?计算机程序是怎样运行的?你是否想知道:计算机未来可能的发展趋势有哪些?程序是如何编写出来的?如何学习程序设计语言?程序设计语言的基本成分有哪些?《计算导论》这门课将帮助你解决这些疑惑。
学完这门课,你将能够解释计算机和程序的基本运行原理以及它们的特性,向你的朋友讲述计算机的历史和发展趋势;同时,你也将充分“热身”,迎接“计算机程序设计语言”的学习!
Week 1 欢迎加入《计算导论与C语言基础》!
欢迎大家来到《计算导论与C语言基础》!在这门课程当中,我们将敲开神秘的计算机世界之门,探索它的历史,解读它的基本原理,讨论它未来的发展趋势;同时我们还将学习C语言这一经典的编程语言,开启我们充满趣味与挑战的程序设计之旅。这个欢迎模块就让我们在出发之前读好“地图”,通过观看两段视频来了解一下这段奇妙的旅程都将涵盖哪些内容吧!PS:我们这门课程一直处在不断地建设与优化当中,吸取了很多以往课程的经典视频,所以如果你看到视频中出现了不同课程的名字,也不要惊讶哦,因为你正在集百家所长。
课程介绍
专项课程介绍2 min
欢迎加入《计算导论与C语言基础》2 min
Week 1 计算机的基本原理
作为开篇的第一次课,我们先来了解一下现代计算机运行的基本原理。我们将从历史上的三次数学危机开始讲起,引出现代计算机的基本原型——图灵机的基本原理,进而解释支撑现代计算机技术的几个基础性理论(二进制、布尔代数、数字逻辑电路)及其解决的基本问题。本次课的主要目的:帮助同学们了解现代计算机的基本原理。本次课的焦点问题:计算机为什么能利用电路实现计算? PS:我们这门课程一直处在不断地建设与优化当中,吸取了很多以往课程的经典视频,所以如果你看到视频中出现了不同课程的名字,也不要惊讶哦,因为你正在集百家所长:)
第一课
从数学危机到图灵机 18 min
图灵机的基本构成 6 min
图灵机的运行机理14 min
第二课
数的二进制表示10 min
二进制数的布尔运算11 min
Week 2 计算机的历史与未来
本次课将带领同学们了解计算机的演变历史,希望通过这个历史演变的过程帮助同学们了解“人类在计算科学方面是如何一步步积累成果的“。在此基础上,我们再来讨论一下未来计算机的发展趋势,并重点介绍了量子计算机的基本原理与研究现状。 本次课的主要目的:希望透过历史引发大家对计算机发展现状的思考。 本次课的焦点问题:未来计算机的发展趋势是什么?为什么不能把CPU造得更大些?什么是量子计算机?
第一课
历史上的计算设备18 min
从电子管到云计算15 min
第二课
摩尔定律下的计算危机10 min
量子计算机的基本原理8 min
量子计算新成果简介+鼓励9 min
Week 3 程序运行的基本原理
本次课带大家走进计算机,了解计算机的几个基本构成成分及其作用,在此基础上,了解CPU指令的基本执行过程、了解计算机执行程序的过程。 本次课的主要目的:了解计算机是如何运行程序的。 本次课的焦点问题:为什么说现代计算机是冯诺依曼式计算机?电路为什么能存储数字?CPU是不是任意命令都能执行?
第一课
问题的提出4 min
冯诺依曼式计算机8 min
存储器的种类与特点8 min
第二课
存储器的原理与类型10 min
CPU指令的执行8 min
程序的执行9 min
写在下一个部分之前的话
写在下一个部分之前的话10 min
Week 4 感性认识计算机程序
本次课也许是计算机程序设计部分“最重要”的一次课程,在这次课程中,我们将通过一个例子,感受一个结论——“计算机程序 其实是对 人们思维过程的一个描述”;在此基础上,我们将立刻把自己放置于一个“计算机程序设计语言”的设计者的角度,去思考“如果让我们设计一门程序设计语言,我们将如何设计?” 进而,在我们给出关于这个问题的“抽象回答”的基础上,我们迅速地带领大家“快步走进C程序”,迅速了解在C程序设计语言中,都有哪些成分。在这次课的最后,我们通过一个例子,以“感性的方式”让大家感受了一下“什么样的程序是好程序”。 下面就让我们开始这次“最重要”的课程吧——
第一课
说在前面的话5 min
程序是你告诉计算机的话5 min
如果你的大脑是台计算机10 min
如果你来设计一门编程语言10 min
第二课
快步走进C程序之一11 min
快步走进C程序之二9 min
快步走进C程序之三11 min
什么样的程序是好程序3 min
编程作业
Programming Assignment: 感性接触计算机程序3h
编程题#1:实现冒泡排序
编程题#2:奇偶排序(一)
编程题#3:奇偶排序(二)
配置编程环境(补充资料)
下载、安装和使用IDE16 min
使用IDE进行调试14 min
Week 5 从现实问题到计算机程序
本次课程堪称计算机程序设计部分“第二重要”的课程。本次课将在大家感受过“什么是计算机程序”的基础上,来回答一个非常基本的问题——“如何设计计算机程序?” 我们将明确阐述“计算机程序是人们对自己头脑中构想的解决方案的描述”这一思想,并通过例子说明“要想写出计算机程序,必须先想出解决方案”的基本道理。 在此基础上,我们还希望通过一个简单的例子,让大家“感性地”了解一下,什么是“结构化的程序设计”(“结构化程序设计”是比“面向对象的程序设计”更基础的设计思想,因此,了解这种思想,非常重要!)。
第一课
没有解决方案就没有程序10 min
先有构想再写程序11 min
第二课
先有构想再写程序-示例12 min
体验结构化的程序-示例23 min
编程作业
Programming Assignment:从现实问题到计算机程序3h
编程题#1: 晶晶赴约会
编程题#2:奇数求和
编程题#3:整数的个数
编程题#4:1的个数
编程题#5:数组逆序重放
写在下一个部分之前的话
写在下一个部分之前的话10 min
Week 6 理性认识C程序 导论
本次课帮助大家了解C语言的历史,了解C语言规范(Specification)的版本演进,了解C语言的规范是一个“宽松”的规范;在此基础上,我们将阐述一门程序设计语言所包含的四种基本成分(如上所述)。 焦点问题:为什么相同的C程序在不同的C程序编译器上,会编译出不同的结果?
第一课
明确学习进度2 min
C语言的由来12 min
C语言的标准9 min
C语言的构成4 min
编程作业
Programming Assignment: 理性认识C程序 导论 抄写题3h
抄写题#1:细菌实验分组
Programming Assignment: 理性认识C程序 导论 编程题3h
编程题#1:苹果和虫子
编程题#2:大象喝水
编程题#3:最高的分数
编程题#4:最大奇数与最小偶数之差的绝对值
编程题#5:分离整数的各个数位
Week 7 C语言中的数据成分
本节我们将介绍C语言中的“数据成分”。重点在于:掌握各种数据类型在内存中所占的空间大小,掌握各种数据类型的特点。
第一课
再谈学习进度与安排5 min
变量定义的含义10 min
整数型的类别11 min
第二课
整数型的存储9 min
整数的输入输出7 min
最大与最小整数10 min
第三课
浮点型11 min
字符型8 min
布尔型3 min
常数6 min
变量命名8 min
编程作业
Programming Assignment: 数据成分应用练习3h
抄写题#1: 约瑟夫问题
抄写题#2:分数求和
Programming Assignment: 综合练习(1)3h
编程题#1:年龄与疾病
编程题#2:成绩判断
编程题#3:找出第k大的数
编程题#4:人民币支付
Week 8 C语言中的运算成分
本节我们将介绍C语言中的“运算成分”。重点在于:掌握各种运算符的基本含义,特别需要掌握“由各种运算符引起的数据类型转换规律”。
第一课
说在前面的话3 min
赋值运算18 min
赋值运算的说明10 min
第二课
算术运算15 min
自增自减运算22 min
第三课
关系运算6 min
逻辑运算与混合运算19 min
第四课
逗号,条件,强转11 min
位运算17 min
编程作业
Programming Assignment: 逻辑运算应用程序抄写练习3h
抄写题#1:点评赛车
Programming Assignment: 综合练习(2)3h
编程题#1:数字求和
编程题#2:骑车与走路
编程题#3:买房子
编程题#4:找和为K的两个元素
编程题#5:自整除数
Week 9 C语言中的控制成分
本节我们将介绍C语言中的“控制成分”。重点在于:掌握各种控制语句的使用方式。顺便,了解一下历史上的Goto之争。
第一课
再谈分支语句22 min
第二课
再谈循环语句18 min
Goto之争13 min
Week 10 C程序中的数组
在学习了C程序语言的几种重要的构成成分之后,为了帮助大家能够更好地使用已经学到的C语言成分编写程序,我们再介绍一种非常重要的数据结构——数组。 本部分的重点在于:掌握数组的定义、引用方法,并掌握数组的基本作用。特别的,需要大家掌握利用数组的下标来解决问题的“技巧”。
第一课
再谈一维数组9 min
二维数组12 min
三维数组5 min
第二课
数组的作用之一9 min
数组的作用之二 17 min
编程作业
Programming Assignment: 数组应用练习3h
编程题#1:求字母的个数
编程题#2:忽略大小写比较字符串大小
编程题#3:最长单词2
编程题#4:矩阵交换行
编程题#5:异常细胞检测
编程题#6:循环移动
编程题#7:中位数
编程题#8:校门外的树
Week 11 C程序中的字符串
在能够运用“数组”来解决问题的基础上,再来学习一下“字符串”的特性,在此基础上,我们将讲授C语言的中的“第四种成分”——输入输出成分。 本部分的重点在于:掌握“数组”与“字符串”的区别,理解“输入缓冲区”的基本机理,掌握cin cout的使用技巧。
第一课
字符数组与字符串9 min
输入缓冲区8 min
一个字符的输入11 min
第二课
一串字符的输入22 min
字符串应用例题14 min
写在下一个部分之前的话
写在下一个部分之前的话10 min
Week 12
编程题#1:判断闰年
编程题#2:能被3,5,7整除的数
编程题#3:最远距离
编程题#4:简单计算器
编程题#5:字符串插入
C程序设计进阶
Lecture slides can be found [here]
Coursera can be found here
About this course: 如果说学习过《计算导论与C语言基础》,你已经迈入了C语言的殿堂,那么《C程序设计进阶》将帮助你更上一层楼,理解“结构化程序设计的基本思想”,掌握“C程序设计的基本技巧”,养成“良好的编程习惯和编程风格”,编写出“真正具有生命力的计算机程序”。完成这门课的学习,你将能解释C程序设计语言的基本概念与知识,并且使用C语言编写计算机程序解决生活工作中的实际问题。
Week 1 欢迎加入《C程序设计进阶》
在学习完“理性认识C程序”之后,我们希望同学们能够自己动手编写一些简单的C程序了!如果你还没有具备这个能力,一个可能的原因是因为你还没有进行“足够的训练”。因为,学习一门程序语言,需要你获得的有两样东西——“知识”和“技巧”。“知识”可以通过讲授传递,但“技巧”却只能通过训练获得。因此,我们鼓励同学们在“理性认识C程序”这个迭代周期中,多多进行简单的编程练习,以便获得“技巧”。(注意:我们特别鼓励同学们多多进行“简单”的编程练习,因为,所有复杂的问题,都是简单问题的组合。我们的教学实践表明:多做简单练习,不但可以提升学习者的学习信心,也非常有助于编程技巧的提升!)在完成“理性认识C程序”部分的学习之后,我们将开始新的迭代周期——“结构化的程序”。在这个部分,我们将讲授一种基本的、用于将程序组织成“模块”的语言成分——函数。函数实际上是C程序的基本组织单位,是C程序设计中的重要组成部分。在这个迭代周期中,同学们不仅要学习函数的定义方式、调用方式,还要学习一种重要的函数使用方法——递归。我们将讲授递归调用的基本机理,并讲授“利用递归解决问题的技巧”。这部分,讲本课程C程序设计部分的一个难点!不过,请同学们不要担心,我们将力图通过最简明的讲解方式,帮助大家掌握“递归”的使用方法,力争“化困难于无形”。我们一起努力吧!PS:我们这门课程一直处在不断地建设与优化当中,吸取了很多以往课程的经典视频,所以如果你看到视频中出现了不同课程的名字,也不要惊讶哦,因为你正在集百家所长。
THE SPECIALIZATION
专项课程介绍2 min
课程介绍
欢迎加入《C程序设计进阶》1 min
Week 2 C程序中的函数
本次课,我们讲授“函数”的基本概念、定义方式、调用方式、参数传递方式等基本知识。其间,我们还将讨论“变量的作用域”的问题。PS:我们这门课程一直处在不断地建设与优化当中,吸取了很多以往课程的经典视频,所以如果你看到视频中出现了不同课程的名字,也不要惊讶哦,因为你正在集百家所长:)
第一课
函数的定义与声明28 min
第二课
函数的调用过程11 min
函数调用示例10 min
第二课
变量的作用域17 min
数组做函数参数14 min
第三课
函数应用示例13 min
编程作业
Programming Assignment: 综合编程练习(1)3h
编程题#1:寻找下标
编程题#2:四大湖
编程题#3:发票统计
编程题#4:Tomorrow never knows?
Week
primary
Week
primary
Week
primary
Week
primary
Week
primary
Week
primary
Week
primary
#
Lecture slides can be found [here]
Coursera can be found here
primary
#
Lecture slides can be found [here]
Coursera can be found here
primary
#
Lecture slides can be found [here]
Coursera can be found here
primary