计算机相关专业“Python程序设计”教学大纲(参考)

“Python程序设计”

教 学 大 纲(参考)

课程名称:Python程序设计

课程性质:限制性选修

考核方式:考查

建议学时:48+32

前导课程:数据结构、数据库原理、计算机网络、计算机图形学、操作系统、软件工程等

适用专业:计算机科学与技术、软件工程、网络工程、通信工程、数字媒体技术大数据应用技术及其他工科专业

一、教学目的和要求

通过本课程的学习,使得学生能够理解Python的编程模式,尤其是函数式编程模式,熟练运用Python内置函数与运算符、列表、元组、字典、集合等基本数据类型以及相关列表推导式、切片等语法来解决实际问题,熟练掌握Python分支结构、循环结构、函数设计以及类的设计与使用,熟练使用正则表达式处理字符串,同时使得学生掌握不同领域的Python扩展模块并能够解决文件操作、大数据处理、图形图像处理、音乐编程与语音识别、多线程编程、数据库编程、网络编程、逆向工程与软件分析、科学计算可视化、密码学、安卓等领域中的实际问题,同时还应培养学生的代码优化与安全编程意识。

二、教学中应注意的问题

Python编程模式中非常重要的一条是代码简单化、问题简单化,同时应保证代码具有较强的可读性。在教学过程中,一定不要在Python程序中带有其他编程语言的痕迹,要尽量从最简单的角度去思考和解决问题、实现自己的想法和思路,保证代码的优雅、简洁,让代码更加Pythonic。

使用Python编程解决问题应充分借鉴和使用成熟的标准库和扩展库,尽量避免自主编写完整的业务逻辑,部分具体操作完全可以使用扩展库来实现,大幅度提高开发效率。例如,如果需要进行排序则直接使用内置函数或方法进行排序,切不可再使用选择法排序、冒泡法排序或堆排序等排序算法来编写代码实现;如果要测试一段代码的运行事件,应使用标准库time中的有关函数;要测试一个年份是否为闰年,应使用calendar标准库中的函数;要进行图像处理,应使用扩展库pillow;要进行计算机图形学编程,应使用扩展库pyopengl;要进行数据分析,应使用pandas扩展库;要进行数据可视化与科学计算可视化,应使用matplotlib扩展库;要进行编写爬虫程序,应使用requests、BeautifulSoup、scrapy扩展库;等等。

三、教学内容

建议第一篇的前8章都讲,第二篇中的部分章节可以根据培养方向和目标进行选讲。

第一篇 Python基础

第1章 基础知识

1.1 Python语言版本之争

教学重点:如何选择正确的Python版本。

1.2 Python安装与简单使用

教学重点:Windows平台的Python安装。

1.3 使用pip管理扩展库

教学重点:使用pip安装和管理Python扩展库。

1.4 Python基础知识

教学重点:Python对象模型,Python变量,Python自动内存管理功能,数字、字符串基本知识,Python运算符与表达式,常用Python内置函数,基本输入输出,Python模块的导入与使用。

1.5 Python代码编写规范

教学重点:缩进和空格、空行在Python程序中的作用和重要性,注释的形式和注释的作用,测试驱动的程序设计方式。

1.6 Python文件名

教学重点:.py、.pyc等文件名的作用,Python伪编译,Python 3.5之后不再使用.pyo文件。

1.7 Python程序的运行方式

教学重点:根据__name__属性来确定Python程序的运行方式。

1.8 编写自己的包

教学重点:Python程序的组织方式。

1.9 Python快速入门

教学重点:Python程序设计入门,了解运算符和表达式以及模块中方法的用法。

1.10 The Zen of Python

第2章 Python数据结构

2.1 列表

教学重点:列表对象的创建与删除,列表元素的增加与删除,列表元素访问与计数,有序序列的双向索引,成员资格判断运算符in,切片操作,列表排序,列表推导式。

2.2 元组

教学重点:元组对象的创建与删除,元组与列表的区别,序列解包,生成器推导式。

2.3 字典

教学重点:字典对象的创建与删除,字典元素的读取,字典元素的添加与修改,有序字典对象的使用,使用字典来计数。

2.4 集合

教学重点:集合对象的创建与删除,集合的并、交、差以及对称差等运算,使用集合来提取序列中的唯一元素。

2.5 其他数据结构(选讲)

教学重点:栈、队列、堆、链表、二叉树、图等数据结构的实现。

第3章 选择与循环

3.1 运算符与条件表达式

教学重点:Python运算符,条件表达式。

3.2 选择结构

教学重点:单分支选择结构、双分支选择结构、多分支选择结构、选择结构的嵌套。

3.3 循环结构

教学重点:for循环、while循环,range对象在循环中的使用,成员测试符in在循环语句中的使用,带有else子句的循环结构,循环代码的优化。

3.4 break和continue语句

教学重点:break和continue语句的作用。

3.5 综合运用

第4章 字符串与正则表达式

4.1 字符串

教学重点:字符串编码,字符串格式化,find()、index()、split()、join()、replace()、translate()、strip()、startswith()、endswith()、center()、ljust()、rjust()等字符串常用方法,字符串常量,可变字符串。

4.2 正则表达式

教学重点:正则表达式元字符,re模块常用方法,正则表达式对象,正则表达式子模式扩展语法。

第5章 函数设计与使用

5.1 函数定义

教学重点:Python函数的定义形式。

5.2 形参与实参

教学重点:形参与实参的概念。

5.3 参数类型

教学重点:默认值参数,关键参数,可变长度参数,参数传递时的序列解包。

5.4 return语句

教学重点:如果函数中没有(或没有执行)return语句或者执行了没有返回值的return语句,则将被认为返回空值None。

5.5 变量作用域

教学重点:局部作用域,全局作用域,nonlocal变量。

5.6 lambda表达式

教学重点:使用lambda表达式声明匿名函数和命名函数,在lambda表达式中调用函数,把lambda表达式作为函数参数。

5.7 高级话题

教学重点:map()、reduce()、filter()、yield语句,dis模块。

第6章 面向对象程序设计

6.1 类的定义与使用

教学重点:Python类的定义,self与cls参数,类成员与实例成员,私有成员与公有成员。

6.2 类的方法

教学重点:类方法,实例方法,静态方法,修饰器。

6.3 类的属性

教学重点:属性的定义与使用,使用属性和公开数据成员的区别。

6.4 类的特殊方法

教学重点:Python类特殊方法与运算符的对应关系。

6.5 继承机制

教学重点:Python支持多继承,如果多个父类中有相同名字的成员,Python解释器将按照从左向右的顺序在所有父类中进行搜索,并且使用第一个遇到的成员。

第7章 文件操作

7.1 文件基本操作

教学重点:文本文件与二进制文件的区别,open()方法以及flush()、close()、read()、write()等文件对象常用方法。

7.2 文本文件基本操作

教学重点:read()、write()、seek()等文件对象常用方法的运用。

7.3 二进制文件操作

教学重点:二进制文件读写方式,序列化模块pickle与struct。

7.4 文件操作

教学重点:os与os.path与shutil模块中方法的运用,判断文件是否存在,文件路径分割与连接,文件重命名,文件复制。

7.5 目录操作

教学重点:os模块常用方法,当前目录的查看与修改,文件夹的创建与删除,文件夹遍历的几种方式。

7.6 高级话题

教学重点:CRC32与MD5计算,文件相似度计算,文件类型检测,Excel文件操作,Word文件操作。

第8章 异常处理结构与程序调试

8.1 基本概念

教学重点:异常的概念与表现形式。

8.2 Python异常类与自定义异常

教学重点:Python内建异常类,自定义异常类。

8.3 Python中的异常处理结构

教学重点:常见异常处理结构,异常处理代码中可能再次引发异常。

8.4 断言与上下文管理

教学重点:assert与with语句。

8.5 用sys模块回溯最后的异常

8.6 使用IDLE调试代码

教学重点:IDLE调试界面操作。

8.7 使用pdb模块调试程序(选讲)

教学重点:pdb常用命令,使用交互模式、命令行模式、程序中嵌入断点等几种方式使用pdb调试功能。

第二篇 Python高级编程与应用

第9章 GUI编程(选讲)

9.1 wxPython

教学重点:wxPython基础知识,Frame的概念与作用,控件与事件处理函数的编写与绑定。按钮、静态文本框、文本框、菜单、工具条、状态条、对话框、单选钮、复选框、组合框、列表框、树形控件的用法。

9.2 tkinter精彩编程

教学重点:tkinter组件用法,tkinter案例。

第10章 网络程序设计

10.1 计算机网络基础知识

教学重点:OSI参考模型,TCP/IP协议族,网络协议三要素,IP地址与MAC地址。可根据需要进行适当扩充。

10.2 UDP和TCP编程

教学重点:UDP协议与TCP协议的区别与实现,socket模块的应用。

10.3 简单嗅探器实现

教学重点:嗅探器工作原理,网卡混杂模式。

10.4 网页内容读取

教学重点:urllib模块的应用,读取网页内容。

10.5 使用Python开发网站

教学重点:IIS配置,ASP文件嵌入Python代码。

10.6 使用web2py框架开发网站

第11章 大数据处理(选讲)

11.1 大数据框架

教学重点:MapReduce、Hadoop、Spark等大数据处理平台或框架基础知识,可根据需要进行适当扩充。

11.2 Map/Reduce编程案例

教学重点:Map、Reduce思路。

第12章 Windows系统编程(选讲)

12.1 注册表编程

教学重点:Windows注册表基本概念与相关知识,win32api、win32con模块方法的应用。

12.2 创建exe可执行文件

教学重点:py2exe、distutils模块的应用,控制台应用程序与GUI应用程序打包方式的不同。

12.3 调用外部程序

教学重点:os模块的system()、popen()、startfile()方法,win32api模块的ShellExecute()方法,win32process模块,使用ctypes模块调用动态链接库或共享库中的函数。

12.4 创建窗口

教学重点:win32gui、win32api、win32con等模块的应用,使用不同方式创建应用程序窗口。

12.5 判断操作系统版本

第13章 多线程编程

13.1 threading模块

教学重点:多线程概念,threading模块基本用法。

教学难点:线程数量不是越多越好。

13.2 Thread对象

教学重点:Thread对象,创建线程的方法,join()方法,daemon属性。

13.3 线程同步技术

教学重点:线程同步技术,Lock/RLock对象,Condition对象,Queue对象,Event对象。

第14章 数据库编程

14.1 SQLite应用

教学重点:SQLite数据库概念,如何在Python中使用SQLite数据库,Connection对象,Cursor对象,Row对象。

14.2 访问其他类型数据库

教学重点:使用pywin32操作ACCESS数据库和MSSQLServer数据库,使用pymssql操作MSSQLServer数据库,使用MySQLDb操作MySQL数据库,SQL语句的编写。

第15章 多媒体编程

15.1 图形编程

教学重点:PyOpenGL模块的使用,图形编程框架的搭建,绘制文字,绘制基本图形,纹理映射,键盘与鼠标事件的接收和处理。

15.2 图像编程

教学重点:PIL模块与pillow模块,图像文件的打开、保存与显示,图像信息查看,图像点运算,图像格式转换,图像缩放、旋转、增强、裁剪与粘贴,图像滤波、边缘提取、对比度调整。

15.3 音乐编程(选讲)

教学重点:pygame模块,音乐播放器的设计与实现。

15.4 语音识别(选讲)

教学重点:speech模块,语音识别。

第16章 逆向工程与软件分析(选讲)

16.1 主流项目与插件简介

教学重点:逆向工程与软件分析的重要性,主流软件和插件介绍。

16.2 IDAPython与Immunity Debugger编程

教学重点:IDAPython插件的安装与使用,PE文件的概念及其在Windows平台的地位,使用IDAPython简单分析PE文件;Immunity Debugger调试器的使用与简单操作,使用Immunity Debugger寻找PE文件中的循环、打包器或指令。

教学难点:ROP攻击以及ROP Gadgets简单识别。有些内容需要查阅PE文件规范,并要求学生了解汇编语言的基本语法和有关指令。

16.3 Windows平台软件调试原理

教学重点:Windows调试接口,调试事件的概念,进程调试原理,线程环境或上下文的读取与修改,断点概念与类型。

16.4 案例精选

第17章 科学计算与可视化

17.1 numpy简单应用

教学重点:numpy模块的安装与使用,数据与标量数值的计算,数据与数组的算数运算,数组转置,向量内积,数组元素访问,矩阵不同维度上的求和与均值计算以及最大值、最小值的查找,标准差与方差计算,数组切片与布尔运算,加权平均值的计算。

17.2 scipy简单应用

教学重点:scipy模块的安装与使用,常数与特殊函数的使用,使用scipy实现中值滤波。

17.3 matplotlib简单应用

教学重点:matplotlib模块的安装与使用,正弦曲线与散点图的绘制,图形显示模式的设置,三维图形绘制。

第18章 密码学编程

18.1 安全哈希算法

教学重点:MD5算法,标准库hashlib,扩展库pycrypto和pycryptodome。

18.2 对称密钥密码算法DES和AES

教学重点:DES和AES算法原理与应用。

18.3 非对称密钥密码算法

教学重点:RSA、DSA算法原理与应用。

第19章 安卓编程(选讲)

19.1 QPython简介

教学重点:QPython安装与使用

19.2 安卓应用开发案例

教学重点:android、androidhelper、sl4a、kivy模块的应用。

四、教学课时分配

教学课时分配表(参考)

章 节 名 称

课堂学时

实验学时

课外学时

第1章 Python基础

4

2

第2章 Python数据结构

4

2

4

第3章 选择与循环

4

2

2

第4章 字符串与正则表达式

4

2

2

第6章 函数设计与使用

4

2

2

第6章 面向对象程序设计

4

2

2

第7章 文件操作

6

2

4

第8章 异常处理结构与程序调试

2

第9章 GUI编程(选讲)

2

2

4

第10章 网络程序设计

2

2

第11章 大数据处理(选讲)

2

2

第12章 Windows系统编程(选讲)

2

2

4

第13章 多线程编程

4

2

4

第14章 数据库编程

2

2

2

第15章 多媒体编程

4

2

4

第16章 逆向工程与软件分析(选讲)

2

2

第17章 科学计算与可视化(选讲)

4

2

4

第18章 密码学编程

2

2

4

第19章 安卓编程(选讲)

2

4

五、教材与参考书目

教材:

1. 董付国.《Python程序设计(第2版)》,清华大学出版社,2016

参考书目:

1. 董付国.《Python程序设计开发宝典》,清华大学出版社,2017

2. 董付国.《Python可以这样学》,清华大学出版社,2017

3. 董付国.《玩转Python轻松过二级》,清华大学出版社,2018

4. 张颖,赖勇浩著.《编写高质量代码——改善Python程序的91个建议》.机械工业出版社,2014

5. 杨佩璐,宋强等编著.《Python宝典》.电子工业出版社,2014

6. 张若愚著.《Python科学计算》.清华大学出版社,2012

7. 李锐,李鹏,曲亚东等译.《机器学习实战》.人民邮电出版社.2013

原文发布于微信公众号 - Python小屋(Python_xiaowu)

原文发表时间:2018-05-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏哲学驱动设计

EntityFramework 元数据 设计分析

    由于之前已经尝试使用过 EF CodeFirst CTP4,所以这次在EF4.1发布的第三天,在 OEA 框架中已经支持使用它来实现数据访问层。而且,我...

19480
来自专栏木东居士的专栏

漫谈并发编程:Actor模型

20240
来自专栏牛客网

金山WPS,C++研发工程师,一面

【每日一语】人们常常会欺骗你,是为了让你明白,有时候,你唯一应该相信的人就是你自己。——《千与千寻》

9720
来自专栏申龙斌的程序人生

零基础学编程002:Hello World

昨天介绍了codecademy在线学编程的网站,不知道大家动手试验了没有?是不是太简单,一下子就完成了许多练习? 第一课的内容只有一条输出语句,点击保存并提交...

29570
来自专栏软件测试经验与教训

Python学习笔记(六)-循环

46280
来自专栏C语言及其他语言

[每日一题]内部收益率

题目描述 在金融中,我们有时会用内部收益率IRR来评价项目的投资财务效益,它等于使得投资净现值NPV等于0的贴现率。换句话说,给定项目的期数T、初始现金流CF0...

31360
来自专栏用户2442861的专栏

2012年10月9号阿里巴巴笔试(c++)

http://blog.csdn.net/liuzhanchen1987/article/details/8058177#comments

12320
来自专栏Jimoer

经历的面试题,先做下部分总结。

17230
来自专栏嵌入式程序猿

号外号外:无规矩不成方圆

所谓无规矩不成方圆,嵌入式软件开发一样,MISRA(Motor Industry Software Reliability Association),在...

28070
来自专栏竹清助手

深入理解 Laravel Eloquent(三)——模型间关系(关联)

Eloquent 是一个 ORM,全称为 Object Relational Mapping,翻译为 “对象关系映射”(如果只把它当成 Database A...

13430

扫码关注云+社区

领取腾讯云代金券