从ACM/ICPC看计算机算法设计教学改革
- 格式:pdf
- 大小:243.52 KB
- 文档页数:3
第29卷第8期(下) 2013年8月 赤峰学院学报(自然科学版) Journal of Chifeng University(Natural Science Edition) Vo1.29No.8 Aug.2013
从ACM/ICPC看计算机算法设计教学改革
李俊芳
(集宁师范学院计算机系,内蒙古乌兰察布012000)
摘要:近些年,随着计算机网络的高速发展,在人们的工作、生活中占有着日益重要的作用,而随着 人们对计算机网络的使用与依赖,很多工作发生了革命性的改变.彳艮多IT技术逐渐进入了我们的生活,改 变了我们工作的方式,并且有效的提高了我们日常的工作效率.现代企业对计算机的普及极高,员工的日 常工作几乎都离不开计算机.因为对计算机的使用,企业的工作效率和准确率得到大幅度的提升.不仅如 此,计算机网络的普及可以逐渐实现无纸化办公,符合了我国提出的低碳环保的理念,因此,计算机网络的 运用是企业发展及未来规划的方向.我们知道,计算机软件是通过程序编写出来的,本文通过ACM/ICPC 方面来探讨计算机的算法设计及改革. 关键词:办公软件;ACM/ICPC;计算机算法;设计教学 中图分类号:G642 文献标识码:A 文章编号:1673—260X(2013)08—0233—03
互联网时代,对信息的关注与把握日益渗透在 人们的日常生活中,人们越来越发现自己无法脱离
这种信息化的生活方式,人们的生活依赖于信息的
收集、处理以及传送. 很多时候,我们需要将自己所接收的信息进一
步处理、分析,获取信息并对它进行加工处理,使之
成为有用信息并发布出去的过程,称为信息处理.
信息处理的过程主要包括信息的获取、储存、加工、
发布和表示.人脑其实就相当一台计算机通过记忆
力来储存信息,通过四维来管理和处理信息,但是
毕竟人脑的功能是有限的,处理数据能力也赶不上 计算机,所以人们开始希望能够通过计算机来管理 信息,通过一个管理软件来帮助人们来完成工作. 另外,计算机软件的在近几年得到了非常大的
发展,特别是在经济全球化的出现之后,自从新世 纪以来,信息技术在企业中得到了越来越广泛的应
用,无论是在企业的经营与生产中,还是在企业内 部管理以及对产品的设计与制造,企业信息化转变
极大地提高了企业的竞争力,很多企业也逐渐认识 到计算机在企业中的作用,并且对企业的帮助等
等,很多企业也逐渐增加了it部,以便对企业里的
计算机软件和硬件来进行支撑工作,企业也注意到 信息化的发展和处理信息的重要性,目前,很多企 业已经认同了通过应用软件来实现对企业的管理. 我们知道,企业信息化主要包含了广泛利用信息技
术,让企业在生产与管理等方面,用以通过这些方
法来实现信息化,这是一个十分广泛的概念.
企业的信息化不仅运用于内部,企业与企业之
间的合作也离不开信息技术.例如企业与其他合作
对象互相交流数据,企业与客户之间的业务往来, 这些均是企业信息化发展的一部分.以上我们通过
办公软件来揭示计算机软件对人们生活和工作的 影响,而软件是通过算法研究开发的,这么说来计
算机是跟这时代一同进步的,而计算机算法设计也
不断推陈出新,要想计算机的应用得到充分发展, 计算计算法的研究和教学是非常重要的.
1 从ACM/ICPG的历史意义和发展历程 1.1什么是ACM/ICPC 要想研究从ACM/ICPC看计算机算法设计教
学改革,首先什么是ACM/ICPC?下面我们首先了 解ACM.ACM国际大学生程序设计竞赛(英文全 称:ACM International Collegiate Programming
Contest(ACM—ICPC或ICPC)主办方为美国计算机 协会(AcM),是国际大学生程序设计竞赛的标志,
这是一项旨在展示大学生团队精神、创新能力以及
在压力下编写程序、分析和解决问题能力的年度竞 赛.
1.2 ACM/
ICPC的发展历程 ACM国际大学生程序设计竞赛由IBM公司赞 助,已经经过了超过3O年的发展,目前已经发展成
为最具影响力的大学生计算机竞赛.ACM国际大学 生程序设计竞赛首届举行在1970年,在美国德克
萨斯大学,首届赛事的主办方是the Alpha Chapter
of the UPE Computer Science Honor Society.这种 方式是一种全新的培养计算机编程人才的方式,这
种比赛不仅刺激学生们对新技术的求知欲望和学 习欲望,还能培养对于一个软件的更深的理解,不
仅仅是停留在只要程序运行出所要达到的结果就 行了,而是对于程序而言仅仅执行出来结果只是最
浅层次的要求,而最有造诣的是如何设计这样的程 序,要时间复杂度和空间复杂度做到最小,除了可
以锻炼上述一些技能以外,我认为最重要的是锻炼
了学生们的团队精神和团队的执行力,如何领导一 个团队,如何做一个称职的leader,如何做一好一 个开发者,总之要想完成比赛,必须分工明确,齐心
协力才能够达成.因此,美国以及加拿大各大学很 快便开始积极响应赛事.尤其是在1977年,首次总
决赛在ACM计算机科学会议期间举办,这也促使
了竞赛演变发展成为多国参与的国际性比赛,并且
一年便有一届举办.相比最初的几届,参赛队伍不
再只有美国及加拿大的大学,竞赛逐渐发展成为一 项世界范围内的竞赛.2002年美国夏威夷的第26
届、2005年上海的第29届和2010在哈尔滨的第 34届的全球总决赛上,来自中国大陆的上海交通
大学代表队则在三夺冠军,浙江大学参赛队在美国 当地时间2011年5月30下午2时结束的第35届
ACM国际大学生程序设计竞赛全球总决赛荣获全
球总冠军,成为除上海交通大学之外唯一获得 ACM国际大学生程序设计竞赛全球总决赛冠军的
亚洲高校,目前,这也是来自亚洲的参赛大学取得
的最佳成绩.如今,最初的北美大学一枝独秀的局
势不再,已经演变成亚欧对抗局面的竞争格局.
1.3 ACM/ICPC的算法比赛流程 ACM/ICPC比赛方式是以团队的型式,以学校
为单位,每个学校有一个队组成,一个队有三名学
生,比赛要求是非常严格的,这个队的比赛队员必 须是这个学校的,而且还是在校就读学生,不能毕 业的或者其他学校的学生,编写程序是这样的,试
题的规则是例如:C、D个小组如果都必须在规定时
间内完成两道程序题,而且要运行处结果,在编写 程序过程中既要保证程序的编写质量又要保证程
序的编写速度,如果D队在C队没有完成之前把 两道题都完成的话,那么D队获胜!反之c队获得 胜利.
2计算机算法设计教学改革 2.1计算机算法的重要性 要想研究算法,就得知道什么是算法?算法可
以简单理解成解决问题的方法.在计算机科学中, 算法是很重要的概念.它指明了问题的处理、求解
过程,是对给定问题解决方案的准确而完整的描 述.其实,我们做任何事情都有相应的算法.例如,电
视机的操作说明,就是使用电视机的算法;航模的 安装步骤示意图,就是制作航模的算法.把算法交
给计算机执行是一件很复杂的事情,其中最大的障
碍就是人类自己的交流不畅和人机之间的语言不 通.为了更好地合作,人们需要把算法正确、清晰、
简洁地表达出来.自然语言(汉语、英语等)、流程图、 程序设计语言等都可以用来描述算法.简单讲述把 算法交给计算机执行的一般步骤.人们通常用自然
语言、流程图、程序设计语言来描述算法.
2.2根据ACM/ICPC要求来了解语言 ACM/ICPC比赛主要是用C、c++、Pascal或Ja—
va这几种语言参赛,首先是e语言,一个程序开发
者必须要学习C语言,这是为什么呢?因为C语言
是所有语言的基础,另外c语言是一种轻量级的,
很有表达力的语法,能很好的展现冯・诺曼机器的
能力.冯・诺曼机器架构就是你每天都用的计算机 的架构的标准:一个CPU、内存、硬盘、一条总线.多
核计算机并没有带来本质上的变化.冯?诺曼机是
一个很方便,很便宜,上世纪五十年代的实现图灵
机的技术,图灵机是执行计算的最知名的抽象模
型.然后是C++,跟C比,在设计大型系统上面有著 很大优势,OO的思想便于建模,很方便设计.执行效
率也不见得低c++的优势在哪里跟Java比,效率 要高很多(众所周知,java程序很费资源)c++的优
势在学好C++,以后去任何公司都是可以的,不过
现在中国使用C还是最多的c++的优势在哪里做
外包的话,都用到数据库应用程序开发f各种管理 系统)使用c++或者java e++的优势在哪里通信
(qq,迅雷,华为,中信),都是c++,这个领域是c++ 的强项c++的优势在哪里手机,JAVA随著
GOOGLE的平台,将有很大前途,但是NOKI
A使用 的平台,还是C/C++用于开发c++的优势在哪里 汽车、冰箱……都是嵌人式系统,使用c和汇编居
多c++的优势在哪里服务器端后台编程,还是C++ 的天下.Pascal语言还是一种自编译的语言,这就使 它的可靠性大大提高了.在Pascal的各个版本中,
尤以Turbo Pascal的功能最为强大.Pascal具有简
洁的语法,结构化的程序结构.它是结构化编程语
言,于70年代在ALGOL基础上研制出来的.它具
有丰富的数据类型并提供了数据类型定义设施,其
控制结构体现了结构程序设计原则.它最初是为系
统地教授程序设计而设计的,特点是简明化和结构
化,适合教学科学计算与系统软件的研制.如今,在
许多学校的计算机语言课上,学的都是Pascal语 言,用的都是Turbo Pasca1.至今,Pascal还是国际信
息学奥林匹克竞赛中最受欢迎的编程语言之一. Pascal是最早出现的结构化编程语言,具有丰富的
数据类型和简洁灵活的操作语句,适于描述数值和 非数值的问题.另外在数学领域,pascal异常很强
大.java不用多说是非常强大的语言,iava不同于前 三种语言,java语言是面向对象语言,那么什么是
面向对象语言呢?通俗的说:“如果有一辆汽车,你
不需要学会制造汽车,也就是说你不用懂得汽车的 构造,只要会驾驶会使用它,就可以开着它上路,来
为你服务”.也就是说程序开发者如果想实现一个 功能,程序开发者只要是调用公共类里的方法,不
需要知道这些方法是怎么编写的,只要使用它即 可.所以随着时代的发展,编程语言也逐渐变得容
易,程序的复用性越来越高. 2.3计算机算法设计教学改革
随着计算机热,各大院校都开始开设软件工程
专业,为了是让更多的栋梁之才学习计算机编程,
从事软件开发行业,软降工程是计算机科学与技术
系的一门专业课程,通过本课程的学习使学生掌握
软件工程的基本概念、基本原理、实用的开发方法
和技术;了解软件工程各领域的发展动向;如何用 工程化的方法开发软件项目,以及在开发过程中应 遵循的流程、准则、标准和规范.在领域培养高级软
件开发人员和系统分析员打下坚实的基础.通过软
件工程课程的教学,应使学生系统掌握软件工程的
基本概念,软件设计中的过程抽象,软件设计中的 控制结构,软件设计中的数据类型,软件设计过程, 软件开发和维护模型,抽象和信息隐藏,结构化设
计和过程设计,软件设计的实现策略和语言,面向