张丽 朱青 张静
摘要:本文对数字媒体技术专业中计算机知识相关的基础课程内容进行了调整优化,并从广度、难度以及内在逻辑的合理性方面设计了课程实验,实现了在有限的课时内促进学生理解关键概念、提高动手能力,学生兴趣,培养自学能力的目标。
关键词:数字媒体技术专业;实验设计;计算机基础知识;内在逻辑
中图分类号:G642.4 文献标识码:A 论文编号:1674-2117(2022)08-0105-03
数字媒体技术专业是数字媒体艺术与计算机技术课程融合发展的专业,计算机技术是该学科的基础,所以数字媒体技术专业需要设置相应的计算机理论和实践课程。但该专业的计算机基础知识需求不同于计算机科学专业,照搬计算机科学专业的课程内容并不可行。因而,笔者对该专业计算机基础知识的需求进行了梳理,对计算机科学专业相关基础课程内容进行了调整优化,最终形成了一门名为“计算机系统平台”的课程。该课程内容涵盖计算机组成、操作系统原理以及计算机网络基础相关知识,其中,操作系统原理和计算机网络基础是课程的重点核心内容。为了让学生能更好地理解和掌握课程内容,笔者设置了实验环节,帮助学生从感性上认识关键概念,同时锻炼学生的实践能力,为后续其他专业课程奠定必要的基础。
由于该课程内容涉及面比较广,跨度比较大,实验内容的设计难度较大,既要在有限的课时内完成,还要配合理论知识,促进概念的理解和掌握,提高实践能力,且内容之间还要衔接有序,有合理的内在逻辑,能有机地结合在一起形成一门课程的实验体系。在这种情况下,通过对课程目标、课程内容以及专业需求的分析,笔者从以下几个方面着手,设计出了一套完整的实验内容,力图在有限的课时内达到促进学生理解关键概念、提高动手能力,引导学生兴趣,为进一步自学打好基础的目标。
● 针对专业需求,进行广度的内容覆盖
在计算机基础方面,数字媒体技术专业的学生首先需要掌握操作系统的使用,进一步了解操作系统的功能,理解操作系统的行为,这样才能更好地在操作系统平台上使用数字媒体相关软件,如视频剪辑与合成,以及能够进行程序设计,如游戏程序的开发。因此,笔者把第一个实验设置为Shell编程,通过该实验让学生熟悉Linux操作系统接口,熟练使用Linux操作系统,同时希望学生对脱机接口概念有感性的认识。
对于数字媒体技术专业来说,程序设计很大一部分是通过脚本来实现,因此掌握脚本编程,对数字媒体技术专业学生很重要。Shell编程实验从语法上让学生学会脚本的写法,练习核心的循环结构和分支结构,同时让学生理解脚本程序的运行过程。
其中,进程是操作系统最核心的一个概念。多进程/多线程编程对数字媒体的应用是至关重要的基础。理论上的进程概念和进程调度,对学生来说过于抽象,而且进程的动态性使学生更加难以掌握,常与静态的程序混淆。因此,笔者设置了创建多进程程序的实验内容,完成该实验的學生认为,“本次试验让我对进程调度的方法、原理、效果有了更深的认识。本次试验既是对课堂学习知识的检验,也是对学生自主学习能力的一个考验”。
另外,数字媒体技术专业的学生需要对计算机网络有基本的了解,因为将来可能要设计网络应用程序,如在线游戏、智能APP等。因此,学生首先要掌握网络应用程序结构的概念,如C/S结构、B/S结构、P2P结构。应用程序的通信是在传输层的支持下实现的,要很好地使用传输层的接口,学生需要对传输层有基本了解和行为理解,需要清楚传输层给应用层提供的基本支持,理解其行为,进而掌握网络接口的功能和使用方法。而这需要学生先了解网络分层以及网络协议的基本概念。为此,笔者在课程内容中设计了网络分层的动机及网络参考模型的介绍,并重点介绍了TCP协议的实现机制,配合学生理解概念,以及为设计网络应用程序奠定基础。此外,笔者还设计了实现简化版的文件服务器和客户端的实验,以期通过该实验让学生首先了解传输层接口的基本形式,引入socket的概念,让学生了解网络通信的实现手段,同时实践C/S模式的网络应用程序结构。
● 针对学生基础,设计适度的实验难度
由于是数字媒体技术专业基础类课程的实验,因此实验内容的深度和难度都要与之匹配,不能照搬计算机专业的实验内容。
笔者的实验设置从最简单的Shell编程开始,通过一个简单的脚本实验让学生迅速进入计算机系统知识体系。学生在完成实验的过程中,不断试错,不断探索,很有成就感。通过实验,学生掌握了Shell编程的方式,在练习中对获取进程信息和筛选进程也有了一定的了解,并进一步地认识了之前学习到的关于Shell编程、命令、运算、条件、循环语句的内容。
创建多进程程序实验,从内容上看非常简单,只是用系统调用创建特定数目的进程。学生对此会感觉比较容易完成,不会产生对进程概念的为难情绪。但实际上该实验的完成并不像表面上看起来那样能够一蹴而就。教师可设置特别设计的创建进程的数量要求,让学生无法在一开始就达到实验目的,必须通过不断修正程序才能达到实验目的。
例如,教师可通过对循环创建进程过程的控制,让学生理解子进程与父进程的关系,理解动态产生出来的子进程是什么,理解子进程产生出来之后处于什么状态以及进程的程序执行到的位置。然后要求学生创建四个子进程,在学生尝试的过程中,使其理解“子进程复制全部父进程代码、子进程的运行是从刚刚创建的语句返回”的含义。
学生通过多个进程的运行顺序,能体会操作系统的进程调度和含义,并从将单进程运行模式的思维转换多进程的关系上,体会进程是不同的任务调度实体,进程调度是操作系统的任务,而不是用户程序所能够控制的。例如,学生按照单进程程序顺序执行的思想会发现,新创建的子进程并不一定按照创建的顺序执行。这时他们首先想到的是哪里出现了问题,通过进一步思考,学生可以理解各个子进程和父进程是同等地位,进程的运行是由操作系统的调度程序决定的。当学生发现这个现象并想清楚时,教师要进一步引导学生思考,如果用户希望控制多个子进程的运行顺序,应该怎么实现呢?在学生的认知里,这些进程是在同一个程序里,可以通过控制语句来实现这个目标,但尝试却发现结果并不在他们的控制中。教师可通过该实验让学生理解,进程的运行顺序是由操作系统调度程序实现的,是不被用户左右的,同时让学生明白,虽然子进程是父进程创建的,但它并不是原来进程的一部分,而是一个独立的竞争CPU的实体。另外,在实验过程中,教师要引导学生思考程序员想控制进程的运行顺序应该怎样做,让学生明白这需要借助操作系统提供的进程同步手段,从而让学生加深对互斥与同步相关的理论内容的理解。
网络应用程序设计是一个比较复杂的过程,学生需要在其后续专业课程的学习中不断完善和提高该设计能力。因此,笔者设置了一个简单的文件服务器设计的实验作为基础。该文件服务器的实现具有完整的C/S架构,需要实践主要的网络编程接口,是网络应用程序的基础。通过该实验,学生能够体会完整的网络应用程序架构以及网络应用程序的设计算法,但实验总体逻辑和服务功能比较简单,与学生目前的基础和认知相匹配。
● 针对广度内容,进行合理的内在逻辑设计
笔者把第一个实验设置成Shell编程,其后的进程程序创建实验则是一个C语言程序设计。这样设计遵循了循序渐进的原則,学生通过Shell编程熟悉操作系统,在此基础上进一步熟悉和使用程序开发环境和工具。Shell编程实验是进程创建实验的基础。这两个实验可以让学生理解脚本程序与编译后二进制程序运行的区别。
简化版文件服务器和客户端实验要求学生通过并发来解决服务器可扩展性问题。服务进程的创建是建立在前面进程创建实验基础上的。文件服务器实验要求学生画出服务器的多进程执行流程图,并通过流程图进一步确定学生理解进程的独立性以及进程调度的含义,巩固进程创建实验的知识点。
服务器的设计涉及运用信号机制对僵尸子进程的处理,这从实践角度让学生对进程间通信机制有了更深入的理解。同时,在实验设计和调试过程中,让学生体会网络应用程序和单机应用程序设计和调试上的区别,体会服务器和客户端程序的不同设计考虑。在服务器和客户端数据交互过程中,教师要重点向学生强调基于流的概念,并通过具体语句的实现让学生理解可靠服务的实现手段,以及基于连接的概念。
● 结语
通过这一系列的设计考虑,笔者借助看似简单的、有限的实验内容对重点课程理论内容进行了有效支撑,同时锻炼了学生的实践能力,并通过实验过程提高了学生的自学能力。
参考文献:
[1]贾浩梅.数字媒体技术专业课程体系构建[J].中阿科技论坛:中英文,2021(02):143-145.
[2]李强,罗添,王晶晶,等.新工科背景下数字媒体专业教学改革探索与实践[J].包装工程,2020(S1):140-143.
[3]杨哲.数字媒体技术专业课程体系构建的探讨[J].现代教育技术,2011(08):88-91.
[4]廖洁.数字媒体技术专业课程设置探索[J].数字通信世界,2021(01):228-229.
[5]曹琨.数字媒体技术专业课程与实践教学模式探究[J].电脑知识与技术,2019(29):114-115.