スポーツプログラミングで最初になる方法:ITMO大学はその経験を共有しています。 パート2

ITMO大学が今年edXで開始した「コーディングコンテストの勝ち方:チャンピオンの秘密」 コースについてお話し続けています(記事の最初の部分はこちら )。



ACM ICPCのチャンピオンであるMaxim BuzdalovとPavel Krotkov、およびGoogle Code Jam for Womenの勝者であるDaria Yakovlevaとのコースの著者およびインストラクターとの会話の後半では、オリンピックの勝者が正しい態度を持っているか、創造的な解決策を見つけるスキルを開発する方法について話しますITMOユニバーシティチャンピオンズコースの恩恵を受けるのは誰ですか。





マイケル・ポラック/ Flickr / CC



態度対経験:心理学は勝利においてどのような役割を果たすか



マキシム・ブズダロフは、チーム(またはシングルプレイヤー競技の場合は参加者)の成功は、長時間の実践的なトレーニングによって得られる仕事の訓練と調整に依存すると考えています。参加者が多く訓練されるほど、結果は正しい気分またはその欠如に依存しなくなります。



「態度」が成功に重要な役割を果たすとは言いません。 チームのレベルが高いほど、参加者の知性が高くなり、自信を高め、「精神を高める」ことを目的とした自己欺methodsの方法をあまり行わない



-マキシム・ブズダロフ


しかし、マキシムによれば、参加者同士の互換性と個人の資質は非常に大きな役割を果たします。 同時に、ポジティブとネガティブの両方のこれらの資質のいくつかは、責任の意識から、最終的な競争でのみ現れることができます:チームが自分自身だけに責任を負う前に、そして最終的には大学全体または国を表します。 マキシムの個人的な経験からの例(2009 ACM ICPCチャンピオン):



もちろん、頭の中に組み込まれた「ファイティングスピリット」の存在は大いに役立ちます。たとえば、2009年のライバルであるTsinhua Universityチームは、最後の1時間で4などを決定し、2位になり、金メダルとタイトルを獲得しました。アジアのチャンピオン。 良い例...



...最後の1時間の開始から数分後に最初の9番目のタスクを通過し、残りの1時間は賢明なことを書く時間がなかったという事実がなければ、1位になりました。 確かに、私たちはもちろん、「あきらめません」でした。直前の4時間すべてで書き込みキューにタスクがあり、突然終了したという状況になっただけです。 10番目の問題の解決策を書きましたが、十分な時間がありませんでした



-マキシム・ブズダロフ






ACM ICPCの ITMO大学2016チーム:Adam Bardashevich、Anton Kovsharov、Andrey Stankevich(トレーナー)、Vladimir Smykalov



Pavel Krotkov氏は次のように述べています。プロのチームにとって、「勝利の告発」は背景に追いやられるかもしれませんが、オリンピックの初心者参加者はそれなしではできません。



私の経験では、(初心者にとって)主なことは依然として心理学とストレス耐性です。 アンドレイ・スタンケビッチは冗談めかして、トレーナーとしてのキャリアを伸ばすために、心理学者/精神科医の教育を受ける必要があると言った



-パベル・クロトコフ


ダリア・ヤコブレバは、競技の段階がすぐに起こらなかった場合、参加者は本当に「手を落とす」ことができます-しかし、心理的な方法ではなく、追加のトレーニングが最も問題に対処するのに役立ちます。 ただし、チームまたはその参加者のいずれかがプロセスに特別な関心を持っていない場合、競技開始前の良い気分と幸福は背景に消えます。



もちろん、問題を解決する喜びを享受していない人々は、賞品を受け取ることはありません、彼らは単にチャンスを持っていません



-マキシム・ブズダロフ


ライフハックとヒント



「プログラミングコンテストで勝つ方法:チャンピオンの秘密」コースの著者を招待して、olympiadプログラミングで役立つヒントやコツを共有しました。いくつかの大きなトピックがありました。



練習する



もう一度練習し、練習してください。 ライフハックの主な目的は、週末でも毎日1つの問題を解決し、1日を見逃さないことです。



-ダリア・ヤコブレバ


マキシム・ブズダロフとパベル・クロトコフは、絶え間ないトレーニングが問題解決の成功を達成するだけでなく、正しい思考方針を予測することも可能にすることに注目しています。 ただし、このような能力を開発するための1つのオンラインコースでは明らかに不十分です(学生がそれを修了するには、週に4-6時間かかります)-毎日問題を解決する必要があります(ところで、コースの著者は、自分で定期的なトレーニングを継続する方法についてのヒントを与えます)。



才能(または思考の方向の検索を優先するヒューリスティックの脳の微調整)は、非常に多くのタスクを解決する場合にのみ開発できます。 このトピックに関するコースが提供する負荷(4週間、1週間に1〜3回のオリンピアードタスク)は明らかに不十分です。 直観の開発のためには、さまざまな複雑さのオリンピアードの問題を長期間、定期的に(主観的に軽いものから主観的に過剰なものまで)解決する必要があります。



-マキシム・ブズダロフ


さまざまなアルゴリズムとアイデアを備えた1,000のタスクを見たとき、ソリューションを検索する際に進むべき方向を理解するのがはるかに簡単です。 この意味で、コースは基礎を築き、少なくとも最も基本的なトピックとタスクの種類を示すことができます。



[スポーツプログラミング]は依然として数学であり、著者が意図したものと根本的に異なる方法で問題を解決できることはめったにありません。 これも発生しますが、それを見るには、さまざまな問題を解決する経験が必要です。



-パベル・クロトコフ


ペアプログラミング



ポールからのもう1つのアドバイスは、ペアプログラミングを練習することです。 このアプローチにより、チームの時間を節約し、相乗効果を達成できます(チームメンバーは問題を個別に解決するのではなく、一緒に解決します)。



このような状況では、ソリューションに取り組んでいる「頭脳」の数が倍になり、ソリューションがより速く/より良く見えるはずです。



-パベル・クロトコフ


オリンピック中の戦術的決定



マキシム・ブズダロフは、厳しい締め切りの条件で「産業」プログラマーのチームの仕事に非常に適用可能なアドバイスを与えます(例えば、非常に短い時間でいくつかのよく知られているが些細ではないタスクを解決する必要がある場合):



5時間のチームコンテストがあるとします。 この場合、すべてのチームメンバーは、最初の1時間の終わりまでにすべての未解決のタスクを読む必要があります。 そうです。 したがって、1)すべての単純なタスクを見つけ、2)複雑な問題を同じ条件で議論できます。



この手法の拡張は、タスクが行として、参加者が列として表示されるプレートの形でマークアウトされた一枚の紙です。 セル内で、参加者はタスクの状態を読んだことに気づき、短いコメントも付けます(たとえば、「サブセットによる動的プログラミングのタスク」)。 解決された問題は取り消されます。 したがって、チームの現在の状態はチーム自体に表示されます



-マキシム・ブズダロフ


関連エリアの探索



マキシムからのもう1つのアドバイスは、創造的思考の開発に関するものです。絶え間ない練習(問題を解決するための特定の「パターン」を定めます)に加えて、箱の外で考えるように強制することが時々役立ちます。 この目標を達成するための最良の方法は、関連分野を「研究」することです-明白なものから比較的エキゾチックなものまで。



「独創的な問題を解決する理論」と呼ばれる、そのような「半オリンピック」規律があります。 私はその分野の専門家であるとは言えません-むしろ、この分野で直感的に仕事をしていますが、思考プロセスの最適化と非標準化に役立ついくつかの高レベルのアイデアを提供します。



かつて、数学のオリンピックは私を大いに助けてくれました。 それらでは、第一に、タスクについて考えるための多種多様な方法、そして第二に、彼らはリストから一方向ではなく、むしろこれらの方法の「凸の組み合わせ」で考えることを教えます。 したがって、どこかで発明または見られた新しいアイデアはそれぞれ、1つのアイデアではなく、新しい知識と既に知っていることの混成から生じる無数のアイデアによって問題を解決する能力を高めます。



選択した主題分野(コンピューターサイエンスを想定)だけでなく、他のさまざまな分野(生物学など)でも多くを読んでください。 この知識は、他の分野からのアイデアと知識を使用して、いくつかの分野の問題の解決策を見つけるのに役立ちます-それにより、根本的な新しい見解で世界に衝撃を与えます。



-マキシム・ブズダロフ




ロバート・ゴーリー/ Flickr / CC



オリンピアードの勝者はどのように休むのか



毎日の練習、問題解決、関連する知識分野の勉強、大学での勉強-そのような要件は、オリンピックの参加者の生活の残りを完全に排除するようです。 マキシム、パベル、ダリアは私たちの疑念を払拭しました-しかし、残りのプログラミングチャンピオンの間、彼はコードを作成したがったことがわかりました。



共通点を強調しようとすると、ボードゲームは非常に人気があると思います。 しかし、概して、誰もが自分のやり方で休む



-パベル・クロトコフ


子供たちは、勝つために面白い戦略、戦術を考え出す必要があるボードゲームをするのが好きです。 また、プログラマー[オリンピアドニキ]は、野外活動(サッカー、バレーボール、フリスビー)が大好きです。 ハッスルを踊るのが好きな人がいます。 参加者は非常に多目的な性格であり、それぞれに興味があります



-ダリア・ヤコブレバ


オリンピアードの参加者は普通の人なので、趣味や趣味は他の人と同じです。 確かに、プログラミングは今や活動の領域として非常に大きく、プログラマーが趣味として...プログラミングと同じくらい自由にできるので、仕事とはまったく異なります。



そのため、オリンピックに参加したとき、趣味のプログラミングから、遺伝的アルゴリズム(後に科学活動の主流になりました)と音声処理を行いました。 そして私の10年以上の「通常の」趣味は、ギターを演奏し、音楽を作曲し、即興演奏をすることです



-マキシム・ブズダロフ


オリンピアードだけでなく:このコースの恩恵を受けるのは他の誰(将来のチャンピオンを除く)



コースの作成者は、登録者全員が近い将来にプログラミングチャンピオンシップに参加するとは限りません。 コースを受講した人の多くは、単に身近な分野で何か新しいことを学びたい、あるいは専門的なスキルを身につけてポートフォリオをより魅力的にしたかっただけです。



はい、コースはITプロフェッショナルに役立ちます。 彼は、プログラミング競技とは何か、それらに参加する方法、オリンピックの問題を解決する方法、使用する方法、問題解決スキルをさらに開発する方法について話します。 そして、これらすべてのアイデアをIT分野に適用して実装できます。



-ダリア・ヤコブレバ




コースの一部の学生とのフォーラムでのコミュニケーションは、私たちのコースの助けを借りて一部のITスペシャリストが、プログラミングが面白いと信じていることを取り戻したことを示しました。



さまざまなプログラムやサイトでの経験が示すように、多くのITプロフェッショナルは、プログラムのデータサイズが低下し始めるスケールとその対処方法を何らかの方法で理解するために、少なくとも計算の複雑さの基本的なコースを受講することをお勧めします。 このコースは(もちろん名前にかかわらず)そのような役割を果たす可能性があります



-マキシム・ブズダロフ


ITの巨人がオリンピックプログラマーに興味を持っている理由を説明するPavel Krotkov(Facebookでコースを教えるのと並行して働いています):



一方で、そのような[olympiad]タスクは、もちろん、「産業」プログラマーの日々の仕事とほとんど共通点がありません。 一方、大手IT企業(Google、Facebook-世界から)、Yandex-ロシアから、背景オリンピアードの人を雇うのが好きです。 さらに、これらの企業でのインタビューでさえ競争と多くの共通点を持っています。



そのようなインタビュー(競技会への参加成功の経験)に合格すると、候補者がストレスと限られた時間の条件で「考える」方法を知っていることを理解できるようになります。



一般的に、コース自体は日常の仕事には役立ちませんが、アルゴリズム/数学の分野にスペースを持っている人がより良い指向になるのを助けるかもしれません。 そして一般的に、競技への参加は、仕事が時々退屈になる場合に脳を「錆びさせない」のに役立ちます。



-パベル・クロトコフ


コースの 2番目のストリーム「プログラミングコンテストで勝つ方法:チャンピオンの秘密」は2017年3月6日に始まりますが、今すぐサインアップできます。 クラスは5週間続きます。トレーニングには、英語と最も人気のあるプログラミング言語(C ++、Java、Python)の知識が必要です。 無料でトレーニングを受けることができます(トレーニング証明書-必要な場合-49ドルかかります)。 コースの学生とオリンピアードの将来の受賞者の間であなたを待っています!



All Articles