|
|
|
目前,许多程序设计类课程,其主要内容就是详细介绍一门程序设计语言。对于计算机专业的学生,这远远不够;对于非计算机专业的学生,也略显肤浅。这些课程的教法往往重语法规则,缺算法概念,这就容易导致学生由于基本技能缺失而在学习数据结构时产生困难,或难以学精。对于非计算机专业的学生来说,仅掌握一门程序设计语言的语法规则,写几个打印由星号组成的三角形之类的“玩具”程序,而对计算机科学的基础与灵魂——算法一无所知,不明白计算机到底是怎么解决问题的,那么在日后的工作中,不但不可能自己编写实用程序,甚至会无法及时意识到,哪些问题很适合用计算机处理,可以交给计算机专业人员来做。本课程将程序设计语言和最基本的算法思想相结合,是避免上述现象的一个有益尝试。 |
本课程的最大特点是和程序设计在线评测系统POJ(http://acm.pku.edu.cn/JudgeOnline, http://poj.grids.cn)和编程网格系统PG(http://programming.grids.cn)紧密结合,具有极强的实践性。POJ/PG系统包含一个拥有2000多道饶有趣味的程序设计题的题库,既有面向不同专业背景的、适合循序渐进学习的题目,也有训练思维能力和编程技巧的题目。很多题目来自ACM/ICPC国际大学生程序设计竞赛,也有很多题目反映的就是工作和生活中的实际问题。用户可以针对某个题目编写程序并提交,让POJ/PG系统自动判定程序的对错,用户几秒之内就可知道对还是错,并且错在那里。作为教学支持,每个学生在POJ/PG系统上可以建立自己的账号并选课;教师可以在POJ/PG系统上开设课程,布置练习和作业,同时一眼就能看到布置的习题学生是否已经完成,这几乎将教师评判学生作业的工作量减少到零。POJ/PG系统对于程序的正确性评判是极为严格的:学生提交的程序在POJ/PG系统服务器端编译、运行,根据POJ/PG系统给出的输入数据进行计算并输出结果,将得到的输出结果和标准答案进行对比,必须一个字节都不差,程序才能算通过。这对于培养严谨、周密的程序设计作风极为有效,学生必须考虑到每一个细节和特殊边界条件,而不是大体上正确就能通过。传统的人工评判是难以做到这一点的。 |
通过POJ/PG系统,程序设计的实践性以一种特殊的方式被提高到了十分重要的地位,不论对计算机专业的学生,还是非计算机专业的学生,都非常适用。 |
|
|
程序设计在线评测系统POJ(http://acm.pku.edu.cn/JudgeOnline, http://poj.grids.cn),面向《计算概论A》的实验教学; |
|
|
编程网格系统PG(http://programming.grids.cn),面向《计算概论B》的实验教学; |
|
目前,POJ/PG系统不仅在北大得到广泛的应用,在全国程序设计竞赛和计算机专业学生中也有很深入的影响。 |
|