计算概论与程序设计基础

本课程是北京大学信息科学技术学院本科生入学之后的第一门专业基础课程(校内课名:计算概论A),也是中国大陆最早发布的第一门计算机相关的MOOC课程(2013年9月于Coursera首次发布)。 在这里,你将与北…

国家精品计算机
1879 次查看
北京大学
中国大学MOOC
  • 完成时间大约为 13
  • 初级
  • 中文
注:因开课平台的各种因素变化,以上开课日期仅供参考

课程概况

“计算概论与程序设计基础”(北京大学校内课程名“计算概论A”)是针对“信息科学技术学科一年级本科生”开设的一门专业基础主干课程。本课程的教学目标有二:其一,帮助学习者建立起“学习计算机科学技术知识所需的基本知识背景”;其二,帮助学习者“掌握计算机程序设计的基础知识”,培养学习者“独立设计计算机程序解决问题”的基本技能。

本课程的内容主要分为两个部分:(1)计算概论部分,约占课时量的15%;(2)程序设计基础部分,约占课时量的85%;

计算概论部分,我们将为大家解答一些与计算机程序设计相关的基础问题,例如,“计算机为什么能够进行计算?”,“计算机程序在计算机中是如何运行的?”,“计算机的发展规律是什么?”,“下一代的计算机将会是什么样子?”等等。我们希望通过对这些问题的解答,达到两个目的:其一,培养起大家对计算机科学的兴趣;其二,帮助大家建立起学习计算机科学所需要的“背景知识框架”。

程序设计基础部分,我们将以“C 语言”为主要学习对象,以典型的C++编程环境(如Visual Studio C++, Eclipse等)为工具,学习计算机程序设计的相关知识,并培养程序设计的基本技能。通俗讲,在这个部分,我们将教会大家“如何使用C语言编写计算机程序,甚至编写具有一定技术难度的程序”。

对于第一次学习计算机程序设计的同学而言,通常会觉得学习过程比较困难。在这里,我们特别提示大家:“对于难学的东西,更要循序渐进,更要遵循学习规律——先打好基础,逐步进阶!”为此,我们把“程序设计基础”部分的学习划分为四个迭代周期:

周期一: 感性认识计算机程序; 

周期二: 理性认识计算机程序;  

周期三: 函数——结构化的程序; 

周期四: 一些稍复杂的数据结构(指针、结构体、链表等);

之所以称为“迭代周期”,是因为我们希望在每个周期中,同学们都能够编写出完整、可运行、能解决问题的计算机程序,而不是仅仅学习计算机程序设计语言的某个部分!所以,学习程序设计的过程,应该是一个“在实战中进阶”的过程,而不是一个“知识堆砌”的过程。希望这个迭代进阶的学习过程可以帮助大家顺利达成学习目标。

课程大纲

计算机的基本原理
从数学危机到图灵机
图灵机的基本构成
图灵机的运行机理
数的二进制表示
二进制数的布尔运算
请登陆 http://mooc.nnthink.com 完成课程作业
计算机的历史与未来
历史上的计算设备
从电子管到云计算
摩尔定律下的计算危机
量子计算机的基本原理
量子计算机的发展状态
程序运行的基本原理
问题的提出
冯诺依曼式计算机
存储器的种类与特点
存储器的原理与类型
CPU指令的执行
程序的执行
感性认识计算机程序
说在前面的话
程序是你告诉计算机的话
如果你的大脑是台计算机
如果你来设计一门编程语言
快步走近C程序之一
快步走近C程序之二
快步走近C程序之三
什么样的程序是好程序
配置编程环境(补充资料)下载安装和使用IDE
配置编程环境(补充资料)使用IDE进行调试
编程作业:编程基础练习(1/2)
从现实问题到计算机程序的
没有解决方案就没有程序
先有构想再写程序
先有构想再写程序--示例
体验结构化的程序--示例
编程作业:编程基础练习(2/2)
理性认识C程序 导论
明确学习进度
C语言的由来
C语言的标准
C语言的构成
C 语言中的数据成分
再谈学习进度与安排
变量定义的含义
整数型的类别
整数型的存储
整数的输入输出
最大与最小整数
浮点型
字符型
布尔型
常数
变量命名
编程作业:数据成分基础练习
C语言中的运算成分
说在前面的话
赋值运算
赋值运算的说明
算术运算
自增自减运算
关系运算
逻辑运算与混合运算
逗号,条件,强制类型转换
位运算
编程作业:运算成分基础练习
C语言中的控制成分
再谈分支语句
再谈循环语句
Goto之争
编程练习:控制成分基础练习
C程序中的数组
再谈一维数组
二维数组
三维数组
数组的作用之一
数组的作用之二
编程作业:数组应用练习
C程序中的字符串
字符数组与字符串
输入缓冲区
一个字符的输入
一串字符的输入
字符串应用例题
编程作业:字符串应用练习
C程序中的函数
函数的定义与声明
函数的调用过程
函数调用示例
变量的作用域
数组做函数参数
函数应用示例
编程练习:函数与字符串练习
函数的递归
如何理解递归
递归调用的过程
递归应用示例(切饼,斐波那契数列)
递归应用示例(进制转换,汉诺塔)
递归应用示例(放苹果)【较难 选听】
递归应用示例(逆波兰表达式)【较难 选听】
习题课一 枚举 模拟与递归
编程练习:递归编程练习(1/2)
指针 —
什么是指针
什么是指针变量
指针变量示例
指针变量的++---
数组与指针
用指针访问数组
习题课二 较难 选听
编程练习:递归编程练习(2/2)
指针二
字符串与指针
再谈指向一维数组的指针
指向二维数组的指针
二维数组名引用示例
利用指针遍历二维数组
编程作业:指针使用练习
指针三
指针做函数参数
限制指针函数实参的功能
指针做函数返回值
静态局部变量
编程练习:综合练习题
结构体与链表
结构体与结构体变量
结构体变量与函数
结构体变量与指针
链表的定义
链表的操作
编程练习:结构体与链表的使用
最后一次课
结语;轻叩面向对象之门
编程工具的安装和使用:下载、安装和使用IDE
说明 编程工具的安装和使用:使用IDE进行调试

参考资料

基本资料:
主要参考本课程所提供的讲义资料,以及来自 https://ica.openjudge.cn/  的相关练习题。
参考教材:
[1] 《程序设计基础》(第二版),吴文虎,清华大学出版社,2006年7月 参考教材
[2] Computer Systems -A Programmer's Perspective, Randal E.Bryant, David O'Hallaron, Prentice Hall, 2002
[3] C++ Programming Today (2 edition), Barbara Johnston, Prentice Hall, 2007

千万首歌曲。全无广告干扰。
此外,您还能在所有设备上欣赏您的整个音乐资料库。免费畅听 3 个月,之后每月只需 ¥10.00。
Apple 广告
声明:MOOC中国十分重视知识产权问题,我们发布之课程均源自下列机构,版权均归其所有,本站仅作报道收录并尊重其著作权益。感谢他们对MOOC事业做出的贡献!
  • Coursera
  • edX
  • OpenLearning
  • FutureLearn
  • iversity
  • Udacity
  • NovoEd
  • Canvas
  • Open2Study
  • Google
  • ewant
  • FUN
  • IOC-Athlete-MOOC
  • World-Science-U
  • Codecademy
  • CourseSites
  • opencourseworld
  • ShareCourse
  • gacco
  • MiriadaX
  • JANUX
  • openhpi
  • Stanford-Open-Edx
  • 网易云课堂
  • 中国大学MOOC
  • 学堂在线
  • 顶你学堂
  • 华文慕课
  • 好大学在线CnMooc
  • (部分课程由Coursera、Udemy、Linkshare共同提供)

© 2008-2020 MOOC.CN 慕课改变你,你改变世界