论提高计算机专业学生的程序开发能力
依托程序设计竞赛,提高计算机专业学生培养质量共5页word资料

依托程序设计竞赛,提高计算机专业学生培养质量目前,各高等院校积极组织学生参加各种学科竞赛,把各种学科竞赛活动看作是提高学生培养质量的重要措施和手段。
其中,大学生程序设计竞赛是目前在我国高校中影响范围、参与程度和竞赛水平等方面都处于前列的竞赛项目之一。
本文将探讨怎样依托于程序设计竞赛,提高计算机专业学生程序设计的能力,从而提高计算机专业学生培养的质量。
1计算机专业学生程序设计能力的重要性计算机专业作为实践性很强的工科专业,本科学生无论毕业后踏上工作岗位,还是继续进行研究生的学习,程序设计能力的高低始终是衡量一名计算机专业学生能力高低的最重要指标,是影响学生今后发展的一项重要的技能。
程序设计不仅需要掌握一定的基础知识,同时还需要具备严谨的逻辑思维能力,对培养学生的创造性大有好处。
程序设计需要程序设计语言基础、数据结构、算法设计与分析等多门课程的支持,学习过程枯燥、难懂、持续时间长,特别在程序调试阶段,大部分学生没有兴趣和耐心去查找错误。
很多学生都反映程序设计语言难学,程序更难编写,这些学生往往拷贝他人源代码应付检查,非常不利于教学质量的提高。
但是,计算机学科是一门应用学科,利用计算机解决现实存在问题的关键就在于是否能设计出相应的软件产品。
据统计,我国拥有计算机本科专业的高等院校达到500余所,约占全国679所本科院校的75%,在校学生约27万余人,约占理工科在校生总数的14.6%,计算机专业在单个专业的设点数和单个专业的在校生总人数方面都位居全国本科专业之首。
但是,以此形成鲜明对比的是,我国软件设计开发人员缺乏,特别是高级人才严重缺乏。
背后的原因很多,但是,最重要的一点,就是我们的学生程序设计能力不高,本科学生培养质量有问题。
因此,提高学生的程序设计能力,是提高计算机专业学生培养质量的关键一步。
2鼓励学生参加程序设计竞赛,提升学生的程序设计能力要提高学生程序设计的能力,除了学习相关理论课程外,花大量时间去练习是必不可少的。
提升计算机专业学生编程技能的教改实践

提升计算机专业学生编程技能的教改实践摘要:根据人才培养要适应国家和社会发展需要的要求,进行提升计算机专业学生编程技能的教改实践。
通过引入android开发教学,以竞赛为实践平台以及在java三大应用领域引领学生深入学习和实践,取得了较好的效果,可为教学应用型本科院校计算机教学改革提供一定的参考作用。
关键词:教学应用型;本科院校;计算机专业;编程技能;教改实践中图分类号:g642 文献标识码:a 文章编号:1009-3044(2013)14-3349-02应用型人才培养是教学应用型本科院校的根本任务。
计算机专业”一专多能”应用型人才培养体系创新研究与实践,是我系近年来进行的一项教育教学改革研究;目前,已显著地提高了我系计算机科学与技术、网络工程专业学生的培养质量,并获学校第三届优秀教学成果一等奖。
其中,我们根据“一专多能”培养目标要求,通过java系列课程教学的实施,提高了学生的就业能力,并使java 应用方向系列课程教学成为我系的专业特色[1]。
计算机学科内容特点是理论性强、实践性强、发展迅速。
作为教学应用型本科院校计算机专业教学一线的教师,我们在针对计算机程序设计教学所进行的教改研究与实践过程中,按照人才培养要适应国家和社会发展需要,要注重“学思结合、知行统一、因材施教”的要求,主要进行了以下改革,取得了较好的效果。
1 引入android开发教学对于教学应用型本科院校计算机专业教学来说,课程凸现“应用性”设置,将市场现实需要与学生未来发展联系起来,有利于学生成材。
目前,基于android 的移动应用开发已经成为软件开发中新的热点和发展趋势,其前景广阔,但在计算机专业开设相应课程的高校并不多。
其中,部分学校在java se课程中以一个章节的内容介绍了android开发,也有部分高校将android开发作为一门课程来开设。
前者课时不多,通过教学,学生对android开发的技术与方法有了一定的认识和了解,但还缺乏在开发实践中加以应用的训练和能力;后者使学生在android开发的理论学习和实践训练方面得到增强,但将其作为一门课程开设似乎又没有必要,因为像java 数据库开发、java网络编程开发这些内容,作为java se在数据库、网络领域的应用,均是以java se课程中某一章内容的形式出现,并且教学效果也不差。
新工科背景下计算机专业程序设计能力培养的探索

新工科背景下计算机专业程序设计能力培养的探索汇报人:日期:•新工科背景介绍•程序设计能力的重要性•当前计算机专业程序设计能力培养的问题与挑战目录•新工科背景下程序设计能力培养的策略与实践•案例分享与经验总结01新工科背景介绍新工科的定义与特点定义新工科是指相对于传统工科而言,具有战略性、创新性、系统性和开放性的工科。
特点新工科强调学科交叉融合,注重创新实践,关注新技术、新产业和新经济发展,鼓励开放合作。
新工科的发展趋势和影响发展趋势新工科将不断拓展新的研究领域,加强与产业界的合作,推动科技成果转化。
影响新工科的发展将为我国经济社会发展提供强有力的人才和技术支撑,推动产业转型升级和高质量发展。
培养目标新工科要求计算机专业教育以培养具有创新精神和实践能力的复合型人才为目标。
课程设置新工科要求计算机专业课程设置要注重学科交叉融合,强化实践环节,注重培养学生的创新能力和工程实践能力。
教学方法新工科要求计算机专业教学方法要注重启发式、探究式、案例式等多种教学方法的运用,鼓励学生自主学习和合作学习。
新工科对计算机专业教育的要求02程序设计能力的重要性0102程序设计能力的定义与内涵程序设计能力强调逻辑思维、抽象思维以及问题解决能力的综合运用,是计算机专业学生必备的核心能力之一。
程序设计能力是指运用编程语言和相关工具进行算法设计、数据结构组织、系统架构搭建以及解决实际问题的能力。
程序设计能力在计算机专业中的地位程序设计能力是计算机专业学生的基本技能要求,是实现计算机科学研究和应用开发的基础。
程序设计能力的高低直接影响到学生专业素质和职业发展,对于提高学生的综合素质和就业竞争力具有重要意义。
程序设计能力与企业需求的关系随着信息技术的快速发展,企业对计算机专业人才的需求日益增加,尤其对具备优秀程序设计能力的人才更为青睐。
程序设计能力是企业招聘时的重要考核指标,也是衡量计算机专业毕业生职业发展潜力的关键因素。
03当前计算机专业程序设计能力培养的问题与挑战当前课程设置未能及时跟上技术发展,导致学生所学知识与实际应用存在差距。
注重VB教学方法提高程序设计能力

【 关键词】 B 实例 演示 案例 分析 实验驱动 项 目设 计 :V
V B是 五年 高 职计 算 机 专 业 学 生 的 重要 基 础 课 程 之 一 . ~ 替 变 化 实现 的 。 直 观 看 到 具体 分 析 . 生 们 程序 设 计 思 路 清 楚 是 从 学 门集 知 识 和技 能 于一 体 、 逻辑 分 析 和 实 践 操 作都 很 强 的课 程 。 相 了 . 就 理 解 了 什 么 是程 序 设 计 。 也 当 ~ 部 分 学 生对 V 课 的 学 习 还 停 留在 只 动 手 不 动 脑 的 阶 段 . B 实 践 证 明 . 择 能 激 发 学 生 兴 趣 的实 例 , 过 启 发 、 选 通 引导 的 往 往是 ” 一看 就 会 . 做 就 傻 眼 ” 在 课 堂 上还 没有 及时 跟 上 老 师 教学 方 法 能 充 分 地 调 动 学 生学 习 的积 极 性 和 主 动 性 .也 让学 生 一 . 的思维。如果 V B的 教 学 . 只注 重 基础 知 识 的学 习 . 忽 略 编 程 掌握 了程 序 设 计 的思 想 和方 法 而
能 力 的 培养 . 必影 响 学 生 的就 业 竞 争 力 . 生 对 V 势 学 B的 学 习 仅 3 实验 驱 动 . 高编 程 能 力 、 提 限 于应 付等 级 考 试 , 失 去 对 V 而 B程 序 设 计 的更 高 追 求 。 因此 . 实 验是 检 验 知 识 . 合 运 用 知 识 的重 要 教 学 手 段 . 培养 学 综 是 V B程 序 设计 教 学 应 以 培 养学 生 实 际 应 用 能 力 为 中 心 . 以提 高 学 生 解决 问题 能 力 和创 新能 力 的必 要 环 节 。 B是一 门实 践 性很 强 V 生 综 合 素 质 为前 提 . 过 改 进 教 学 方 法 , 整 教 学 手 段 . 高 教 的课 程 , 生 只 听不 练 根 本 达 不到 学 习 该 课 程 的 目的 。 有通 过 通 调 提 学 只 学 质量 . 到 学 以致 用 的 目的 。 达 具 体 的实 践 . 生 才 能 体 会 和 掌握 其 中的 奥 妙 所 以实 验 环节 非 学 1 例 演 示 . 发学 习兴 趣 . 实 激 常重 要 。在 开始 阶段 . 先 让学 生 模 仿 几 个 实 验 , 师可 先 快 速 首 教 学习V B课程 . 兴趣 是 最 好 的 老 师 教 师 应 根据 特 定 的 教学 介 绍 实 验 的设 计 要 求 并 对 实 验 完 成 的 过 程 进行 演示 .然 后 让 学 内容 . 计 有 趣 味 性 和 实 用 性 的 教 学 实 例 . 发学 生 的好 奇 心 和 生逐 渐 过 渡 到 独 立完 成 实 验 环 节 采用 任务 驱 动 教学 法 . 设 激 每节 实 求 知 欲 。 持 学 生 的学 习 兴 趣 和信 心 。 选 实 例都 应 经 过 深 思熟 验 课 都 要求 学 生 完成 几 个 具 体 的 任 务 .且 实验 前让 学 生 做 到 预 保 所 虑 , 真 思 考 . 一 个 实例 应将 知 识 点 都 穿 插 起 来 , 且 为 后 续 习 . 求 学 生 将 预 习 的 程 序写 在 作 业 本 上 , 认 每 并 要 调试 时用 红 笔 直 接 修 知 识 点 的学 习埋 下 伏 笔 .这 些 实 例 经 过 教 师 的 讲 解 就 可 以 激 发 改 在 作 业 本 上 .这 样 既 便 于 学 生 学 习 更 有 针对 性 .学 生 有 紧 迫 学 生 的 学 习兴 趣 。 感, 同时 也 提 高 了学 生 发现 问题 . 解决 问 题 的综 合能 力 。 如何上好” 导学 篇 ” 非 常重 要 的 在 上 课 的 时 候 . 师 首先 是 教 另 外 , 励 学 生 进 行创 造性 练 习 , 过 表扬 、 末 加 分 等 手 鼓 通 期 演 示 一 个用 V B语 言 编写 好 的 . 涵盖 V B本 门 课 程所 有实 验 的实 段 激励 学生 通 过 在 大 量 的 编 程 练 习 中 提 高 编程 能 力 为 学 生 发 验 演示 系统 . 系统 中所 有 实验 通 过 菜 单 方 式 进行 调 用 。 先 为该 挥 想 象 力 和创 新 提 供 了平 台 。 师 在 实 验 过程 中要 加 强 指 导 , 首 教 注 系 统设 计一 个 ” 迎使 用 V 欢 B实 验 演 示 系统 ” 的界 面 . 中包 含 图 意 总 结 . 学 生 经 常 出现 的 问题 进 行 汇 总 , 及 时 给 学 生 讲 解 . 其 将 并 片 . 画 、 音 . 时 设 置 了密 码 . 求 密 码 输 入 3次 . 对 则 结 避 免 同样 的错 误 在 学 生 中反 复 出现 。 动 声 同 要 不 束 应用 程 序 , 确 则 进入 实验 系 统 。 过 演示 、 解该 实 验 系统 。 4 项 目设 计 . 养 程序 开 发 能 力 正 通 讲 、 培 通过学 习 、 验 , 生大致掌握 了 V 实 学 B的 一 些 基 本 知 识 , 但 学 生对 本 门课 程 的 内容 首 先 有 了 一 个 感 性 认 识 .然后 告 诉 学 生 缺 对 注 意 自己平 时 实验 的积 累 .告诉 学 生 当学 完本 门课 程 后 自 己也 对 知识 的理 解 只 停 留 在 表 面 上 . 乏 系 统 的运 用 . 小 型 应 用 程 可 以将 这 个 实 验 系统 组 装 起 来 .还 可 以 在 此 基 础上 创 新 出更 好 序 系 统 的 开 发 步 骤 和 调试 都 还 不很 熟 悉 为使 学 生 掌 握 V B编 的 项 目。 生 听 了 , 学 兴趣 倍 增 , 产生 了强 烈 的 好 奇 心 . 维也 活 跃 程 、 向对 象 程 序 设 计 思 想 的知 识 实 际 技 能 . 握 应 用 V 思 面 掌 B编 写 起 来了. 开始 思 考 怎 么样 用 计 算 机 去 实 现 这 些 功 能 . 渴 望 马 上 程 序 方 法 . 养 学 生 初 步 的项 目设 计 能 力 . 完 成一 个 大 的编 程 并 培 应 去 学 习掌 握 这些 技 能 项 目 , 要 求 与 课 程 单 元 的项 目差 不 多 。 其 只是 综 合 性 更 强 、 度 难 2案 例 分 析 。 会 程序 设 计 思 想 . 领 更 大 、 识覆 盖 面 更 广 , 作 量 更 大 . 全 面 促 进 学 生 复 习和 梳 知 工 以 在 看 了演 示 实 例后 .学 生 普 遍 对 程序 设 计 产 生 了浓 厚 的 兴 理学 科 教 学 内容 . 升 学 生 分 析 问 题 、 决 问题 和 文 档 的 书写 和 提 解 趣 , 渴 望进 一 步 学 习 。接 下 来 , 师再 分 析程 序 的思 路 、 构 , 编 制 例 如 可 以 要求 学 生模 仿 设 计 wn o s附 件 中 的计 算 器 或 并 教 结 idw 让 学 生 从 实 例透 彻 理 解 到底 什 么是 程 序 设 计 . 以及 设 计 程 序 的 写字 板 ; 于部 分数 据 库 基 础 掌握 得 较 好 的 同学 , 求他 们编 写 对 要 主要 步 骤 。由 于 V B所 涉 及 的概 念 、 名词 及 程 序 设 计 思想 都 比较 网 上学 生 成 绩 查 询 系 统 或 图 书馆 管 理 系统 .这 些 课 题 都 比较 贴 复杂 。 多知 识 点本 身就 具 有 较 强 的概 念 性 和 逻 辑性 。 因此 . 很 单 近 学 生 的 实 际 , 生 也 很 有 兴 趣 , 此 他 们 在 设 计 时较 为 投 入 , 学 因 纯 的理 论 讲 解 其 效果 是 不 行 的 。所 以 . 例 的 分 析 是一 个 十 分 也 能认 真 地 查 阅 资 料 . 析 步 骤 . 行 控 件 的 选 取 、 性 的设 置 案 分 进 属 重 要 的 教学 环节 . 过 经 典 趣 味 的 案 例 分 析f I 波 那 契 兔 子 和事 件 的编 写 、 通 如I I 菲 调试 。这 样 可 以 大 大 提 高学 生 的程 序 开 发 能 力 , 问 题 ”,水 仙 花 ”, 赛 积 分 ” )让 学 生 循 序 渐 进 的掌 握 相 关 增 强 了学 生 的 团 队 精 神 . 到 了较 好 的 效 果 。 教学 过 程 实施 的 ” ” 竞 等 。 收 在 的理 论 知识 及 概 念 . 点 让学 生 领 会 程 序设 计 的思 想 和 方 法 . 重 同 开始 . 给几 个 类 似核 心 实 例 的 项 目设 计 内容 , 学 生 选择 。对 核 供 时 经 典 趣 味 的案 例 可 以 培养 学 生 的学 习兴 趣 .让 学 生 主 动 参 与 心 实例 的调 试 比较 成 功 的 .可 以 同步 实 施 自己 所 选 的 项 目设 计 达到培养学生分析问题和解决问题的能力。 对掌握核心实 教学活动。 可将案例内容分为若干个主题 , 以程序设计作为贯穿 内容 . 例有 困难 的 学 生 . 对 教 学 内 容重 新 布 置 实 验 . 化 知识 巩 固 。 针 强 各 主 题 的 主线 例 如首 先 演 示 一 个 书 上 有 的” 蝶 飞 舞 ” 例 . 后 通 过 改 蝴 实 然 为 了保 证 项 目设 计 能 够 按 照 预定 的 目标 和 计 划 进 行 .教 师 变 实 例 中相 关 代 码 . 蝴 蝶 飞 舞 的 速 度放 慢 , 学 生 理 解 计 算 机 还 应 采 取 以下 措 施来 。 强对 学 生监 督 和 管 理 。 让 让 加 如 何 控 制蝴 蝶 的 飞 舞 。 蝴蝶 飞 舞 的动 作 看 似 复 杂 。 实 简 单 , 其 该 1首 先 讲 清 楚 项 目设 计 的 意义 . 学 生 能 够 自觉 积 极 主 动 .2 1 第 2期 0 0年
计算机专业学生程序设计动手能力的培养

依 赖 心 理 严 重 . 别 人 或 教 师 做 出 来 . 己不 动 手 。 等 自
造 成 这 种 情 况 的原 因 主要 有 以下 几 个 方 面 。
很 多学 生 开始 时喜 欢 上 程 序 设 计 课 , 趣 在 于 对 设 备 的 兴 自主 控 制 欲 望 和 想 像 的 直 接 实 现 。他 们 在 这 之 前 看 到 和 听
弃。 种 兴 趣 , 教 学 中加 以引 导 和 利 用 。 在 创 设 教 学 情 境 时 , 在 可
其次 , 程序 设 计课 程 教 学 中 重 视 程 序 语 言 的 语 法 讲 授 , 以从 一 些 有 趣 的应 用 问题 人 手 , 学 生 产 生 学 习 的 愿 望 和 动 使 细 节 强 调 过 多 , 际 应 用 处 理 少 , 法 讲 解 少 ; 决 实 际 问 题 机 。例 如 ,在 讲 到 程 序 设 计 “ 法 ” 节 时 , 给 学 生 f s 实 算 解 算 一 先 lh a 的 实 现 方 法 , 别 是 综 合 型 的 训 练 更 少 。长 此 以 往 . 生 兴 特 学 动 画 , 提 出如 “ 再 巧过 独 木 桥 ” 样 类 似 的 问 题 , 学 生 通 过 这 让 趣 渐 减 , 觉 枯 燥 . 序 设 计 学 习遂 成 负 担 。 反 程 玩 游 戏 摸 索 出解 决 问题 的步 骤 . 要 求 用 完 整 的 自然 语 言 描 并 其 三 , 序 设 计 课 程 教 学 时 数 有 限 , 多 时 问 用 于 语 法 程 大 述 出来 , 此 来 揭 示 “ 法 的 概 念 及 其 描 述 方 法 ” 在 讲 到 以 算 。 讲解 , 机实践时间严重不足 , 法课堂没弄清 , 上 语 上机 操 作 一 “ 归思 想 ” , 学 生 玩 “ 塔 ” 戏 , 生 玩 了一 会 就 发 现 递 时 让 梵 游 学 个 程 序 还 未 调 完 实验 时 间 就 到 了 , 不 到 自己 的 成 果 出来 。 看 塔 上 的 圆 盘 数 量 每 增 加 一 个 , 题 就 复 杂 一 倍 , 动 时 一 不 问 移 这 样 多 次反 复 , 大 大 降 低 学 生 学 习 信 心 . 上 机 也 提 不 起 就 对 小 心 就 出错 。老 师 就 启 发 他 们 ,这 个 问 题 要 是 给 计 算 机 做 , “ 兴 趣 了 。 程 序 设 计 的 动 手 能 力 当然 也 就 无从 谈 起 。 个 再 其 四 , 乏 实 战训 练 。 尽 管 语 言 类 课 程 有 课 程 设 计 , 缺 但 只要 编 程 教 会 它 解 决 3 盘 的 移 动 步 骤 , 应 用 递 归 算 法 ,
计算机专业学生软件工程能力的培养

团 队协 作 是项 目成 功 的 必 要 条 件 , 队精 神 和 团 协 作 能力是 程 序员 应 该 具 备 的 最 基 本 素 质 , 是 最 也 重 要 的 安 身 立 命 之 本 。学 生 一 旦 进 入 一 些 大 系 统 的 研 发 团 队 , 入商 业化 和产 品化 的开发 任务 , 何个 进 任 人 的力 量都 是有 限 的 , 没有 协作 精 神是 不可 想 象 的 。 因此 团 队中所 有成 员 必 须 意 识 到 , 人 的 成功 融 入 个 集 体 的成功 之 中 , 只有 项 目成 功 、 队 成 功 , 团 才谈 得
一
、
引 言
高校计 算机 专业 本 科 生培养 计 划 中有 许 许 多 多 的实践 环节 , 如实 验 、 程设 计 、 课 毕业 设 计 等 , 而 这 然 些 并不 足够 , 毕业 学 生普 遍与 社 会 r 业 要 求 存 在一 r 定距 离 。这 主要 是 因为学 生 尽管 经过 了系统 的专业 学 习 , 普遍 缺 乏 软件 工 程概 念 。有 的 学 生 代码 写 却 的很 漂亮 , 些 技 术 细 节 相 当出 众 , 很 有 钻 研 精 一 也 神 , 是 往往 被一 些错 误 的认 识 和观点 左 右 , 乏对 但 缺 系统 , 对程 序 的整体 理 解 能力 , 些人 实 际上 只 是一 有 些 C d gf s许 多 学 生 甚 至 不 知 道 编 码 前 还 要 设 oi n , n a 计, 打个 腹稿 就去 写 代 码 , 完 就 试 , 了 改 过 来再 写 错 试 , 完 了 也 不 测 试 就 提 交 用 户 , 本 没 有 流 程 的 概 试 根 念, 整个 过程 不 留 一 句 文 档 。我 们 曾 经 要 求 学 生用 C语 言实 现 同一 个 功 能 , 果 发 现 , 法 五 花 八 门 , 结 写 甚 至还 有人 故 意用 高难 语 句实现 , 以显 示 他 的水 平 。 由此 可见 必须 加强 对 学 生 软 件 工 程 能 力 的培 养 , 才 能更 好的适 应社 会 的要 求 。
计算机专业学生对软件开发能力培养的浅谈

计算机专业学生对软件开发能力培养的浅谈作者:查文利来源:《数字化用户》2013年第05期【摘要】软件开发的能力既是计算机专业市场的需求,也是学生必须要掌握的一项能力,本文对计算机专业学生进行软件开发能力培养的重要性和培养途径两个方面着重论述。
【关键词】计算机软件开发能力培养一、计算机软件开发能力的重要性计算机系统由软硬件两个方面组成,如果说硬件是计算机的载体,那么软件就是计算机的灵魂,随着科学的飞速发展,计算机的软、硬件两个方面都在迅速发展,计算机软件的发展也带来一些问题,比如计算机软件开发时,不能按照时间的需求完成、软件开发的费用会超出预计,软件开发之后BUG太多,可靠性不高,质量难以得到保证等等……计算机软件开发的需求远远没有达到计算机发展的需要,这是一片很巨大的市场。
2001年国际高等院校计算机研究会提出未来学习发展的方向:计算机专业的学生必须具备软件初步开发的能力,计算机专业要从计算机导论与程序设计方面展开、微型机的原理与应用方面展开、数据结构算法分析与软件工程方面展开。
计算机软件开发的能力是学生必须要掌握的能力,掌握软件开发机能在计算机行业中也有极重要的作用,软件开发的能力,学生在学习计算机的课程中可以得到初步的培养。
二、培养学生软件开发能力的途径(一)培养学生掌握软件开发基础知识的能力计算机专业的基础知识包含很多方面,比如软件、硬件、原理与接口技术、程序设计、计算机网络、数据库应用等。
这些计算机基础知识学生都必须掌握,同学生还要掌握以下几个方面的技能:1.了解计算机软件体系的结构软件体系结构是实现计算机软件系统结构的方法,它是以不同的角度不同的方法去设计系算机系统的功能,如计算机软件的系统分由几个模块完成,每个完成都实现计算机系统的一个功能,计算机每个模块都具有有效性,它们之间还需要互动,而学生要能掌握划分软件模块与实现模块功能的能力,如果每个模块的功能都足够简单,那么学生可以独自完成,如果模块的功能比较复杂,那么学生就要了解模块与模块之间怎样互动。
从ACM-ICPC探索提升大学生程序设计能力的方法

从ACM/ICPC探索提升大学生程序设计能力的方法摘要 acm/icpc是世界各国大学生最具影响力的国际计算机类的赛事,是广大爱好计算机编程的大学生展示才华的舞台,是各个大学计算机教育成果的直接体现。
本文提出在指导学生参加acm/icpc 的日常的教学过程和集训过程中积累的一些提升大学生程序设计能力的教学经验和方法,和同行们探讨。
关键词 acm/ icpc;程序设计;课程设置;实战集训中图分类号tp39 文献标识码a 文章编号1674-6708(2010)26-0228-021 acm/icpc介绍acm/icpc (acm international collegiate programming contest,国际大学生程序设计竞赛)是由国际计算机界历史悠久、颇具权威性的组织acm(association for computing machinery,国际计算机协会)主办的。
是世界上公认的规模最大、水平最高的国际大学生程序设计竞赛。
其目的旨在使大学生运用计算机来充分展示自己分析问题和解决问题的能力。
竞赛从1970年至今已举办了34届,受到国际各知名大学的普遍重视,并受到全世界各著名计算机公司的高度关注。
acm/icpc已成为世界各国大学生最具影响力的国际计算机类的赛事,是广大爱好计算机编程的大学生展示才华的舞台,是各个大学计算机教育成果的直接体现。
该项竞赛分为区域预赛和国际决赛两个阶段进行,各预赛区第一名自动获得参加世界决赛的资格,世界决赛安排在每年的3月~4月举行,而区域预赛安排在上一年的9月~12月在各大洲举行。
竞赛中每队3人仅拥有一台计算机,要求选手在全封闭的环境内(可以携带包括词典在内的任何纸质的资料,但不得有电子资料)连续五个小时进行解答,而且对程序的时间复杂度和空间复杂度有一定的要求。
竞赛用英文命题,题目数量在6~10题之间,试题没有规定范围,涉及知识面非常广。
这就要求参赛学生不仅具有扎实的程序设计能力、良好的数学功底和数学建模能力,还要有较强的团队协作能力和压力下程序设计能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
论提高计算机专业学生的程序开发能力
摘要:程序开发能力和计算机应用能力是检验计算机专业教学的两个重要手段,笔者结合自己的软件开发经验和教学经历,从学、读、思、练、实践和好习惯等6个方面探讨了如何提高计算机专业学生的程序开发能力。
关键词:学习;实践;程序;能力
高等教育的目的有两个,从社会角度来讲是起滤网的作用,为社会提供不同类型、不同层次的人才;从人的角度来讲是尽可能的发展个人的潜力,让个人在社会中找到自己的位置。
作为计算机专业的老师,除了注重学生计算机基础能力的培养外,还要注重学生专业应用能力和专业扩展能力的培养,这样学生才能适应社会发展的需要;作为计算机专业的学生,必须提高自己的知识综合运用能力和程序开发能力,这样才能在知识日新月异的时代占有一席之地。
笔者结合自己的软件开发经验和教学经历,加上对学生的了解,从学、读、思、练、实践和好习惯6个方面来谈一下如何提高学生的程序开发能力。
1学
所谓学就是学习,认真学习程序开发基础课程和专业课程,不断地学习新的、先进的开发工具;只有扎实的理论基础,编程才能游刃有余,才能写出高水平的代码,才能开发出高质量的程序。
首先学好程序开发的最基础的课程一一C语言,然后根据应用范围不同而选择学习研究不同的开发工具。
底层开发一般使用C和汇编;大型或者游戏软件开发使用C或C++,一般用VC++或BC++;网页编程可以选择ASP、PHP或JSP;电子商务方面选择.NET或J2EE;网络应用一般选择JA V A。
不过像数据结构、数据库、英语、数学等课程,无论哪个方面的开发都需要学。
一般的基础课程有计算机基础、C语言、VB程序设计、数据库原理、数据结构、算法设计等,学习程序开发的基础课程主要是学习一门语言,一门数据库,一门算法设计。
基础越牢固,编程效率越高,这一点在程序开发中会慢慢体会到。
如果基础课程不牢固,可能也能编软件,但是很难开发出高水平的程序。
例如一般的程序会遇到费用问题,有费用就要考虑费用的大写问题,那么怎样实现费用的大小写转换呢?首先考虑算法设计,然后考虑算法实现。
考虑算法时就要考虑从左向右转换还是从右向左转换,确定后就可以通过循环控制结构来实现转换;中间用判断结构来判断如果为零或中间有零的特殊情况等等。
这样一个问题就通过简单的算法和基本控制结构实现了,所以程序开发必须有扎实的理论基础,这些理论基础来源于自己不断地学习。
另外,很多的课程告诉我们一些程序的效率问题,例如数据库设计中提到了SQL语句,我们最先想起的就是Select语句,在数据量比较大的情况下,Select 语句的查询速度和数据库中表的索引有很大的关系。
但是很多情况下Select语句是不使用索引的,如果在Select语句中的where条件中出现下列情况的不使用索引:列上有数学运算的,列上使用substr字符串函数的,‘%’通配符在第一个字符的,在列上使用字符串连接(II)的等等,那么在对大量的数据进行查询时,不考虑以上情况的话,SQL语句的效率就比较低,所以只有不断地学习好程序开发的基础课程,学习好各种工具的应用,才能写出高效率的代码。
2读
所谓的读就是读教材、读程序、读网上资料,然后把看到的经典代码和好的算法整理出来,逐个消化、吸收,转变为自己的知识,提高自己的程序开发能力。
读他人的代码时不要单纯地模仿,思想才是最重要的,主要是去理解别人的思想,读完后思考自己是否能写出更精炼、更有效的程序。
多与他人交流,从交流中学习提高。
3 思
首先,事前思考有没有可行性。
给你一个课题或一个项目,最先做的是思考可行性问题,包括技术可行性、经济可行性、法律可行性。
如果给你一个悖论让你用程序来实现,本身是一个悖论,编写程序肯定陷入死循环,怎么可能解决呢?
其次,事中考虑有没有更好的解决方案。
微软给了我们很好的思路,比如登录界面、保存、输入格式的限制和输入范围的限制等。
登录界面一般有用户名和登录密码,并且默认上次成功登录系统的用户名,输入的密码显示为一串“*”,在这些操作中可以只使用键盘。
那么我们开发的程序中的登录界面是否也可以这样呢?我们常用Woed和Excel,能设置定期保存,我们开发的程序是否需要实现定期保存?如何实现?其实我们可以在程序登录时记录系统时间,在一定的时间间隔内实现备份,最简单的就是书写代码调用Winrar实现文件的压缩备份。
一些输入的限制要根据内容的逻辑进行判断到底应该输入的内容或范围是什么?例如有的月份能输入31日,有的就不能,这都需要进行逻辑判断。
如果通过代码来控制,如何实现呢?开发程序时如果我们思考类似的细节,并想办法实现,实现的过程就是我们程序开发能力提高的过程。
最后,事后考虑有没有需要完善的,代码有没有需要优化的。
下面举个代码优化的例子,求一元二次方程ax2+bx+c=0的根,其中a、b、c为任意实数,这个例子很经典,多数开发语言或程序设计的教材中都讲到过。
实现的步骤是先判断a是否为0,再判断b2-4ac是否为0,根据相应的值求方程的根;a是否为0,必须判断,因为如果a为0,就不是一元二次方程,但是很多教材中没有提到;在判断b2-4ac是否为0时,需要这样判断fabs(b2-4ac)<=le-6,因为在计算机中,储存实数一般都有误差。
所以事后必须思考,思考程序有无需要完善的功能,有无需要优化的代码,完善的过程就是程序开发能力提高的过程。
4练
所谓练就是动手做练习,教材上的例题、课后习题都是很好的素材,都是编者经过深思熟虑的结果,很有代表性。
边练习,边理解,边思考,多问为什么?然后根据自己的思考和理解对例子做一定的改动,看执行结果是否和自己期望的一样?出现问题就设法调试、改正、编译使其通过。
例如有很多循环的例子,是否可以实现for循环和while循环相互转化,只有通过自己的实际转换后才能体会各个循环的特点。
练习要分阶段分步骤,开始编一些趣味性的程序;然后当积累到一定程度,就可以按照自己的想法编一些实用性强的程序,当然可以从借鉴别人的劳动成果开始:最后,系统地学习软件工程,完全按照软件生命周期的6个阶段来做,通过不断地练习,不断地完善软件过程,提高程序开发能力。
5实践
如果有机会,可以做实际的项目工程,在实践中不断地锻炼自己的其他能力,如逻辑思维能力、业务能力、沟通交流能力。
逻辑思维能力是程序开发能力的基础,只有良好的逻辑思维能力才能开发出高性能的程序,才能保证程序的正确性。
业务能力和沟通交流能力是必需的,如果不懂业务,就不知道用户的需求,就不可能开发出适合用户的程序。
实践的项目不在大小,在于实践的经历。
通过实践知道在实施项目中除了程序开发能力外还需要其他的能力,通过实践知道项目的实施过程和环节。
在实施的过程中遇到的各种各样的问题,使我们明白在程序开发中怎样思考、解决这些问题。
例如在培训用户时,发现用户对我们的业务流程不适应,用户自己的业务流程比较简单,那么我们在程序开发时就可以借鉴用户的流程,使我们的操作流程更简捷。
在测试阶段发现用户经常使用业务回退功能,那么我们就给主要的业务流程都加上业务回退功能,使系统功能更完善。
在维护阶段发现维护人员看不明白代码,那么在程序开发阶段就要注意良好的程序开发风格并增加适量的注释,保障程序的可理解性,提高土作效率。
6好习惯
(1)先思后行:在程序开发前或解决问题前,先考虑该问题是否有可行性,有可行性再考虑计划和实施。
(2)有备无患:程序开发之前,先找一些样例程序仔细研究,应该包含哪些基本功能?里面一些难度大的算法应该怎样实现?不打无准备之仗。
(3)按部就班:程序开发要遵循软件的生命周期,按照制定计划、需求分析、软件设计、程序编码、软件测试和运行维护这6个阶段来实现和完善软件,不可越级。
(4)见名知意:程序再小,用的变量也不会少,变量起名应当“见名知意”,这样可大大提高程序的易理解性和易修改性。
(5)开发规范:程序要书写规范,形成良好的程序风格,这样程序才层次清晰,易于理解。
(6)多加注释:对程序中自定义的变量、函数、子程序加以功能性的注释说明,好的程序中注释能占到整个代码的30%甚至50%,注释最根本目的就是增加程序的可理解性。
(7)环境保护:如果应用程序需要修改系统设置,记着执行程序前先保存设置,结束后要恢复设置,千万别污染系统。
(8)拿来主义:一个人的力量是有限的,大家的力量是无限的,平时多看书,有好的经验方法、用得上的段子不妨拿来;拿来先明白、再消化吸收、最后变为自己的知识。