APP下载

新工科背景下“Python语言基础”教学改革实践*

2022-11-15高望

科技与创新 2022年2期
关键词:工科程序设计教学方式

高望

(江汉大学人工智能学院,湖北 武汉 430056)

2021年中国政府工作报告明确指出,要借助创新促进经济全方面高质量发展,并推出了“强基计划”等一系列教育改革措施。高等教育的各个方面都有所涉及,这对高校程序设计基础教学也提出了更高的要求[1]。为了在新一轮的产业革命和科技变革中取得突破,支撑《中国制造2025》和《新一代人工智能发展规划》等制造强国战略,并推进产学研用、校企协同,建立创新型人才培养机制,加快培养引领创新、适应产业发展的高素质人才,“新工科”工程教育改革范式的推出恰逢其时。

“新工科”教育理念提出不久后,教育部正式推出新工科项目建设指南,陆续形成了《“新工科”建设复旦共识》等新工科建设方案。在“新工科”背景下,江汉大学开设了“Python语言基础”课程,旨在培养的学生计算思维和程序设计能力。作为大数据分析和人工智能的主流编程语言,Python的使用非常广泛[2-3]。当前,中国高等院校理工科专业都为学生开设了一门程序设计基础性课程,以C语言为主,少量高校使用Java或Visual Basic语言教学。在通识教育中开设的程序设计课程,对于基础不同、专业不同的学生往往使用相同的教学模式和教学方法。这样的学习方式容易使学生缺乏学习动机,学习劲头不足,难以体会如何利用程序设计思想解决实际问题。

“新工科”背景下的工科教育要求学生具备工程实践能力,能够利用计算机程序解决复杂的专业问题。这就需要程序设计基础课程的教学内容使学生具备相应能力,能够支撑复杂问题的分析和求解。遗憾的是,当前程序设计基础课程的教学方式难以培养这种工程实践能力,在教学目标中也未能得到充分体现。这种综合能力培养的不足也许会造成对工科专业是否有必要建设程序设计类课程群的困惑。

1 新工科建设对程序设计课程的要求

中国工科在校生人数约为700万,已经建设完成了全球最大规模的工科教育框架。但需要指出的是,中国工科类人才培养目标不明确,对实验教学和工程教育、工业生产和技能培训、通识教育与专业教育之间区别和联系的认识还很局限,教学内容与企业实际需要结合不紧密,工科类学生普遍难以满足复合型、综合型人才的能力要求。与传统工科不同,新工科的教育理念致力于以信息化推动工业化,培养具备较强实践创新能力、工程应用能力和复杂问题分析能力的“新工科”人才。这类人才不仅应在自己的专业领域成为专家,还要具有各种学科交叉的跨领域能力。

以人机融合为标志,人工智能即将进入3.0新兴时代,智能制造是未来人工智能重要的应用场景之一。多智能体、大数据驱动知识学习、云计算、人机协同增强智能、AI芯片等新知识不断更新,传统的工科培养方式已难以应对新一轮科技变革的挑战。因此,高校工科教育需要对原有体系进行改革,创新培养模式,调整教学内容。在这个升级换代的过程中,程序设计类课程可以满足大部分新工科工程专业的信息技术需求,当然这需要建设多位一体的、能够支撑新工科教育理念的程序设计教学模式。

2 “Python语言基础”教学改革探索

根据学生专业对信息技术的需要,“新工科”要求学生能够分析和解决复杂的工程问题,如学科交叉问题、综合性问题等。为支撑这一需求,需要改变传统教学思路,改革教学模式。

2.1 比较异同快速上手

很多工科专业在开设“Python语言基础”课程之前已经学习过C语言或Java语言。在这种情况下,教师再细致逐个讲解Python的语法基础知识点,可能令课堂教学非常枯燥。然而,Python语言的特点就是简单易学,对于有一定编程基础的学生,传统的教学方式先讲解理论知识,再上机实验验证的效果不尽如人意。因此,建议教师将工程项目实践和教学知识点相结合。

具体来说,为了让学生快速上手,教师在指导学生掌握Python开发环境配置的基本过程后,便可以简要介绍Python与Java/C等语言在运算符、表达式、输入输出等基础知识的异同,随后重点培养学生的工程实践能力、创新应用能力和计算思维。

2.2 基于工程实践的问题探究式教学方式

“新工科”的教学理念要求利用信息化技术解决专业领域问题,这就需要培育不同专业学生的计算思维习惯。对于有一定基础的学生,教师可以从简单的工程实际应用项目开始,然后进一步提出新的应用需求,引导学生用学习到理论知识解决新的问题。如此一来,不仅可以让学生熟练掌握所学知识,又能培养他们的计算思维。此外,在工程项目实践过程中,应该要求学生在编写程序之前先绘制程序流程图,从而锻炼学生能够去分析并解决复杂工程问题。对此举例如下。

应用1:设计一个简单的游戏,首先设置一个正整数,然后用户输入一个数,如果和该数一致则输出“猜对了”,否则输出“猜错了”并提示用户哪个数更大。由于学生已有一定基础,项目要求也比较简单直观,学生可以比较轻松地实现项目要求的各项功能,从而熟练掌握Python语言中顺序、分支和条件3种基本程序结构,深入了解如何使用Python语言中的内置函数,并进一步探索如何使用Python语言的实现折半查找法。

应用2:应用1中设置的正整数是固定的,在程序运行后便不会发生变化。每次用户重新进行游戏时,要猜的数字和上一次游戏的一样。这会导致用户产生倦怠感,对游戏失去兴趣,请设计上述问题的解决方案。

在这个应用实践中,可以引导学生通过random.randint()函数随机生成一个正整数的方法来解决每次游戏要猜的数一样的问题。同时,还可引导学生自行查找Python语言在数据分析、科学计算等众多领域常用类库的使用方法。

应用3:用户在应用2中玩完一次游戏后,必须重新运行程序,才能开始一下局游戏。如何实现用户可以连续游戏。

在这个应用实践中,可以引导学生对应用2中的程序结构进行修改,增加开始游戏、暂停游戏、退出游戏等操作方式,并将游戏主体部分和这些操作方式封装成函数,使程序更加简洁,易于理解。学生通过这个应用可以掌握如何在Python语言中使用函数,理解函数式编程和过程式编码之间的区别和联系,了解计算思维导向的编程方式。

应用4:应用3中所使用的函数比较多,如何进一步优化?

在这个应用实践中,可以引导学生将应用3中定义的函数以模块的方式存储并导入,使程序的结构更加清晰,便于管理,并实现了代码的重复利用。学生通过这个应用可以掌握如何使用Python语言的模块,理解程序的可重用性。

应用5:虽然各个功能函数已经存放在模块文件之间,可以导入使用,如何进一步优化?

在这个应用实践中,可以引导学生利用面向对象的程序设计思想,将游戏数据和对数据操作进一步封装成类。学生通过这个应用可以加深对面向对象程序设计的理解,掌握Python语言中类的定义和使用。

应用6:玩家在命令行终端中玩游戏的用户体验不佳,如何修改为当前更为流行的图形化界面。

在这个应用实践中,可以引导学生了解Python中tkinter、PyQt、PySlide等图形化界面工具集,掌握图形化界面开发的基本流程、组件状态的控制方法和事件驱动编程机制,从而对应用5的代码进行重构,实现游戏的图形化界面。

通过基于工程实践的问题探究式教学方式,在工程项目应用需求演化的过程中,培养学生利用计算思维分析问题并解决问题的能力。将Python语言的核心知识点融入到各个项目应用中,使学生更容易理解面向对象和面向过程编程思想的区别,提高学生的学习热情,激发学生的积极性等。

2.3 基于项目驱动的实践能力培养

由于“新工科”要求学生具备解决复杂工程问题的实践能力,因此在“Python语言基础”教学改革中,可以采用项目驱动式的实验方式。在实验教学规划中,通过一个特定领域(例如学生成绩数据、图书馆的图书信息、豆瓣电影信息、电商网站的评论数据等)的数据分析项目,提升学生的工程实践能力。完成这种类型的项目,并不需要使用神经网络这类复杂的机器学习算法,但又能够将计算机相关基础课程所学习的知识(例如程序设计、数据库、数据结构等)通过Python语言应用到人工智能、数据挖掘、信息检索等领域。在项目实践的初期,教师应该指导学生自主学习和查阅资料,深入了解使用Python进行数据分析的原理、方法和步骤。同时,教师可以协助学生将完整的数据分析项目分解成多个子功能模块,例如数据采集与爬虫开发、数据预处理、数据可视化、GUI界面等。

在数据采集阶段,需要利用爬虫程序发送HTTP请求获取网页HTML源文件,再利用正则表达式等技术提取网页中所需要的信息。由于教学项目所涉及的数据量不大,因此不建议学生使用Scrapy、Crawley等流行的Python爬虫框架。此外,这些框架已经将常用的数据采集功能进行了封装,使用时仅需要调用相应接口即可,不利于学生掌握数据采集原理,培养工程实践能力。教师可以指导学生使用request模块,向网页服务器发送HTTP请求,以及利用Chrome浏览器的开发模式采集异步加载网页的数据。此时,教师还应该引导学生了解数据采集中涉及的法律问题。当目标网站设置了反采集文件声明,应该避免爬取该网站的相关数据。如果目标网站提供的是给公众浏览查询的公开信息,那么采集该网站的公开数据是符合法律法规的。

在采集到网页的HTML源文件后,教师需要引导学生分析网页源码,找到所要采集数据的特征。然后,可以使用正则表达式或Xpath等技术从网页源码中抽取相关数据。这个项目模块能够加深学生对正则表达式的理解,掌握使用Xpath查询语言快速从HTML源文件定位网页元素的方法,将所学Python语言的字符串相关知识融合成一个有机整体。

通过以上方式可以在网络中短时间采集到海量数据,这些数据如果通过文件的方式来进行保存,则难以管理和检索。因此,教师可以引导学生学会使用MongoDB和Redis数据库来保存和管理爬虫程序采集的数据,提高学生的自学能力。MongoDB通过键值对的形式保存数据,类似于Python语言中的字典,非常适合爬虫数据存储。作为一个流行的内存数据库,Redis在爬虫程序中可用于缓存需爬取的url列表,从而提高程序的读写能力。在这个项目模块中,将数据库知识和Python语言联合起来,达到借助工程项目驱动学生数据库实践能力的培养。

经过数据分析项目实践后,学生的工程实践能力得到提高,为学生在以后的学习和工作中解决复杂工程问题提供支撑。同时,学生实现的项目软件和文档,也为他们参加“互联网+大学生创新创业”“开放数据创新应用”等各类竞赛提供思路和借鉴。

3 挖掘思政元素实现思政育人

习近平总书记曾在高等院校思想政治理论课教师座谈会上,明确指出要坚持显性教育和隐性教育相统一,挖掘教学方式和课程内容中蕴含的思想政治教育资源,实现全员全程全方位育人[4]。因此,作为专业基础课,“Python语言基础”也需要在教学设计和教学环节中体现出课程思政元素,探索将立德树人和专业课程相结合的教学方式。为了培养学生爱国热情,塑造积极向上的人生观和价值观,可以在教学过程中融合以下案例开展课程思政。

3.1 Python语言基础知识

Python这门语言诞生于20世纪90年代,如今已经成为人工智能的通用语言,被广泛地应用于数据挖掘、机器学习和数据可视化等领域。从诞生之初,“明确”“优雅”和“简单”等理念就贯穿Python的整个设计过程。设计者摒弃有歧义和复杂的语法规则,使用简单明确的编码规范,从而提高了Python程序的可维护性和可读性。联系到生活中,可以引导学生学习Python设计者的专业性,只有较高专业性,才令Python语言在各个领域得到广泛应用。只有努力学习专业知识,同学们才有可能成为相关领域的专业人才,在工作中实现自己的价值。

3.2 Python序列

列表是Python语言中常用的序列结构。如果要在列表中增加一个新元素,可以使用列表对象的insert、extend或append这3种方法。在不同的应用场景下,要根据具体需求有针对性地进行选择。通过分析3种方法的异同,可以引导学生在学习生活工作中要针对问题,有的放矢,找到解决问题的最佳方案。

3.3 异常处理结构

程序运行过程中发生的错误被称为异常。通过对异常和调试的讲解,提升学生的风险防范意识。联系到生活中,引导学生认识到做同一件事也许会造成多种不同的后果,并且有一些还是事先没有预料到的异常后果。这就需要学生们事前多思考,要为这些异常后果也准备好相应的应急预案。

4 结束语

本文针对传统教学方式难以支撑新工科人才培养理念,分析了新工科建设对程序设计类课程教学的要求。以“Python语言基础”这门课程为例,通过基于工程实践的问题探究式教学方式,将知识点融入到工程项目应用中,提高学生的学习欲望。此外,将课程思政元素融入教学设计中,帮助学生树立积极向上的人生观和价值观。通过教学实践表明,本文所提出教学改革方案可以激发学生的兴趣,提升教学效果。

猜你喜欢

工科程序设计教学方式
新工科背景下汽车构造实验课程教学改革与探索
新工科背景下计算机专业创新创业人才培养探究
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
医学专业“Python程序设计”课程教学改革总结与思考
新工科背景下项目推动式教学模式的探索
“真”学习:基于“教学做合一”的教学方式改进
天津大学:成立全球首个新工科教育中心
浅谈新型信息化教学方式的困境及解决策略