我怎么讲好“程序设计基础”这门课
- 格式:pdf
- 大小:33.44 KB
- 文档页数:3
计算机程序设计C程序设计教案第一篇:计算机程序设计基础一、课程概述计算机程序设计是计算机科学与技术专业的重要课程之一,它主要是通过讲解计算机程序设计的基础知识、方法和技巧,培养学生的程序设计能力和计算机应用能力,从而使学生能够熟练掌握C语言,为其今后的专业学习以及职业发展打下坚实的基础。
二、主要内容本课程主要涉及以下内容:1. C语言基础知识:常量、变量、数据类型、运算符等;2. 控制结构:条件语句、循环语句等;3. 函数:函数的定义、调用、返回值等;4. 数组:一维数组、多维数组等;5. 指针:指针的定义、使用、指针与数组等;6. 文件操作:文件的读写操作等。
三、教学目标1. 熟练掌握C语言的基础知识,能够独立编写简单的C程序;2. 理解掌握C语言的控制结构,能够使用条件语句、循环语句等进行程序设计;3. 熟练掌握函数的定义、调用、返回值等知识,能够编写简单的函数;4. 具备一定的数组使用能力,能够编写简单的数组应用程序;5. 熟练掌握指针的定义、使用、指针与数组等知识,能够编写简单的指针应用程序;6. 了解文件操作的基本知识,能够进行文件读写操作。
四、教学方法1. 授课法:授课老师通过讲解授课,向学生讲解C语言的基础知识、方法和技巧;2. 编程实践法:在课堂上,通过编写小程序来帮助学生理解和掌握知识;3. 课堂讨论法:通过讨论经典例题,帮助学生理解和掌握知识;4. 课程设计法:在课程设计中,通过设计、开发并实现一些小应用系统,来帮助学生更好地将所学知识应用到实际中。
五、教学评估方式1. 平时表现评估:包括作业完成情况、课堂参与情况、考勤情况等;2. 考试评估:学习期末将组织一次考试,将学生平时的学习情况作为重要考评基础;3. 课程设计评估:学习期末,将限定时间内完成的小应用系统作为课程设计的评估方式。
六、教学建议1. 建议学生在学习过程中注重实践,通过编写越来越复杂的程序来逐步掌握所学知识;2. 建议学生在平时多进行思考和探索,掌握自主学习的方法;3. 建议学生积极参与课堂,多与老师和同学互动,及时解决疑惑和问题。
程序设计基础程序设计是一门计算机科学的基础课程,它是学习和理解计算机编程的重要一步。
在本文中,将讨论程序设计基础的主要概念和原则,以及如何提高自己的程序设计技能。
一、程序设计基础概述程序设计是指根据一定的规则和逻辑,编写计算机程序以解决实际问题的过程。
它基于计算机的工作原理和计算机语言的语法规则,通过编写源代码和调试程序,最终生成可运行的软件。
在程序设计过程中,有几个关键的概念需要掌握:1. 算法:算法是程序设计的基础,它是一组解决问题的步骤和指令。
一个良好的算法应该具备清晰的目标、明确的步骤、正确的逻辑和高效的执行。
2. 数据结构:数据结构是存储和组织数据的方式。
常见的数据结构有数组、链表、栈和队列等。
了解不同的数据结构可以帮助选择合适的数据存储方式,提高程序的效率。
3. 编程语言:编程语言是用于编写程序的一种特定语言。
常见的编程语言有C、C++、Java和Python等。
每种编程语言都有自己的语法规则和特点,选择适合自己的编程语言可以提高编程效率。
二、程序设计的基本原则要成为一名优秀的程序设计师,需要遵守一些基本的原则:1. 模块化:将一个大的问题分解成多个小的模块,每个模块负责解决一个具体的子问题。
模块化可以提高代码的可读性和可维护性。
2. 可重用性:设计可重用的代码是提高编程效率的重要手段。
通过将常用的功能封装成函数或类,可以在不同的项目中重复使用,减少代码的冗余。
3. 简洁性:代码应该尽可能简洁明了。
简洁的代码易于理解和维护,能够提高程序的可读性。
4. 可测试性:编写可测试的代码可以方便进行单元测试和调试。
合理地使用函数和模块化的编程方式可以提高代码的可测试性。
三、提高程序设计技能的方法1. 学习算法和数据结构:深入学习各种常见的算法和数据结构,例如排序算法、查找算法、树结构和图等。
通过实践和练习,掌握它们的基本原理和应用场景。
2. 多写代码:编程是一种实践活动,多写代码可以提高自己的编程技能。
大学程序课程设计基础一、教学目标本课程的目标是让学生掌握大学程序课程设计的基础知识和技能,能够运用所学的知识进行简单的程序设计和调试。
通过本课程的学习,使学生了解程序设计的基本概念、方法和过程,培养学生分析问题和解决问题的能力,提高学生的创新意识和实践能力。
具体的教学目标如下:1.知识目标:(1)掌握程序设计的基本概念和原理;(2)了解常用的程序设计语言及其特点;(3)熟悉程序设计的基本方法和步骤;(4)理解程序调试和测试的基本方法。
2.技能目标:(1)能够使用一种程序设计语言进行简单的程序设计;(2)能够运用所学的程序设计方法解决实际问题;(3)具备基本的程序调试和测试能力;(4)能够阅读和分析程序设计相关的文献资料。
3.情感态度价值观目标:(1)培养学生的创新意识和团队合作精神;(2)增强学生对程序设计的兴趣和热情;(3)培养学生严谨的科学态度和良好的职业道德。
二、教学内容根据课程目标,本课程的教学内容主要包括以下几个方面:1.程序设计基本概念:程序、算法、数据结构等;2.程序设计语言:C/C++、Java、Python等;3.程序设计方法:结构化程序设计、面向对象程序设计等;4.程序调试和测试:调试工具的使用、测试方法等;5.实际应用案例:涉及数学计算、数据处理、网络编程等领域的实际案例。
三、教学方法为了达到课程目标,本课程将采用多种教学方法,包括:1.讲授法:讲解程序设计的基本概念、原理和方法;2.案例分析法:分析实际应用案例,使学生更好地理解程序设计的方法和技巧;3.实验法:上机实践,让学生亲自动手编写程序,培养实际编程能力;4.讨论法:分组讨论,促进学生之间的交流与合作,提高学生的创新能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统的理论知识;2.参考书:提供丰富的参考资料,帮助学生拓展知识面;3.多媒体资料:制作课件、视频等多媒体资料,提高课堂教学效果;4.实验设备:保证足够的上机实验时间,让学生动手实践。
程序设计基础的课程设计一、课程目标知识目标:1. 让学生掌握程序设计的基本概念和原理,如变量、数据类型、运算符、控制结构等。
2. 使学生理解程序设计的流程,学会编写、调试和运行简单的程序。
3. 引导学生了解程序设计中的常用算法和解决问题的策略。
技能目标:1. 培养学生运用所学知识编写简单程序的能力,提高逻辑思维和编程技巧。
2. 培养学生运用调试工具找出程序错误并修正的能力,提高解决问题的能力。
3. 培养学生合作学习和团队协作的能力,学会共同分析问题、讨论解决方案。
情感态度价值观目标:1. 激发学生对程序设计的兴趣,培养学习编程的热情和积极性。
2. 培养学生勇于尝试、不怕失败的精神,提高面对困难的勇气和毅力。
3. 引导学生认识到程序设计在生活中的应用和价值,增强信息素养和创新能力。
分析课程性质、学生特点和教学要求,本课程目标旨在使学生在掌握程序设计基本知识的基础上,提高编程能力和解决问题的能力,培养学生对编程的兴趣和热情,为后续学习打下坚实基础。
课程目标具体、可衡量,以便教师进行教学设计和评估。
二、教学内容本章节教学内容围绕程序设计基础展开,包括以下部分:1. 程序设计基本概念- 变量和常量的概念及其应用- 数据类型和数据表示- 运算符和表达式2. 控制结构- 顺序结构- 选择结构(if-else语句)- 循环结构(for、while语句)3. 算法基础- 算法的概念和描述方法- 常见算法策略(顺序查找、二分查找、冒泡排序等)4. 编程实践- 编写简单程序,解决问题实例- 调试程序,找出并修正错误- 代码优化,提高程序性能5. 课程项目- 团队合作,共同完成一个程序设计项目- 项目过程中,学会分析问题、设计算法、编写代码和测试教学内容根据课程目标制定,涵盖教材相关章节,确保科学性和系统性。
教学进度安排如下:- 第1-2课时:程序设计基本概念- 第3-4课时:控制结构- 第5-6课时:算法基础- 第7-8课时:编程实践- 第9-10课时:课程项目教学内容和进度安排旨在使学生扎实掌握程序设计基础知识,培养实际编程能力,为后续学习打下坚实基础。
程序设计基础教程C语言版教学设计摘要:本篇教学设计针对初学者,介绍了C语言基础语法和程序设计思路。
通过实例演示,让学生学会使用C语言编写简单程序,并了解到程序设计的基本思路。
一、教学目标1.了解C语言基础语法;2.掌握C语言程序设计思路;3.学会使用C语言编写简单程序;4.熟悉程序设计基本思路,能够独立思考和解决实际问题。
二、教学内容和教学方法2.1 教学内容2.1.1 基础语法1.C语言基本数据类型和变量;2.运算符和表达式;3.条件语句和循环语句;4.函数和指针;5.数组和字符串。
2.1.2 程序设计思路1.程序设计基本思路;2.整体设计和模块设计;3.程序调试和优化。
2.2 教学方法1.讲授理论知识;2.实例演示编写程序;3.学生自主编程实践;4.师生互动,问题探讨。
三、教学计划3.1 教学时间共计24课时,每课时45分钟。
3.2 教学内容和进度安排课时教学内容进度安排1-2 C语言基本数据类型和变量理论讲解和实例演示3-4 运算符和表达式理论讲解和实例演示5-6 条件语句和循环语句理论讲解和实例演示7-8 函数和指针理论讲解和实例演示9-10 数组和字符串理论讲解和实例演示11 程序设计基本思路理论讲解和实例演示12 整体设计和模块设计理论讲解和实例演示13 程序调试和优化理论讲解和实例演示14-24 学生自主编程实践和问题探讨师生互动,实践和问题探讨四、教学评估4.1 教学方法1.学生课堂表现;2.课后作业提交情况。
4.2 课堂测试每个章节结束后进行小测验,并通过分析测试结果,检查学生学习成果和掌握程度。
4.3 课程设计作业让学生独立完成一个实际程序设计的项目,检查学生对程序设计的掌握情况,并评估学生在实践中解决问题的能力。
五、教学体会通过本次教学,我深刻认识到,C语言是程序设计语言的基础,也是初学者必学的重点。
C语言基础语法简单易懂,程序设计思路清晰明了,在教学中,可以通过实际案例演示,让学生快速入门,从而建立起编程思维,提高逻辑思维能力,培养解决问题的能力。
《程序设计基础》实践教学提纲一:教学目标与内容设计教学目标是指实践教学应达到的学习目标和职业能力培养目标。
程序设计基础实践教学需要提高学生的实践能力,教授基本的程序设计技巧和方法。
内容设计是指教学内容的安排和设计,需要符合学生的学习水平和实践需求。
在程序设计基础实践教学中,教学目标包括:1)掌握基本的编程语言和程序设计技巧;2)培养编写程序的实践能力;3)能够根据实际需求设计和编写简单的程序应用。
教学内容的设计应包括基本的编程语言、程序设计基础知识、算法分析等内容。
同时,还应该结合实际应用,引导学生进行实践操作,例如:网站设计、软件开发等。
提纲二:教学方法和手段教学方法和手段指实践教学中所采用的教学方式和教学资源。
有效的教学方法和手段对于提高学生的实践能力和创造力至关重要。
在程序设计实践教学中,应采用交互式的教学方式,鼓励学生参与练习和讨论,激发创新思维。
同时,应该建立合理的实验室设备和软件环境,为学生提供良好的学习和实践条件。
提纲三:教学质量评估教学质量评估是指对实践教学过程和效果进行评估的措施。
良好的教学质量评估可以帮助教师及时发现存在的问题并采取有效措施予以解决,提高实践教学效果。
在程序设计实践教学中,应采用多种教学质量评估措施,例如:作业、实验报告、考试等方式来评估学生的学习成果。
同时,学生对课程的反馈也是很重要的评估指标,可以帮助教师改善教学质量。
提纲四:教学团队建设教学团队建设是指通过合理的组织架构和职能分工,搭建合理的教学团队,提高教学质量。
应通过合理的教学团队建设,实现教学、科研、实践相互交融,提高教学效果。
在程序设计实践教学中,应建立合理的教学团队,包括教师、研究生、助教等,充分发挥各自的特长和优势,完善课程设置和教学内容,提高教学效果。
提纲五:教学实践案例教学实践案例是指成功的教学案例和经验分享,可以为教学实践提供有价值的参考。
应采用多样化的教学实践案例,包括不同层次的教学实践案例,做到有针对性地进行教学实践。
程序设计基础心得体会在学习程序设计基础这门课程的过程中,我有些许的体会和心得。
首先,我觉得程序设计基础是一门很重要、也很有意义的课程。
在现代社会中,计算机技术已经广泛应用于各个领域,而程序设计是计算机技术的核心。
学好程序设计基础,不仅可以为今后的学习和工作打下坚实的基础,还可以提高自己的逻辑思维能力和问题解决能力。
其次,学习程序设计需要掌握一些基本的概念和原理。
比如,要了解计算机的基本组成结构,掌握计算机的运行原理和算法的设计原则。
只有掌握了这些基本概念和原理,才能够更好地理解程序设计的过程,更好地解决问题。
此外,学习程序设计还需要进行大量的实践。
程序设计是一门实践性很强的学科,光看书理论是远远不够的。
只有通过编写大量的程序,才能够真正掌握程序设计的技巧和方法。
在实践中,我们既可以通过模仿已有的程序逐步理解和掌握程序设计的过程,也可以通过自己思考和尝试解决一些实际问题来提高自己的编程能力。
同时,学习程序设计还需要有一定的耐心和毅力。
编写程序并不是一件容易的事情,往往会遇到各种各样的困难和问题。
在解决这些困难和问题的过程中,我们需要保持积极的心态,耐心去思考和尝试解决,毅力去坚持不懈地努力。
最后,我觉得学习程序设计还需要有团队合作精神。
在实际的编程项目中,往往需要多个人共同协作完成。
通过与他人的交流和合作,我们不仅可以学到更多的知识和经验,还可以培养自己的合作能力和团队精神。
总的来说,学习程序设计基础是一项需要认真对待的任务。
只有通过不断地学习和实践,我们才能够真正掌握程序设计的技巧和方法,提高自己的编程能力。
希望在今后的学习和工作中,我能够不断地提升自己的编程能力,为实现个人的发展目标做出更大的贡献。
程序与设计基础课程设计一、课程目标知识目标:1. 让学生理解程序与设计的基本概念,掌握编程的基本语法和结构;2. 使学生了解程序设计的流程,学会运用顺序、选择和循环等基本控制结构;3. 帮助学生掌握基本的编程技巧,如变量定义、数据类型转换和运算符使用;4. 让学生了解程序调试与测试的基本方法,提高解决问题的能力。
技能目标:1. 培养学生运用编程语言进行程序设计的能力,能够编写简单的程序;2. 培养学生分析问题、设计算法和编写代码的技能;3. 提高学生运用调试工具和技巧,找出并修正程序中错误的能力;4. 培养学生团队协作和沟通能力,能够参与项目开发和讨论。
情感态度价值观目标:1. 培养学生对程序设计的兴趣,激发学习热情,树立自信心;2. 培养学生勇于尝试、不怕失败的精神,形成积极向上的学习态度;3. 培养学生遵守编程规范,注重代码质量,养成良好的编程习惯;4. 培养学生具有创新意识,敢于挑战,追求技术卓越。
课程性质:本课程为程序与设计基础课程,旨在让学生掌握编程基本知识和技能,培养编程兴趣和素养。
学生特点:学生处于初级阶段,对编程有一定兴趣,但基础薄弱,需要通过具体实例和实践操作来提高。
教学要求:注重理论与实践相结合,强调动手实践,关注个体差异,提高学生编程能力和综合素质。
通过本课程的学习,使学生能够达到上述课程目标,为后续学习打下坚实基础。
二、教学内容本课程教学内容主要包括以下几部分:1. 编程基本概念:数据、变量、常量、数据类型、运算符等;教材章节:第一章2. 程序设计基本结构:顺序结构、选择结构、循环结构;教材章节:第二章3. 编程技巧:变量定义与赋值、数据类型转换、运算符优先级;教材章节:第三章4. 算法设计:顺序查找、二分查找、冒泡排序、选择排序等;教材章节:第四章5. 程序调试与测试:常见错误类型、调试方法、测试方法;教材章节:第五章6. 综合实践:编写简单的程序,如计算器、九九乘法表等;教材章节:第六章教学内容安排与进度:第一周:编程基本概念、顺序结构第二周:选择结构、循环结构第三周:编程技巧、算法设计第四周:程序调试与测试、综合实践教学内容确保科学性和系统性,结合教材章节,以实践操作为主线,使学生能够逐步掌握编程基本知识和技能。
程序基础设计课程设计一、课程目标知识目标:1. 让学生理解程序设计的基本概念,掌握程序设计的流程和基本方法。
2. 使学生熟悉编程语言的基本语法,能够运用条件语句和循环语句进行简单的程序编写。
3. 帮助学生了解程序设计中的常用算法和解决问题的策略。
技能目标:1. 培养学生运用编程语言进行程序设计的能力,能够独立编写简单的程序。
2. 培养学生运用程序设计思维解决问题的能力,能够分析问题、设计算法并实现程序。
3. 提高学生调试程序、查找并解决问题的能力。
情感态度价值观目标:1. 激发学生对程序设计的兴趣和好奇心,培养其主动学习和探究的精神。
2. 培养学生良好的编程习惯,使其注重代码规范和程序质量。
3. 增强学生的团队合作意识,使其能够在小组合作中发挥个人优势,共同解决问题。
课程性质:本课程为程序设计基础课程,旨在帮助学生建立程序设计的基本概念,培养编程技能和逻辑思维能力。
学生特点:学生为初中年级,具备一定的逻辑思维能力,对新事物充满好奇,但注意力容易分散,需要激发兴趣和引导学习。
教学要求:注重理论与实践相结合,以案例教学为主,让学生在动手实践中掌握程序设计的基本方法和技能。
同时,关注学生的个体差异,因材施教,提高学生的编程能力和解决问题的能力。
通过本课程的学习,使学生能够具备进一步学习高级编程语言的基础。
二、教学内容1. 程序设计基本概念:程序、编程语言、算法等基本概念介绍。
2. 编程环境与工具:介绍编程环境及基本操作,如代码编辑器、编译器和调试器。
3. 基本语法:变量、数据类型、运算符、表达式等基础语法知识。
4. 控制结构:- 条件语句:if、if-else、switch等条件判断语句。
- 循环语句:for、while、do-while等循环语句。
5. 函数:函数定义、调用、参数传递等概念。
6. 数组与字符串:数组定义、使用,字符串操作方法。
7. 编程规范与习惯:代码缩进、注释、命名规范等。
8. 简单算法与应用:排序、查找等基础算法介绍及应用。
程序设计基础入门教程引言程序设计是计算机科学的核心领域之一,它涉及到使用编程语言来创建软件的过程。
对于初学者来说,掌握程序设计的基础概念和技能是进入这个领域的第一步。
本教程旨在为初学者提供一个简洁明了的入门指南,帮助他们理解程序设计的基本元素和开发流程。
第一部分:程序设计概述1.1 什么是程序设计程序设计是一种使用编程语言来解决特定问题的过程。
它涉及到算法的设计、数据结构的选择、以及代码的编写和测试。
1.2 程序设计的发展历程从早期的机器语言到现代的高级语言,程序设计已经经历了几十年的发展。
了解其历史有助于我们更好地理解当前的编程实践。
第二部分:编程语言基础2.1 编程语言的分类编程语言可以根据其特性分为多种类型,包括编译型语言(如C/C++)、解释型语言(如Python)和脚本语言(如JavaScript)。
2.2 选择编程语言选择编程语言时,需要考虑项目需求、开发效率、社区支持和学习曲线等因素。
第三部分:开发环境搭建3.1 代码编辑器介绍几种流行的代码编辑器,如Visual Studio Code、Sublime Text等,并说明它们的特点和使用方法。
3.2 编译器和解释器解释编译器和解释器的区别,以及它们在程序设计中的作用。
3.3 版本控制系统介绍版本控制系统(如Git)的重要性,以及如何使用它们来管理代码。
第四部分:基础语法和结构4.1 变量和数据类型介绍变量的概念,以及常见的数据类型,如整数、浮点数、字符串和布尔值。
4.2 控制结构讲解程序中的控制结构,包括条件语句(if-else)和循环语句(for、while)。
4.3 函数介绍函数的定义、参数传递和返回值的概念。
第五部分:数据结构简介5.1 数组和列表介绍数组和列表的基本概念,以及如何在程序中使用它们。
5.2 栈和队列解释栈和队列的特点,以及它们在程序设计中的应用。
5.3 哈希表简述哈希表的工作原理和优势。
第六部分:算法基础6.1 算法的重要性阐述算法在程序设计中的核心作用。
中国大学教学 2011年第12期10 吴文虎,清华大学计算机系教授。
我怎么讲好“程序设计基础”这门课吴文虎一、教育理念至关重要“程序设计基础”属于基础课。
实践告诉我,在信息化时代,在有了“人类通用智力工具”的条件下,用编程手段来解决人们遇到的各式各样问题的时候,需要一种新的思维方式——计算思维。
为了培养计算思维能力,课程重点放在讲思路,讲如何对问题进行抽象,还要介绍一些基础算法和数据结构。
当然,一些重要的语句及程序结构也需要讲解,但不宜多,更不宜喧宾夺主。
对问题进行符合逻辑的科学分析,找出解决问题的形式化方法,并抽象到数学层次上去,这是最基础和最具本质的教学目标。
学生如果没有这种能力是写不出程序来的。
我认为“干粮和猎枪”的比喻既形象又深刻。
课程再多如果不具内涵,充其量不过是大袋干粮。
一颗孕育着生命的种子,在雨露、阳光、营养物质的滋养下长成参天大树,根系、枝干和树叶作为有机的整体在发展,决非堆砌而成。
教学生在学知识和长技能的同时获得经验和感悟,形成科学的世界观和掌握科学的方法论,这是最为重要的基础,是真正的“猎枪”。
就像当年教我们的老师那样,通过言传身教,让学生在学习知识的同时,去体验和感悟做人和做学问的真谛,才是最为重要的。
这十年我把教书育人和我所承担的精品课建设任务结合起来,考虑通过课程的教学设计使学生在学科能力上、在思想方法上和在行为规范上能够有所长进。
在教学目标上写了如下3条:(1)借助程序设计的知识载体,传授基本问题的求解过程和基本思路;(2)建立算法意识,培养良好的思维习惯和求真务实的优良学风;(3)从学科方法论上打基础,培养计算思维能力和分析问题、解决问题的能力。
比如在上第一堂课时讲到“清零”。
这是针对绝大多数同学以当地最高分考入清华的现状,结合自身在清华50年的教学经验,给他们讲为什么先要摘掉光环,从零开始的道理。
继而向学生介绍科学的学习方法和怎样才能学得主动的经验。
针对计算机学科是实践性极强的学科,告诉学生“你不是听会的,也不是看会的,而是动脑动手自己上机练会的”。
再如,为了改变中国学生不敢发言、不愿提问题的现状,在课堂上我经常说:“你站起来发言,如果打分,先打99分,那1分仅只是对或错,完善或不完善的问题。
”谁站起来发言,我就让大家给他鼓掌。
鼓励学生敢于标新立异,只要发现学生有不同于我的新思路,我就请他上讲台,讲给大家听。
作风是训练出来的,是习得的。
我对同学们说:敬业精神是通过上课听讲、做作业和上机编写程序等每一个环节来培养的,需要“从我做起,从现在做起”。
纸上谈兵是兵家大忌,不是清华的学风。
行胜于言,实践才能收获真知灼见。
告诉学生理性思维和理性实践是我们的导学要求。
理性是创新的基础,不浮躁、不虚夸,求真务实是清华学风中最为重要的传家宝。
在课堂上我多次说过:“尽管我比你们大50岁,但我和你们在研究与讨论问题时是平等的。
讲错了,讲得不好,你帮我纠正,我还要谢谢你。
”作为教师要把学生当作自己的孩子,教书育人不仅要考虑现在,还要顾及长远。
一个“生物人”通过学校教育和社会教育成为一个既能生存又能发展的“社会人”,知识、能力和素养的综合提高是至关重要的。
专业能力(专业知识和专门技能)、方法能力(工作方法和学习方法)和社会能力(融入社会的行为规范和价值观念)三要素的整合是我们应该给学生打下的基础。
按照可持续发展的教育观,“程序设计基础”课程应处理好知识、能力和素质三者的辩证关系。
一个具有较强能力和良好素质的人必须掌握丰富的知识,程序设计基础领域的知识是由程序设计的基本概念和程序设计艺术(技巧)组成的,要掌握这些基本概念和设计艺术,必须立足于理性化的学习和实践。
对程序设计而言,编程能力是计算思维和技能化知识的综合体现;只记住若干语句而不会解决实际问题,不能说具备了编程能力。
计算思维是否正确,必须通过实践检验。
因此上机让程序调试通过且能正确运行,并得出预想的结果,是理性思维和理性实践相互结合的必不可少的过程。
事实证明,实践是编程能力赖以生长的土壤,也是这门课化难为易的“金钥匙”。
更为重要的是,这样的教学要求,有利于倡导理论联系实际的优良学风,对学生形成科学的唯物主义的世界观和脚踏实地实事求是的科学精神大有裨益。
素质教育是以尊重学生的主体作用、主动精神,注重开发人的潜能,形成人的健全人格为根本特征的教育。
在课程安排中怎样体现素质教育?我认为素质是知识和能力的升华,素质教育要求学生在学校里学会“怎样做人,怎样做事,怎样求知,怎样健体”。
虽然我们不是思想教育课,但是我们也可以在一些教学环节中发挥“教书育人”的作用。
比如在课程中,我们提出“养成良好的编程习惯”这个教学要求,强调程序的可读性和规范性,让学生在作业中严格遵守下述原则:程序构思要有说明,变量要注释,程序要符合规范,严谨、认真、一丝不苟。
把学生的敬业精神和良好的职业素养纳入日常的教学要求中来。
二、突破难点,切入点很重要教学是需要设计的,切入点很重要。
“兴趣是最好的老师”,在教学设计时要用心揣摩初学编程者的感受,认真研究难点究竟在哪儿,深入思考怎样做才能让学生感兴趣,而不被那些深奥晦涩的语句和语法弄得眼花缭乱,一头雾水,兴趣索然。
我就想:能不能打破原来的框架?教学设计要针对教学对象、教学目标、教学内容、教学策略、教学进度、教学评估等等来进行。
教学设计要有教学理念的指导,要采取先进的教学模式。
最重要的一个原则应该是要估计学生原有基础,还要符合学生的认知规律。
在20年前有关程序设计语言的教材,大多是翻译过来的,冗长难懂,被初学者视为“天书”;有的甚至就是某种语言使用说明书的翻版,让人望而生畏,望而却步。
引发兴趣是第一要素。
我认为好的教学设计应该有利于调动学习者的积极性,在设计每一章、每一节时都要做到激发兴趣,引人入胜。
比如,我在讲关系运算和逻辑运算符时就精心设计了两个例子。
第一个例子:清华附中有4位同学中的1位做了好事不留名,表扬信来了之后,校长问这4位是谁做的好事。
A说:不是我;B说:是C;C说:是D;D说:他说得不对。
已知3个人说的是真话,一个人说的是假话。
现在根据这些信息,编程找出做了好事的人。
学生对这个例子很感兴趣,急于想知道计算机怎么解?于是,我在教材中顺势引出如下4个方面的内容:(1)介绍关系运算与关系表达式;(2)介绍枚举法的解题思路;(3)为了枚举引出程序的循环结构;(4)为了判断和裁决引出程序的分支结构。
学生在学这段很基本又很重要的内容时觉得顺理成章,有的放矢,没有感到枯燥。
相反,觉得蛮有趣味。
接着我又举了第二个例子——疑案分析:某地刑警大队对ABCDEF 6个嫌疑人进行作案与否的排查,存在如下6条线索。
(1)A、B至少有1人作案;(2)A、E、F 3人中至少有2人参与作案;(3)A、D不可能是同案犯;(4)B、C 或同时作案,或与本案无关;(5)C、D中有且仅有1人作案;(6)如果D没有参与作案,则E也不可能参与作案。
请编程,找出作案人。
为了解这道题,就要研究逻辑运算符和逻辑表达式。
借这个题目讲怎样将上述6句话语,转换成逻辑表达式,并归纳写出破案综合判断条件。
之后为加深对枚举法的认识,给出用6重循环来枚举和判定6个人哪几个是案犯。
通过对这两个例题的分析,让学生掌握解题的重要一步是将人的想法转换成机器能够处理的表达式或操作步骤,要用关系运算符和逻辑运算符,写出数学运算式,此其一。
其二是用计算机解题往往需要从多种可能性中去寻找其中的一种或几种,因此,最容易想到的就是“枚举法”。
要用枚举法就会遇到大量的重复计算,自然而然地引出程序的循环结构。
其三是分支是计算思维的一个重要方式。
借这些例题就把设计程序结构的基本概念和方法教给了学生。
全部课程内容都采用了这种任务驱动的方式,引出基本概念和基本方法,再归纳总结上升为一般规律。
学生反映这种讲法符合他们的认知规律,十分爱听也容易听懂。
把实际问题形式化为机器能够处理的表达式对初学者来说是最为困难的,在课程中我们需要从这里切入,来教他们如何思考和用什么方法破题,并用例题和大量的习题来训练他们的这种思维能力。
三、以人为本,强化实践教育,最重要的是要唤醒学生的力量,培养其自我性、主动性、抽象的归纳力和理解力。
高级语言程序设计传统教法效果欠佳的主要原因是:过于注重语句语法,满脑子都是语句,却不能自主编出一个程序,使人感到乏味,难以调动学生学习的积极性。
怎样做才能唤醒学生的力量,提高学习的积极性,是该课能否成功的一个关键。
我认为,一方面要在教学的理念上下工夫,研究怎11样以人为本,怎样在每一个教学环节上都想方设法去调动学生的积极性;另一方面要加大上机编程解题的训练力度。
在计算机学科中,“构造性”和“能行性”是学科的最根本特征。
按照这个学科最根本特征的要求,需要加强基础理论的教育,由此强化学生“计算思维能力”的培养,而计算思维能力在较大程度上是以思维方式的数学化为支撑的。
在“程序设计基础”课程中如何培养学生的计算思维能力,加大抽象思维能力和逻辑思维方法的训练力度是我们教学研究的重点。
在实践中我们体会到计算思维不是只想不做,更不是纸上谈兵。
工具影响思维,人们依托计算机编程环境,对所要求解的问题进行分析研究,将其抽象成数学模型,想出算法或计算步骤,编程加以实现。
可行与否、正确与否都须在机器上进行验证。
因此,强化实践又是这门课所必需提倡的。
这里反映了理性思维和理性实践的辩证统一关系。
为了让学生明白本课程在人才培养计划中的地位和作用,我在课堂中通过介绍一些已毕业大学生和在校博士生的体会,告诉同学这门课是理工科学生的一门“看家本事”,打好程序设计基础,对用好计算机这一“人类通用智力工具”,意义重大。
只有掌握好信息处理工具才能发挥超凡的创造能力。
同时,我也把课程主旨和教学设计告诉学生,让他们一上课就对该怎么学习有思想准备。
我在课程教学中强调:能力,不等于不注重知识,具有较强能力和良好素质的人,必须掌握丰富的知识。
能力的培养与素质教育要部分地通过知识的传授来实施,能力和素质在许多场合下是通过知识表现出来的。
在课程中应该怎样传授涉及程序设计的知识?我们认为应该推崇以探索为本的学习,鼓励将知识型教学改进为研究型教学。
我们课堂上讲授的编程实例有多种思路和解法,鼓励学生百花齐放,各抒己见,标新立异。
在平时的习题上,也有一些属于没有固定解法的提高题,让学生去探索好的解法,有时还让他们在全体同学面前交流。
对于一些高手也给他们构造不同级别的探索空间,引导他们在世界大赛的氛围中学习实践,取得经验,提高能力。
对程序设计课而言,编程能力是计算思维和技能化知识的综合体现。
只记住若干语句而不会解决实际编程问题,谈不上有什么能力。
计算思维正确与否也必须经过实践的检验。
从编程这一特殊的课程要求看,要把知识运用的综合性、灵活性与探索性作为重要的内容,强调能力须以丰富的知识作为支撑,上机实践是既动手又动脑的过程,是编程能力赖以生长的土壤。