过去近二十年的“高级语言程序设计”课程多是以 C 语言为主要的讲授对象,C 语言具有代码简洁紧凑、执行效率高、贴近硬件、可移植性好等优点,广泛应用于系统软件、嵌入式软件等开发。
然而,随着计算机技术的发展和进步,我们可以使用它来解决越来越多的问题,计算机的应用场合也不局限于计算机学科,众多的学科被冠以“计算”之名,如计算生物学、计算化学等等。在这种情况下,C 语言这种“低级”语言已经越来越难适应计算机发展的潮流,众多的“高级”语言被创造出来以解决更实际的问题。
另外,C 语言由于其语法过于灵活,所需要掌握的细节概念非常庞杂,即使是实现最简单的功能,也要涉及很多概念。因此如果教师在教学中不能将学生从语法细节中摆脱出来的话,那么往往也会吓退很多初学者,不利于学习兴趣的培养。
最后就是尽管 C 语言对于学生掌握计算机底层的工作原理非常重要,但 C 语言相对比较“低级”,缺乏高级数据结构,因此要想解决更实际的问题,如字符串的处理、大规模的数据分析等,就需要编写非常大规模且复杂的代码,初学者往往会显得力不从心了。
因此,我们需要一种简单易学且能解决更实际问题的语言,Python 语言恰好能弥补 C 语言的不足。
本课程除了讲授 Python 语言程序设计语言的基本要素,包括基本数据类型、运算、控制结构、函数外,还讲授数据结构的概念和应用、算法时空复杂性的概念等知识,使学生在学完本课程后,即可利用计算机解决众多的实际问题。授课大纲
知识单元一:程序设计语言基础
第1周:程序设计的基础知识
教学内容:计算的基本概念,计算机程序设计语言的历史,Python语言的发展简史及语言的特点,程序设计语言的基本语法
教学要求:了解冯诺依曼计算机的基本结构;了解编译型/解释型语言的区别
第2周:数据类型、运算符与表达式、变量赋值与简单I/O操作
教学内容:数值数据类型(integer、float、boolean),算术运算符、关系运算符和逻辑运算符,表达式,运算符优先级,常用的数学函数,标识符命名规则,变量赋值和赋值运算,标准输入/输出,标识符命名规则,变量赋值和赋值运算,标准输入/输出
教学要求:掌握数据类型的功能,不同数据类型的表示方式,它们之间的区别和联系,掌握标示符命名规则;掌握变量的含义及定义方式;掌握标准输入/输出方法,掌握不同运算符的含义;掌握运算符的优先级;了解常用的数学函数
第3周:控制结构与流程图
教学内容:顺序、分支和循环控制结构,嵌套控制结构,流程图表示方法
教学要求:掌握不同控制结构的区别和联系;会灵活运用不同的控制结构解决实际的问题;掌握流程图绘制方法
第4周:函数
教学内容:函数定义与调用,参数传递,变量作用域,结构化程序设计的核心思想,程序测试与调试,递归的基本思想,递归函数应用实例。
教学要求:掌握函数的功能;了解参数传递的过程;了解变量作用域的含义;了解分而治之的结构化程序设计思想;了解基本的程序测试与调试方法;了解递归的基本思想;学会用递归的思想解决实际问题
知识单元二:数据结构与算法基础
第5周:字符串
教学内容:字符串表示、字符串处理、正则表达式
教学要求:了解字符串的概念;掌握字符串的基本操作
第6周:列表、元组和简单算法
教学内容:列表的概念和基于列表的算法,算法基础知识(算法的概念和特性,时间和空间复杂度概念),查找、排序等
教学要求:了解列表、元素的基本概念和区别;了解算法的定义;了解时间和空间复杂度概念;掌握基本的查找、排序算法
第7周:字典与集合
教学内容:字典与集合的概念和应用
教学要求:了解字典与集合的基本概念和区别以及应用场合;了解不同数据的优缺点和适用领域;学会综合应用多种数据结构解决实际问题
参考资料
教材: Allen B. Downey.《Think Python: How to Think Like a Computer Scientist》Green Tea Press.