课程详情
课程评价
spContent=本课程与众不同之处在于,花费比学习C语言多百分之十的时间,就能享受C++带来的方便与效率。适用于包括中学生在内的所有零基础学习者。讲授C++编程,但不牵涉面向对象内容,约等同于C语言程序设计。学会用C++ 的STL中的基本模版提高程序编写效率和运行效率。介绍基本算法思想: 递归、排序、二分查找。
—— 课程团队
课程概述

C++语言的功能和方便性都强于C语言,只是由于其面向对象的特性比较复杂,因此很少被选为入门语言。实际上,C语言是C++的子集,C++对C语言的扩充可以分为与面向对象无关的新语法特性、面向对象的特性,以及泛型特性三个部分。如果放弃其中复杂的面向对象特性,以及泛型的绝大多数特性(但保留其中极其有用的标准模板库STL中的部分算法和容器),则剩余部分也十分适合做为入门语言来学,而且用这样的“简化”C++语言编写程序,既比用C语言更为方便和高效,又无需掌握写大型程序才会用到的庞杂的面向对象的特性 --- 学习成本增加很少而编程效率提高很多。


基于上述考虑,本课程虽然是面向中学生的零基础的编程课,还是选用C++作为编程语言。实际上,本课程并没有因为面向中学生而作了简化,也适合大学生、上班族等所有希望编程入门的学习者。授课内容13周,考试1周。主要为以下三部分:


1) 9.5 周: C++结构化程序设计(基本等同于C语言程序设计)。

2) 1.5 周:基本算法思想,包括算法的时间复杂度的概念、简单排序,二分查找。

3) 2  周:用C++的STL(标准模板库)轻松实现高效的排序和查找。这部分内容虽不多,但对于提高编写程序的效率

极其有用。

4) 1  周: 考试


总之,本门课最大的特点是:让学习者花费比学习C语言多不到10%的时间,就能享受C++语言带来的更多方便与效率。


另外,本课程的内容和作业紧扣“北京大学信息学院程序设计与算法等级认证”考试,该考试分为十级,本课程内容对应于第一级和第二级,作业和考试题也来源于该等级认证考试的题库。


本课程作业和考试的题型90%以上都是在线提交程序,系统自动评测,容不得半点错误,这对学习者是非常严格而且有效的训练,符合当下顶尖IT企业招聘考核的形式,学习效果远胜于书面作业人工批改的形式。

授课目标
1. 掌握C++语言中与与面向对象无关部分的基本语法知识(略强于C语言) 2. 对什么是算法形成初步的概念 3. 达到“北京大学信息学院程序设计与算法等级认证”考试二级的要求
课程大纲
预备知识

零起点课程,基本上不需要预备知识,初中生也可以学习。

证书要求

完成作业和考试,达到要求后,可以获得课程主讲教师签名颁发的合格证书或优秀证书。总成绩算法如下:

考核

成绩

每周测验(即作业)

70/100

期末考试

30/100




60-84分:合格证书
85-100分:优秀证书


参考资料


常见问题
  1. 学习C++作为入门是不是太难了,为什么不只讲C语言呢?

    答:C++比C语言难的地方主要在于面向对象的特性,但这部分内容本课程是不讲的,因此本课程不论是内容还是难度与C语言相比并没有太大区别。由于C语言在一些语法细节上不如C++用起来方便,因此选择讲授C++,可以理解成讲授的是经过稍许改进的C语言。更重要的是,C++有STL这个使用非常方便的库是C语言没有的,例如,用STL写个整数的排序操作只要1行,而用C语言的写法,则需要六七行才能完成,而且还需要理解函数指针等复杂概念才可以。因此本课程最后两周也讲授了STL的初步内容,但不计入成绩考核。

  2. 本课程的作业和考试形式是怎样的?

    答:本课程90%的作业,以及最后的期末考试,形式都是在北京大学在线程序评测系统 openjudge.cn上提交程序,由系统自动评判正误。程序不能有丝毫错误。这种形式对于提高编程能力极其有效。

  3. 本课程看起来内容很多,是不是很难拿到证书?

    答:对于比较难的部分,如位运算,指针,STL,虽然也会布置作业,但是不列入成绩考核范围。因此拿证书的难度并不大。

  4. 课程介绍中提到的“北京大学信息学院程序设计与算法等级认证”是怎么回事?

    答:为了推广和普及计算机教育,北京大学信息学院推出了基于2000题题库的“北京大学信息学院程序设计与算法等级认证”考试,考试共分十级,最高等级的水平相当于中学信息学奥赛全国赛或ACM国际大学生程序设计竞赛。本课程的内容对应于一级、二级,作业和考试题也来自该2000题的题库。