计算机专业本科毕业设计实践环节教学研究

2014-07-25 22:46戴群
大学教育 2014年11期
关键词:软件学科设计

戴群

[摘要]随着计算机技术的普及,特别是电信及互联网技术的充分发展,需要高校输出更多的高级信息技术专业人才,特别是有潜力的领军人才。课程设计是完成专业培养目标的一项具有针对性的实践教学环节,是依据具体课程的知识,完成一个较简单的设计问题,以加深对该课程所学理论的理解和应用。对本科生还不要求他们在理论上有突破,重点是运用成熟的理论和技术完成一个软件项目。教师也可以结合自己的科研方向,结合社会主流技术,开发新颖的本科毕业设计课题。

[关键词]计算机科学毕业设计实践环节课题库

[中图分类号]G642.477[文献标识码]A[文章编号]2095-3437(2014)11-0125-03一、引言

随着计算机技术的普及,特别是电信及互联网技术的充分发展,我国信息技术人才的短缺越来越严重。这种短缺是相对的,并不是我们高校培养的信息技术专业学生绝对数量少,而是与产业匹配的高素质信息专业人才偏少。

经过前面十多年高校持续的扩招,我国的在校生规模已很庞大,几乎每个高校均设立了信息科学类专业。然而,近几年互联网崛起的同时,IT人才的短缺现象越来越严重。企业更青睐于国内重点大学生源,但国内一些知名院系培养的大学毕业生,还不能满足市场的需要。以一个信息类重点大学计算机学院为例,很多同学就能手握不同单位的多份录用通知。由于就业情况较好,计算机学科也是学校内应届生读硕士、博士、研究生比例较低的院系。即便这些重点学校的应届毕业生,他们进入公司之后往往还要经历很长时间的培训、学习,过程中会面临许多问题,诸如复杂软件的开发、编程规范、各种语言编写需要的操作系统和数据库环境及性能等。培养一个综合能力强的软件系统开发人才需要较长的周期。软件行业普遍存在的问题体现在,高端构架设计人员少,行业领军人物更是奇缺,与美国软件行业整体差距很大。美国的校园里就已涌现出了不少创新能力强的创业型人才,如Face Book创始人扎希伯格就是在哈佛的校园实践活动中孕育了日后创业的大型交友网站项目。在软件生产领域,我们与印度的差距也较大。印度软件职业教育开展得较好,他们很多信息类本科毕业生就具备一定的软件开发能力,设计、开发过程规范;很多信息专业本科毕业生比我们部分硕士生软件开发能力还强。可见,我们计算机专业教育的理论与实践脱节问题很明显。

按国家学位委员会最新规划,我国信息科学一级学科包括控制科学与工程、电子科学与技术、信息与通信工程、计算机科学与技术、软件工程 。[1]其中控制科学与工程是研究控制的理论、方法、技术及其工程应用的学科;电子科学与技术是研究微电子技术和光电子技术的基础学科;信息与通信工程涉及无线通信、多媒体和图像处理、电磁场与微波、成像以及卫星移动通信等众多高技术领域。而计算机科学与技术、软件工程是教育部2011年刚从计算机科学与技术一级学科进一步细分出来的两个一级学科。电子科学与技术是最为基础的学科,重点是微电子电路与微波技术,控制科学重在理论及方法,信息与通信工程是宽口径理论与实际结合的科学;另外,仪器科学一级学科也成为跨计算机、微电子、通信、自动化的综合学科。计算机科学几乎成为众多学科所共同运用的通用学科,国家基金委信息学部信息二处(计算机应用)的课题中,很大比例的申请者是跨学科研究者,而信息三处(自动化)的课题中,同样有很大比例的申请者来自计算机科学系。

国家的信息学科的部署是经过三十多年实践逐步调整和完善形成的,每个学科均制订了完备的教学大纲。为什么我们培养的工科毕业生能直接为社会所用的偏少?为什么我们培养的高端人才少之又少? 与此同时,美国一些大学本科生在读期间就开始尝试科技创新甚至创业活动。这些现状反映了一个问题:学生的动手实践太少,经验缺乏。虽然学校已经开设了诸如专业课程设计、校外实习等一系列的实践课程,但是,学生的实践水平还不够扎实。笔者所在的学院本科专业包含计算机领域两个一级学科,下面针对计算机专业最重要的实践环节《本科毕业课程设计》谈谈我们的教学方法。

二、明确毕业设计的目标

计算机专业本科生都系统地学习了数据结构、操作系统、计算机组成原理、编译原理、计算机网络、图像处理、人工智能等专业课程,部分课程安排了课程设计,同学们已经初步地接受了实践环节的训练。

课程设计是完成专业培养目标的一项具有针对性的实践教学环节,是依据具体课程的知识,完成一个较简单的设计问题,以加深对该课程所学理论的理解和应用。毕业设计与课程设计不同,是综合性训练,可能需要运用多门课程的知识。毕业设计要求学生在指导教师的指导下,独立地完成一项软件工程项目设计,解决与之相关的各种问题,完成相关需求分析、详细设计、编码开发、测试四个完整的项目流程,并撰写设计报告。我们强调,作为项目,不仅需要能正确地实现需求,需要从软件工艺、软件质量的角度全面控制一个项目的全流程。学生在项目实践中,如果研究出新的思想、新的开发技术,我们会指导学生凝练思想,总结成专业论文,争取在核心科技期刊发表。善于实践、善于思考、善于总结,这是一个软件专家必备的能力,我们在教学中需要培养学生往这几方面努力,提升他们的综合能力。

三、毕业设计课题的制订

在实践中,结合计算机技术发展和社会需要,根据本系学科发展情况和社会热点需求,建立了一批本科毕业设计项目库。以下列出部分我们建立的本科毕业课题库,以供同行参考。

(一)操作系统平台类

UNIX、Linux进程通信模块设计。大部分电信、互联网平台使用UNIX、Linux操作系统,其上的多种服务以进程(线程)形式创建,需要设计通信进程建立及进程之间通信机制。本课题扩展开来,开发了ORACLE,MySQL等不同数据库访问进程,作为公共组件,提供统一接口供其他服务通过进程通信方式调用,简化了这些进程访问数据库的复杂性。SQL、Non-SQL内存数据库的设计,特别是Non-SQL是最近业界的热点话题。学生可基于友好型开源软件建立自己的内存数据库,可以对源码进行改进,扩展其功能。

(二)计算机通信类

在计算机工程领域,使用最广泛的协议仍是TCP/IP协议,现在流行的HTTP/REST,SOAP, SIP等协议都是构架在TCP/IP协议之上的。不论面对多么复杂的TCP/IP应用协议,我们要求学生深度掌握TCP/IP基本模型,并演练基于Socket模型编写C++或者Java程序。该模型可归纳如图1服务器和客户端协同工作。[2]

服务器的几个主要动作如下:

1.创建监听套接字,绑定,监听;

2.创建工作线程;

3.创建一个套接字数组,用来存放当前所有活动的客户端套接字,每accept一个连接就更新一次数组;

4.接受客户端的连接;

5.接收数据的进程处理完毕后返回数据给客户机。

客户端所做的事情相对简单,创建套接字,连接服务器,然后不停地发送和接收数据及数据处理。

任何服务的C/S结构的软件构架都基于该模型或其优化后的异步模型。基于这个模型,我们创建了类似腾讯QQ软件的网络信使工具、网络数据采集和电信计费服务器与客户机。各类协议转换网关基本也是基于TCP/IP实现的。学生对这类课题普遍存在着浓厚的兴趣,每年都有不少学生踊跃选申报此类题目。

(三)互联网数据挖掘类

互联网中大数据是个非常热的话题。除了规模以几何级数增长的数据的存储问题外,本质上,大数据需要数据挖掘工具对海量数据进行分析处理,获取其中有用的信息。我们用网页聚类算法分析与实现对网络信息进行分析挖掘。对网络信息的聚类处理,需要把网页按照文本、结构及超链接等进行聚类。本设计要求学生熟悉并改进已有的网页聚类方法,并借助于Nutch等开源工具编码实现:给定关键词和数据集,计算出与关键词相关的类别;给定几个关键词,把数据集中的数据聚到若干个相关类中。此外,可基于支持向量机等对网页文本进行分类。

(四)网站搜索类

将在理解搜索引擎工作原理和爬虫的工作机制的基础上,研究基于Hadoop的网页信息提取方法,并进而实现精确搜索功能。

(五) 神经网络技术的应用类

采用业界比较成熟的神经网络算法用于实际系统应用,例如:前馈BP、自组织SOM等神经网络进行金融数据挖掘的应用系统设计与实现。最典型的是通过对金融证券市场关键指标分析,并获取这些指标的海量数据,利用BP神经网络建模,预测关键指标发展趋势,依此形成一个实用预测系统。

(六) 智能算法类应用类

智能和模糊构成了软计算(Soft Computing)的主要框架。基于遗传算法的分类规则知识系统设计,针对要分类对象进行编码,利用支持度、置信度构造函数,并设计复制、交叉、变异算子,依此形成基于遗传算法的分类规则发现算法,形成基于遗传算法的分类规则发现系统。

(七)模式识别在图像处理中的应用类

聚类是模式识别等研究方向的重要研究内容之一,在识别数据的内在结构方面具有极其重要的作用。将其用于图像分割、数据压缩、信息检索、序列数据分析等,可开发出实用的系统。

(八) 服务计算类

WEB服务是面向服务结构的实现,并且服务组合已经成为了服务计算领域的热点研究问题之一。为了构建实用的应用,开发方通常会组合一些已有的简单服务来解决复杂的用户问题。随着可获得的类似或相同功能的服务越来越多,服务组合问题变成了根据非功能属性的服务质量来选择合适的组件服务。但在复杂的网络环境中,服务组合可能变得十分复杂,所以,WEB服务需要事务机制来保证输出的一致性及工作流程执行的正确性和可靠性。因此,需要设计和实现基于事务的组合服务选择算法,以满足组合服务的正确性,并实现构建功能强大的应用。

(九)数据仓库建模应用类

主要研究和实现数据仓库多维建模过程中涉及的各个环境和技术,包括数据抽取、转换、加载、星型模型和雪花模型设计,主题、粒度、维度、事实表和量级等的确定,以及数据仓库模型优化等内容,在此基础上构建报表系统,为决策人员提供数据。

(十)视频信号处理类

典型的项目是车流中车辆识别与分类,构建一个视频采集与信号处理、车流量统计的识别系统;通过摄像机进行视频信号采集,进行信号处理,提取帧图像,对图像进行边缘特征提取,勾勒车辆的轮廓特征和典型特征;建立车辆的轮廓特征和典型特征的样本库;利用统计规律进行数量统计。

(十一)传统的管理信息系统类

例如选课系统、企业人事信息系统、互联网问卷和评分系统、投票系统。这些系统可以基于C/S结构实现后台管理,通过互联网开放的可以用B/S模式开发。

(十二)计算机信息安全类

包括计算机攻击防护、安全日志分析、计算机传输安全层构架、密码算法及证书等。

以上很多课题重在培养学生实践能力,对本科生还不要求他们在理论上有突破,重点是运用成熟的理论和技术实现一个软件项目。教师也可以结合自己的科研方向,结合社会主流技术,开发新颖的本科毕业设计课题。

四、结语

经过我们几年的努力,我们培养的本科生均在三、四个月的毕业实践中基本掌握了独立开发一种软件系统的技术,充满信心地走上了工作或者进一步深造的道路。我们将继续拓展研究本科生实践教学的其他方向,例如:培养二、三年级本科生参加科技开发及微创业实践;解决本科生实践活动和考研、就业时间冲突的矛盾;本科实践活动如何与继续深造相结合等问题。我们将不懈地努力,以期提高本科实践教学水平,为社会培养更多基本功扎实、勇于创新的新型人才。

[参考文献]

[1]国务院学位委员会.学位授予和人才培养学科目录[EB/OL].http://yz.chsi.com.cn/kyzx/other/201104/20110411/1851

03201.html..

[2]汪晓平,钟军.VisualC++网络通信协议分析与应用实现[M].北京:人民邮电出版社,2003.

[责任编辑:钟岚]

猜你喜欢
软件学科设计
【学科新书导览】
禅宗软件
土木工程学科简介
软件对对碰
瞒天过海——仿生设计萌到家
设计秀
“超学科”来啦
有种设计叫而专
论新形势下统一战线学学科在统战工作实践中的创新
谈软件的破解与保护