本课程是计算机类专业的主干基础课程,也可供其他专业学生选修。
本课程用C、C++、Java、Python四种语言授课,修过其中一门即可修读本课程。对于关键的数据结构与算法知识点,讲授多种语言的实现方式,对其他部分知识点,给出4种语言的实现代码供学生自学。在讲授过程中,引导学生理解不同语言的差异并领悟不同语言的共性,将“计算思维”融进课程,最终可让学生理解“程序设计语言只是一样工具”,编写程序时不受限于特定语言。
本课程抓住学生“动手编程困难”的痛点,在讲授数据结构与算法理论知识的基础上,重点强调实践,带领学生一行一行编写代码,将“产生思路——编写程序——运行调试”的全过程展示给学生,将算法思想和程序设计规范融入到讲授过程中,让学生有沉浸式体验。在讲授过程中,将带领学生共同寻找思路解决问题,将与学生一起遇到并修改常见错误。本课程强调过程化考核,针对程序设计的特点,设置了在线评测的习题集和测验题集,给学生提供了充足的动手实践编程的机会。在完成本课程学习后,学生将由“纸上谈兵”型转变为“实战”型,为成为合格的软件工程师和算法工程师打好坚实基础。
每一讲的课后,都留有两类练习,一类是在线完成的选择、是非或填空题,以下称作“随堂测验”(quiz);一类是在拼题A网站(PTA,Programming Teaching Assistant)上的编程练习题,以下称作“编程习题”。你可以自己注册帐户,随时进行练习,并不限于发布练习的时段。
课程过半时,会安排一次期中考试,是在线完成的选择、是非或填空题,不包括编程题。期中考试在两周内用连续的60分钟完成均有效。期中考试成绩占总评的40%。
最后,在期末后一周,会安排一次在线期末考试,需要在某一天内用连续的120分钟完成。期末考试成绩占总评的60%。如果未参加期中考试,或者期中考试成绩低于期末考试成绩,则以期末成绩为总评成绩。
本课程获得证书的充分必要条件:
1.完成随堂测验:必须完成全部随堂测验(不包含视频中的提问),不能留有未做的测验。随堂测验成绩不计入课程总评成绩。
2.编程习题达标:必须在期末考试前在PTA的本课程题目集中获得200分及以上。习题分数不计入课程总评成绩。
3.合格:总评成绩[60, 80) 优秀:总评成绩[80,100]
为了对学习者的在线学习过程更加负责,保证平台证书的严谨性和权威性,从2019年9月份开始,中国大学MOOC将不再发放免费证书;认证证书(同时有纸质版和电子版)需申请并付费:100元/份。
推荐以下参考资料和资源:
0. 《数据结构与算法分析》(原书第2版),[美]Mark Allen Weiss著,机械工业出版社。可选英文原版或中译版,可选C语言描述版、C++语言描述版或Java语言描述版。
1.《数据结构》(第2版),陈越、何钦铭、徐镜春、魏宝刚、杨枨 编著,高等教育出版社,2016年6月
2. 《数据结构学习与实验指导(第2版)》,陈越、何钦铭、徐镜春、魏宝刚、杨枨 编著,高等教育出版社,2019年7月
3. 课程练习网站:
(1) 拼题A(Programming Teaching Assistant): https://pintia.cn/ 本课程的编程练习将在这里布置。
(2) PAT(Programming Ability Test):https://www.patest.cn/ 网站提供往届考试真题。
Q : 我是计算机小白(啥也不会),可以学这门课吗?
A : 需要至少学会一门编程语言才可以学这门课。编程语言初步学会就行,不需要精通,在这门课的学习过程中,语言会越磨越精的。
Q : 我不是计算机类专业的,可以学这门课吗?
A : 有兴趣就欢迎学,兴趣是第一驱动力。需要至少学会一门语言,参考上一个问题的回答。
Q : 我已经学过数据结构理论课,还有必要学这门课吗?
A : 如果感觉动手能力比较强了,就不需要学了。如果感觉理论初通、动手差点,那十分建议学习这门课,再夯实一下。
Q : 我没学过数据结构理论课,可以直接学习这门课吗?
A : 虽然这门课着重讲解实战(实现)部分,但理论部分也都讲了,只是讲得稍微概略一些。如果没学过数据结构理论课,想直接学习本门课程,一般都是没问题哒!如果哪里的理论知识实在是搞不明白,本课程推荐的参考资料之一《数据结构》(第2版)通俗易懂,十分适合自学,翻书看一下一般就OK啦。
Q : 我想先学习一门语言,再来学习这门课。推荐哪种语言?
A : 随便。随便哪种语言都好。我们讲授时,用C和C++多一些,用Java和Python少一些。程序猿和程序媛是不会被语言给绊住的,只要真正搞懂一门语言,就很容易搞懂其他语言。所以语言的不同,不是障碍。我们用四种语言讲授,目的是让大家逐渐进入“无招胜有招”的状态,编程序时不受限于具体语言,而是掌握算法的本质。
Q : 学了这门课之后,我就是优秀程序猿(媛)了吗?
A : 师傅领进门,修行看个人。这门实战课,重在实战,大家只要多想、勤练,相信都会修炼成优秀程序猿(媛)的。想检验一下自己水平的话,推荐参加PAT考试(https://www.patest.cn/ )。
Q : 好吧,我决定开始学习这门课了!那么,我安装什么版本的开发环境?
A : 课程的第一讲,会给出建议安装的开发环境列表。一般来说不要安装太旧版本的开发环境。C环境至少要支持C99;C++的环境至少支持C++11;Java至少是JDK8;Python需要Python 3。
Q : 我用 VC++ 6.0 可不可以涅?
A : 参考上一个问题的回答——不要用太旧的IDE。VC++6.0 是为师在2000年当学生时用的IDE啊,太老了…… VC++6.0既不是标准的C环境,也不是能支持新标准的C++环境,所以就不要使用了。