课程说明
课程概述
“高级语言程序设计”类课程面向无编程基础的学生,培养其运用编程语言解决实际问题的编程能力,使学生掌握一门编程语言的基本语法、语句、控制结构以及结构化程序设计的基本思想和方法,了解基本的算法和数据结构、良好的程序设计风格,具备熟练使用一门编程语言分析和解决实际问题的能力,从而无论以后在学习、工作中使用什么语言编程,都能灵活应用这些思想和方法,为进一步学习其他专业课程和今后从事软件开发工作打下坚实的基础。
过去近二十年的“高级语言程序设计”课程多是以C语言为主要的讲授对象,C语言具有代码简洁紧凑、执行效率高、贴近硬件、可移植性好等优点,广泛应用于系统软件、嵌入式软件等开发。
然而,随着计算机技术的发展和进步,我们可以使用它来解决越来越多的问题,计算机的应用场合也不局限于计算机学科,众多的学科被冠以“计算”之名,如计算生物学、计算化学等等。在这种情况下,C语言这种“低级”语言已经越来越难适应计算机发展的潮流,众多的“高级”语言被创造出来以解决更实际的问题。
另外,C语言由于其语法过于灵活,所需要掌握的细节概念非常庞杂,即使是实现最简单的功能,也要涉及很多概念。因此如果教师在教学中不能将学生从语法细节中摆脱出来的话,那么往往也会吓退很多初学者,不利于学习兴趣的培养。
最后就是尽管C语言对于学生掌握计算机底层的工作原理非常重要,但C语言相对比较“低级”,缺乏高级数据结构,因此要想解决更实际的问题,如字符串的处理、大规模的数据分析等,就需要编写非常大规模且复杂的代码,初学者往往会显得力不从心了。
因此,我们需要一种简单易学且能解决更实际问题的语言,Python语言恰好能弥补C语言的不足。具体地,和C语言相比,Python语言具有如下的优点:
1、简单易学:Python语言是一种代表简单主义思想的语言,极易上手。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格。Python语言的这种伪代码本质是它最大的优点之一,它使学生能够专注于解决问题而不是去搞明白语言本身。
2、丰富的数据结构:除了基本的数值类型外,Python语言还内置了字符串、列表、字典等丰富的高级数据结构,利用这些数据结构,我们可以解决非常多的实际应用问题,如文本的处理、数据的分析等等。
3、逐渐流行:目前,有越来越多的项目使用Python语言开发。同时也有越来越多Python的类库被开发出来,这使得使用Python语言变得更加易用,对于提高计算机专业学生的学习兴趣和应用能力大有裨益。此外,Python语言设计之初就考虑到要能够方便地调用其他语言,因此可以方便地利用已有的其他语言编写的模块。
本课程除了讲授Python语言程序设计语言的基本要素,包括基本数据类型、运算、控制结构、函数外,还讲授数据结构的概念和应用、算法时空复杂性的概念以及图形用户界面、数据库和Web应用程序设计等实用的知识,使学生在学完本课程后,即可利用计算机解决众多的实际问题,甚至可以编写图形游戏、动态网站以及处理复杂的数据等。
证书要求
评分方案
评分按照周测验和期末考试的答题情况进行,周测验 80 分,期末 20 分。
证书
评分高于 60 分颁发普通证书。
预备知识
无
授课大纲
知识单元一 程序设计语言基础
第1周:程序设计的基础知识
教学内容:计算的基本概念,计算机程序设计语言的历史,Python语言的发展简史及语言的特点,程序设计语言的基本语法
教学要求:了解冯诺依曼计算机的基本结构;了解编译型/解释型语言的区别
第2周:数据类型、运算符与表达式、变量赋值与简单I/O操作
教学内容:数值数据类型(integer、float、boolean),算术运算符、关系运算符和逻辑运算符,表达式,运算符优先级,常用的数学函数,标识符命名规则,变量赋值和赋值运算,标准输入/输出,标识符命名规则,变量赋值和赋值运算,标准输入/输出
教学要求:掌握数据类型的功能,不同数据类型的表示方式,它们之间的区别和联系,掌握标示符命名规则;掌握变量的含义及定义方式;掌握标准输入/输出方法,掌握不同运算符的含义;掌握运算符的优先级;了解常用的数学函数
第3-4周:控制结构与流程图
教学内容:顺序、分支和循环控制结构,嵌套控制结构,流程图表示方法
教学要求:掌握不同控制结构的区别和联系;会灵活运用不同的控制结构解决实际的问题;掌握流程图绘制方法
第5-6周:函数
教学内容:函数定义与调用,参数传递,变量作用域,结构化程序设计的核心思想,程序测试与调试,递归的基本思想,递归函数应用实例。
教学要求:掌握函数的功能;了解参数传递的过程;了解变量作用域的含义;了解分而治之的结构化程序设计思想;了解基本的程序测试与调试方法;了解递归的基本思想;学会用递归的思想解决实际问题
知识单元二 数据结构与算法基础
第7周:字符串
教学内容:字符串表示、字符串处理、正则表达式
教学要求:了解字符串的概念;掌握字符串的基本操作
第8周:列表、元组和简单算法
教学内容:列表的概念和基于列表的算法,算法基础知识(算法的概念和特性,时间和空间复杂度概念),查找、排序等
教学要求:了解列表、元素的基本概念和区别;了解算法的定义;了解时间和空间复杂度概念;掌握基本的查找、排序算法
第9周:字典与集合
教学内容:字典与集合的概念和应用
教学要求:了解字典与集合的基本概念和区别以及应用场合;了解不同数据的优缺点和适用领域;学会综合应用多种数据结构解决实际问题
知识单元三 系统开发
第10周:GUI编程基础
教学内容:GUI基本控件,键盘、鼠标事件与事件处理
教学要求:了解基本的GUI概念和基本事件处理方法
第11周:数据库与Web应用开发基础
教学内容:数据库基本概念、SQL操作、基于Django的简单Web应用开发
教学要求:了解基本的关系数据库概念;掌握简单的SQL操作;学会基于Django的简单Web应用开发流程
参考资料
教材: Allen B. Downey.《Think Python: How to Think Like a Computer Scientist》Green Tea Press.
英文版下载地址:http://www.greenteapress.com/thinkpython/thinkpython.html
我们也将该书翻译为了中文,请于 http://pan.baidu.com/s/1vaefL 下载最新的中英文对照版
如果发现翻译的错误或者想贡献更多的翻译,请fork:https://github.com/carfly/thinkpython-cn
主要参考书:(美)潘曲等著,张敏等译.《Python入门经典:以解决计算问题为导向的Python编程实践》.机械工业出版社.2012.
常见问题
Q1:为什么教学内容选择Python 2.x版,而不是 3.x版?
A1:目前Python有两个版本,2.x 和 3.x版,这两个版本是不兼容的,虽然目前Python正朝着 3.x版进化,但是由于历史原因,目前有大量的第三方库还是用 2.x版实现的,这些代码要修改后才能在3.x上运行。因此,为了保证你的程序能用到这些优秀的第三方库,我们仍以2.x版本,确切的说事2.7.x,为介绍对象。所以,请确保你的电脑上安装的Python版本是2.7.x。
Q2:内容能否更有“深度”?
A2:本门课主要面向无任何编程基础的同学,也就是将Python作为第一门编程语言来讲授“高级程序设计语言”,重点是编程的思想和解决问题能力的培养,而不涉及太多的Python特性。至于为什么这么做,有相关的文章加以阐释(http://blog.csdn.net/bitfan/article/details/7939691)。那么本门课是否会介绍一些有“深度”的内容呢?答案是NO!如果你学过其它编程语言,想通过本门课快速了解Python到底和之前学过的语言有哪些不同的话,建议到网上查找相关的资料。
去上课