“绝对不需要Pascal,尤其是Basic,”:对体育编程培训师的采访

今年,VKontakte在Promsvyazbank的支持下,为计算机科学教师启动了VK奖学金计划。 我们总共选出了来自俄罗斯地区的15位老师:受版权保护的编程课程的创建者,学校老师,继续教育中心的负责人以及为学生准备国际奥林匹克竞赛的培训师。 他们获得了VKontakte和Promsvyazbank的奖学金,现在参加了我们的现场学校。



所有的老师都有丰富的经验,并且都是他们自己的编程基础课程的作者。 在这篇文章中,我们请三位研究员回答有关教学编程和计算机科学的一般问题。

-首先,让我们结识。

Inessa Shuykova:我在利佩茨克市GOAOU支持天才儿童“策略”中心的计算机科学主任和老师中工作。 我教6-11年级的C ++和Pascal。
彼得·卡里宁(Peter Kalinin):我在下诺夫哥罗德生活和工作。 我在Lobachevsky UNN的基础上,在第40号学习场所上课,并且在偏远地区,不参考特定的教育机构。 大多数情况下使用Python,Pascal,C ++。 我和一些孩子一起学习Java,C#和更多外来语言。 他们中的大多数人都读到9-11年级,但有些人已经上了4年级。
Sergey Belyaev:我住在克拉斯诺亚尔斯克。 我是克拉斯诺亚尔斯克地区先驱宫殿的一名继续教育老师。 工作中有多种语言-C ++,Pascal,Python,Basic,Java Script,Perl。 学生的年龄有所不同-通常为12至18岁。

关于教学程序设计


-如何在学校组织教学计划?

Inessa:每个学生都需要掌握使用通用软件产品的基本技能,数字卫生教育,互联网上的安全工作以及编程的基础知识。 对于具有相关兴趣和能力的孩子,请添加算法和数据结构。 高级编程课程应以特殊课程的形式进行。 每个参加计算机科学课程的学生都应包括在项目团队中,以实施学校的IT项目。

彼得:我认为自己并不是专门从事中学学童大众教育的专家,但是我认为培训应该适合学童的需求。 有兴趣的学生应该被给予深入的知识,其余的人对编程有足够的肤浅的想法。

谢尔盖:计算机科学领域内的通用程序应该与现在的程序相同:表面编程和用于教育目的。 一门更有意义的课程是针对具有物理和数学偏见的专业课。 职业培训只有在继续教育的框架内才是合理的。

-俄罗斯教学编程的主要问题? 如何解决?

Inessa:通识教育的框架内,计算机科学被分配了少量的时间(如果不是专业课程的话)-它不是要引起实质性关注的主要主题。 因此,结果是-计算机科学教师在该学科上并不总是专业的,并且对于许多学童来说,该学科与一个过程无关紧要,并且该过程由系统执行。

解决方案可以是引入法治,允许将额外教育作为通识教育学科考虑在内。 孩子们很高兴在继续教育中心参加编程课程。 由于通识教育课程而引发的对课程的掌握能力,将引起更多学生对掌握编程技能的关注。

彼得:如果您不考虑各种官僚主义问题,那么最主要的问题可能就是大多数教师过时的知识(或缺乏知识)。

谢尔盖(Sergey):我认为计算机科学教学的问题与俄罗斯的一般教育问题结合在一起,而教学专业并不享有盛誉。 教师教学编程也不例外。

-值得在放学前尝试编程吗? 什么样的形式值得实施?

Inessa:在上学之前,有必要培养一般的数学能力,对阅读的兴趣和对认知的兴趣。 而且我认为给孩子一些心理上没有准备好的东西是不合适的。

彼得:我没有一个明确的答案,但我相信开发游戏和程序员指导的任务是存在的权利。 例如,我从Mosigra购买了三岁的女儿“ Taxi”游戏。

谢尔盖:我认为现在放学之前学习编程还为时过早。 在那之前先学会阅读,书写和计数会非常不错。

-普遍认为,当今的编程与驾驶执照和英语一样,是必不可少的技能。 你说什么

Inessa:是的,是的! 即使您不会在工作中编程,但了解程序和信息系统的安排将使您对未来的数字环境充满信心。

彼得:非常不同意。 首先,90%的人不仅需要工作和生活,而且还需要使用权利和语言(后者的程度略低)。 在工作之外进行编程需要相对较少的人员,并且在大多数情况下,这只是一种业余爱好。 在工作中,编程也不是每个人都需要的,因为它与驾驶执照或语言没有太大区别。

谢尔盖:当然不是,否则,如果没有必要的技能,很多人会感到不舒服。 编程是一个相当狭窄的专业,只有几个大师。 人们会经常学习英语,并且会开车。

关于学习编程语言的功能


-最困难和最有趣的编程任务是什么?

Inessa:我认为这主要取决于任务的想法,而不取决于主题。 换句话说,从任务背后的想法多么优雅和优美的角度来看,您可以花多长时间欣赏一下任务的不寻常之处或作为艰苦道路基础和要求的想法的轻巧程度。

彼得:最有趣的是棘手的任务,需要对标准算法或标准理论有不同寻常的了解。 例如,任务“ K” 来自此处。

谢尔盖(Sergey) :人们认为最困难的话题是递归,数据结构(尤其是分段树和笛卡尔树)和图论。 当然,在任何主题中都可以有简单的任务。 就像任何以“简单数学”形式出现的简单主题一样,即使没有编程,也根本不可能有简单数学。 因此,所有这些都是很主观的,不能争辩一个主题的所有任务必然比其他任何任务都要复杂。 就我个人而言,博弈论中的问题似乎是最困难的,尤其是那些使用极小极大方法的问题。

-是否可以绕过Pascal和Basic开始学习C ++?

Inessa:是的,绝对有可能。 确认是我对孩子的经历。

彼得:特别是在C ++中-可以,但是我不建议这样做。 我建议用Python替换C ++。 Pascal甚至更多,所以Basic绝对不是必需的。

谢尔盖:当然可以。 我已经做了15年了。 如果主要目标是在短时间内向学生介绍编程元素,而不是有目的地教编程培训,那么Python会更好。

-您需要以什么顺序开始学习C ++,以免迷路?

Inessa:我建议您立即着手解决简单的问题。 Mikhail Gustakashin撰写的“ C ++编程简介”就是一个很好的课程的例子。

彼得:我相信,无论使用哪种语言,您都必须首先学习使您能够编写简单程序(变量,if,循环,数组,字符串,实数)的基本知识。 有了它们,几乎可以解决任何奥林匹克问题。 其余的-根据需要。

谢尔盖(Sergey):我个人仅在学习了四门课程之后,才开始使用该语言本身,这些课程旨在通过迷人的算法示例使自己熟悉编程,例如年度活动“代码小时”中的游戏和视频。 然后,我向大家介绍程序员职业的利弊,包括我多年的经验。 实际上,选择用于学习的编程语言并不是那么基本;主题的顺序将始终大致相同。 了解语言的语法并不是最重要的;任何人文主义者都可以掌握它。 最重要的是能够对清晰,无错误的代码进行算法处理和编写。

-如何编写清晰的C ++代码?

Inessa:对于学生而言,正确的变量名称,样式设计很重要。 清晰代码是结构化的代码,您团队中的其他人可以读取。

彼得:与任何语言一样,将代码划分为合理的实体,命名变量等。 但是在学校一级,几乎不需要这一切,最大的做法是提供足够的缩进。

Sergey :这在一组程序员正在从事的项目框架中尤其重要。 有时您必须了解其他人的程序,为此必须遵守一些协议。 但是,无论如何,总的原则在一个问题上不太有意义。 我将仅强调一些:

  • 程序结构:逻辑单元必须分配在单独的块中(程序,函数,库的文本中的缩进);
  • 变量和函数的名称必须自己说明它们包含的内容;
  • 在描述算法块时,您绝对应该使用注释,每个函数必须包含输入参数和返回值的完整规范。

-您如何将Boost用于教育目的?

Inessa:我不在工作中使用它

彼得:原则上是积极的,但这在学校是没有必要的。

Sergey:在实际编程中,我对此扩展没有任何要求。 但是我教儿童奥林匹克编程,那里的学生将无法使用它,因为Boost没有包含在任何标准C ++编译器的标准库中。 因此,您必须对STL(标准模板库)之类的东西满意。

-您是否有成功的秘诀来准备学生进行奥林匹克竞赛的编程?

Inessa:计算机科学理论,以及离散数学和数据处理数学方法的基础。 并不断进行培训,将其内置到系统中。

彼得:基础理论,解决问题,了解奥运会的形式,准确的测试。

谢尔盖:我认为不仅应该在经验,时间上而且应该在学习小学生编程方面投入精力。 只有对这个学科感兴趣的老师才能使学生感兴趣。 在教授程序设计时,选择一组有才华的学生很重要,而且在一所中学里很难做到。 因此,在有可能与来自各个学校的孩子一起工作的额外教育机构中工作的效率更高。

-您的程序中有什么使其与众不同?

Inessa:技术本身的关键时刻。 我领导的儿童群体是由训练水平和能力而非年龄构成的。 教育不仅是师生模式,还是学生学生模式。 长者会帮助年轻的孩子:他们分析解决的问题,检查编写程序的代码样式,并帮助老师。 在教室中,维护了儿童社区的环境-成功,提升和取得成果的心情。 我们进行奥林匹克运动会,一起进行外部训练,一起欢乐。

彼得:首先,课程完全在线进行,可以在世界任何地方进行远程学习。 其次,由于缺乏日历计划,每个学生都按照自己的节奏进行工作。 第三,注意测试和发现代码中的错误。 第四,免费获得我开发的材料的许可证。

谢尔盖:首先,使用作者的资源“程序员学校” 。 其次,使用版权印刷手册。 第三,所有的理论材料都在演示文稿中介绍,以更清楚地说明教育计划的材料。



关于自我教育


-自学和定期培训。 如何更好地结合?

Inessa:按照经典计划对老师进行培训-今年秋天对于掌握基础,发展水平“立于不败”非常重要。 当孩子成为获奖者时,严重奥林匹克竞赛的获胜者是经典训练,训练过程,野外学校,自我教育(远程课程,个人定期训练)的延续。

彼得:结合,例如,我知道。 小学生自己学习材料,但是我亲自检查问题的解决方案,如果他们不清楚某些问题,他们可以随时与我联系。

谢尔盖:是的,自我训练最好与常规训练结合使用。 这使您可以更快地学习编程主题,因为有才华的老师可以正确地指导学生正确的方向,告诉他什么,在哪里以及如何做。

-他们说编程是值得学习的,直到一定年龄,而这个年龄还不到30岁。 然后效率急剧下降。 您如何看待这种年龄限制?

Inessa:当然,一次学习所有知识直到30岁都是很好的,但是生活会改变,知识会提高,语言也会发展。 因此,培训是终生不间断的。 奥林匹克编程,这需要速度,心理专注度和训练时间-这是针对年轻人的。 30年后学习编程-如果有动力和数学思维,我在这里看不到任何问题。

谢尔盖:基本上,我同意。 但是也许有例外。 30年后,不仅学习困难,而且编程本身也遇到困难。 当然,这种情况非常顺利,没有明确的边界。 我过去每天可以进行10个小时的编程,但是现在-火了。 因此,我系统地从编程转向教学编程:我编程越来越少,教学越来越多。

-您对今天开设的许多面向程序员的课程感觉如何? 您不认为他们提供的知识太肤浅了吗?

Inessa:不和谐的历程 。 在课程选择过程中,始终值得一看第一堂课,以使您的水平与课程水平相关联,评估知识的实用性,等等。 因此,我认为需要对课程有初步的了解。

彼得:我相信这里有明智而肤浅的课程。 另外,很大程度上取决于学生本人。

谢尔盖(Sergey):我发现有些课程只提供肤浅的知识,这没有错。 在参加旨在教授专业程序设计的严肃课程之前,孩子们只需要对此主题有所了解即可。 而且没有太多的专业课程:根本没有那么多能干的孩子学习认真的编程,这是一个相当狭窄的方向。

-在您自己的培训期间,最困难的事情是什么? 您可以挑出哪些阶段?

Inessa:第一个阶段是初步发展,当时一切似乎都是新事物,而且晦涩难懂。 第二阶段是对材料的深入研究,一切都准备就绪。 在此阶段,与同事进行协商很重要,如果可能的话,还需要完善所讲授的材料。 此外,我认为在教学和学习新事物的动机中不断重复也是很重要的。

谢尔盖:如果您回想起是1989年,当时没有互联网,家用计算机和教师,只有一个带有指令的可编程计算器,那么是的,这里有一定的困难。 但是我仍然能够掌握编程的基本原理。 然后我在九年级。 这是第一阶段。

下一阶段是在没有硬盘驱动器的计算机上的《刑事诉讼法》框架下进行10-11年级的培训。 但随后有了键盘,显示器(这是一台黑白电视)和一名老师。 然后我学习了Basic和Pascal。 在大学里,我在编程领域的能力和知识大大扩展了。 我们研究了C ++,Lisp,Prolog和Assembler。 从第五年起,我开始自学,开始向学童教帕斯卡。

我人生中的下一个重要阶段是与网站建设中Web编程方向的发展有关。 也许这一步使我的生活颠倒了,吸引了许多雇主加入我的行列,但我仍在与他们抗衡:)

仅在2003年,我对奥林匹克编程产生了兴趣,并转而将其教授给小学生。

-您在自己的训练中犯了什么错误? 您在这方面有什么建议?

Inessa:学习过程中的错误-试图涵盖不同的信息,一定数量的劣质信息。 我建议您使用高质量的课程,并给予良好的评价,这是同事们的建议。 明确预留培训时间也很重要。

谢尔盖:也许我的主要错误是用于创建网站的编程工具选择错误。 我仍然使用Microsoft的技术:Windows + IIS + ASP + MSSQL。 所有的发展不仅需要许可证,还需要大量的计算资源。 建立在自由软件上要好得多。 到那时,使用Apache + PHP + MYSQL为Unix创建程序和开发站点仍然很重要。

Source: https://habr.com/ru/post/zh-CN433434/


All Articles