Tahun ini, VKontakte, dengan dukungan Promsvyazbank, meluncurkan program beasiswa
VK Fellowship untuk guru ilmu komputer. Bersama-sama, kami memilih 15 guru dari wilayah Rusia: pencipta kursus pemrograman hak cipta, guru sekolah, direktur pusat pendidikan berkelanjutan, dan pelatih yang mempersiapkan siswa untuk olimpiade pemrograman internasional. Mereka menerima beasiswa dari VKontakte dan Promsvyazbank dan sekarang berpartisipasi di sekolah lapangan kami.

Semua guru memiliki pengalaman yang luas dan merupakan penulis kursus mereka sendiri tentang dasar-dasar pemrograman. Dalam posting ini, kami meminta tiga orang untuk menjawab pertanyaan kami tentang pengajaran pemrograman dan ilmu komputer secara umum.
- Pertama, mari berkenalan. | Inessa Shuykova: Saya bekerja sebagai direktur dan guru ilmu komputer di GOAOU Center untuk Dukungan "Strategi" Anak-anak Berbakat di kota Lipetsk. Saya mengajar C ++ dan Pascal di kelas 6-11. |
 | Peter Kalinin: Saya tinggal dan bekerja di Nizhny Novgorod. Saya mengadakan kelas-kelas di Lyceum No. 40, atas dasar Lobachevsky UNN, dan juga dari jarak jauh, tanpa merujuk pada institusi pendidikan tertentu. Sebagian besar dalam Python, Pascal, C ++. Dengan beberapa anak saya belajar di Jawa, bahasa C # dan lebih eksotis. Sebagian besar dari mereka masuk kelas 9-11, tetapi beberapa sudah di kelas 4. |
 | Sergey Belyaev: Saya tinggal di Krasnoyarsk. Saya bekerja sebagai guru pendidikan tambahan di Istana Perintis Regional Krasnoyarsk. Ada banyak bahasa dalam karya ini - C ++, Pascal, Python, Basic, Java Script, Perl. Usia para siswa berbeda - biasanya dari 12 hingga 18 tahun. |
Tentang pengajaran pemrograman
- Bagaimana cara mengatur program pengajaran di sekolah?Inessa: Setiap siswa perlu diberikan keterampilan dasar dalam menggunakan produk perangkat lunak untuk keperluan umum, diajarkan kebersihan digital, pekerjaan yang aman di Internet dan dasar-dasar pemrograman. Untuk anak-anak dengan minat dan kemampuan yang relevan, tambahkan algoritma dan struktur data. Kursus pemrograman tingkat lanjut harus dilakukan dalam bentuk kursus khusus. Setiap siswa dalam pelajaran ilmu komputer harus dimasukkan dalam tim proyek untuk implementasi proyek TI sekolah.
Peter: Saya tidak menganggap diri saya sebagai spesialis dalam pendidikan massal anak sekolah di sekolah menengah, tetapi saya percaya bahwa pelatihan harus disesuaikan dengan kebutuhan anak sekolah. Siswa yang tertarik harus diberikan pengetahuan yang mendalam, sisanya memiliki ide-ide yang dangkal tentang pemrograman.
Sergey: Program umum dalam kerangka subjek ilmu komputer harus sama seperti sekarang: pemrograman secara dangkal dan untuk tujuan pendidikan. Kursus yang lebih bermakna adalah untuk kelas khusus dengan bias fisik dan matematika. Pelatihan kejuruan hanya masuk akal dalam kerangka pendidikan lanjutan.
- Masalah utama pemrograman pengajaran di Rusia? Bagaimana cara mengatasinya?Inessa: Dalam kerangka pendidikan umum, ilmu komputer dialokasikan sejumlah kecil jam (jika ini bukan kelas khusus) - itu bukan subjek utama yang perhatian substansial akan dibayarkan. Karena itu konsekuensinya - guru ilmu komputer tidak selalu profesional dalam mata pelajaran ini, dan bagi banyak anak sekolah, mata pelajaran ini dikaitkan dengan proses yang tidak begitu penting dan ditegakkan oleh sistem.
Solusinya bisa dengan memperkenalkan aturan hukum yang memungkinkan pendidikan tambahan untuk diambil sebagai disiplin dalam pendidikan umum. Anak-anak senang menghadiri kursus pemrograman di pusat-pusat pendidikan berkelanjutan. Kemampuan untuk memulai menguasai kursus sebagai hasil dari program pendidikan umum akan menarik perhatian lebih banyak siswa untuk menguasai keterampilan pemrograman.
Peter: Jika Anda tidak memperhitungkan berbagai masalah birokrasi, maka, mungkin, hal utama adalah pengetahuan yang sangat ketinggalan zaman (atau bahkan tidak adanya) sebagian besar guru.
Sergey: Saya pikir masalah pengajaran ilmu komputer dikombinasikan dengan masalah umum pendidikan di Rusia, dengan fakta bahwa profesi guru tidak bergengsi. Dan program pengajaran guru tidak terkecuali.
- Apakah ada baiknya mencoba pemrograman sebelum sekolah? Dalam bentuk apa itu layak diterapkan?Inessa: Sebelum sekolah, perlu untuk mengembangkan kemampuan matematika umum, minat membaca, motivasi untuk kognisi seperti itu. Dan saya menganggap tidak pantas memberi anak sesuatu yang mereka belum siap secara psikologis.
Peter: Saya tidak memiliki jawaban yang jelas, tetapi saya percaya bahwa mengembangkan game dan tugas dari arah programmer memiliki hak untuk ada. Sebagai contoh, saya membelikan putri saya yang berusia tiga tahun permainan "Taksi" dari Mosigra.
Sergey: Saya pikir terlalu dini untuk belajar pemrograman sebelum sekolah. Akan lebih baik sebelum itu untuk terlebih dahulu belajar membaca, menulis, dan berhitung.
- Ada pendapat umum bahwa pemrograman hari ini adalah keterampilan yang diperlukan seperti SIM dan bahasa Inggris. Apa yang kamu katakanInessa: Ya, benar! Bahkan jika Anda tidak akan memprogram di tempat kerja, maka memahami bagaimana program dan sistem informasi disusun akan memungkinkan Anda untuk merasa percaya diri dalam lingkungan digital di masa depan.
Peter: Sangat tidak setuju. Pertama, hak dan bahasa (yang terakhir, sedikit lebih rendah) dibutuhkan oleh 90% orang tidak hanya untuk pekerjaan, tetapi juga untuk kehidupan pribadi. Memprogram di luar pekerjaan membutuhkan sejumlah kecil orang, dan dalam sebagian besar kasus - hanya sebagai hobi. Di tempat kerja, pemrograman juga jauh dari yang diperlukan untuk semua orang - dalam hal ini tidak jauh berbeda dari SIM atau bahasa.
Sergey: Tentu saja tidak, kalau tidak banyak akan merasa tidak nyaman tanpa keterampilan yang diperlukan. Pemrograman adalah spesialisasi yang agak sempit, yang hanya sedikit dikuasai. Orang lebih sering belajar bahasa Inggris dan mengendarai mobil.
Tentang fitur belajar bahasa pemrograman
- Apa tugas pemrograman yang paling sulit dan menarik?Inessa: Saya pikir itu terutama tergantung pada ide tugas, dan bukan pada topiknya. Dengan kata lain, dari seberapa anggun dan indah ide yang melatarbelakangi tugas tersebut, seberapa lama Anda dapat mengagumi keanehan tugas atau ringannya gagasan yang menjadi dasar dan dibutuhkan untuk menempuh jalan yang sulit.
Peter: Hal yang paling menarik adalah tugas-tugas sulit yang memerlukan tampilan yang tidak biasa pada algoritma standar atau teori standar. Misalnya, tugas "K" berasal
dari sini.Sergey : Dipercayai bahwa topik yang paling sulit adalah rekursi, struktur data (terutama pohon segmen dan pohon Cartesian) dan teori grafik. Tentu saja, dalam topik apa pun bisa ada tugas-tugas sederhana. Seperti dalam topik sederhana apa pun dari bentuk "matematika sederhana", tidak mungkin ada matematika sederhana sama sekali, meskipun tanpa pemrograman. Oleh karena itu, semua ini cukup subyektif, tidak dapat diperdebatkan bahwa semua tugas dari salah satu topik tentu lebih rumit daripada yang lain. Bagi saya pribadi, masalah dari teori permainan tampaknya menjadi yang paling sulit, khususnya yang menggunakan metode minimax.
- Apakah mungkin untuk mulai belajar C ++, melewati Pascal dan Basic?Inessa: Ya, tentu saja mungkin. Konfirmasi adalah pengalaman saya dengan anak-anak.
Peter: Khususnya di C ++ - itu mungkin, tapi saya tidak merekomendasikannya. Saya akan merekomendasikan mengganti C ++ dengan Python. Pascal dan lebih dari itu, Basic jelas tidak diperlukan.
Sergey: Tentu saja. Saya sudah melakukan ini selama 15 tahun. Jika tujuan utamanya adalah untuk memperkenalkan siswa ke elemen pemrograman dalam waktu singkat, dan tidak sengaja mengajarkan pemrograman untuk melatih, maka Python lebih baik.
- Dalam urutan apa Anda perlu mulai belajar C ++ agar tidak tersesat di alam liar?Inessa: Saya menyarankan Anda untuk segera mulai dengan memecahkan masalah sederhana. Contoh dari kursus yang baik adalah
"Pengantar Pemrograman C ++" oleh Mikhail Gustakashin.
Peter: Saya percaya bahwa dalam bahasa apa pun Anda harus terlebih dahulu mempelajari hal-hal dasar yang memungkinkan Anda menulis program sederhana (variabel, jika, loop, array, string, bilangan real). Dengan mereka sudah mungkin untuk menyelesaikan hampir semua masalah Olimpiade. Sisanya - sesuai kebutuhan.
Sergey: Saya pribadi pergi ke bahasa itu sendiri hanya setelah empat pelajaran yang bertujuan membiasakan diri dengan pemrograman menggunakan contoh-contoh algoritma yang menarik - seperti permainan dan video dari kampanye tahunan "Code Hour". Kemudian saya memperkenalkan orang-orang tentang pro dan kontra dari profesi seorang programmer, termasuk pengalaman bertahun-tahun saya. Bahkan, bahasa pemrograman yang dipilih untuk studi tidak begitu mendasar, urutan topik akan selalu kurang lebih sama. Pengetahuan tentang sintaksis suatu bahasa bukanlah hal yang paling penting, setiap humanis dapat menguasainya. Yang paling penting adalah kemampuan untuk membuat algoritma dan menulis kode yang jelas dan bebas kesalahan.
- Bagaimana cara menulis kode C ++ yang jelas?Inessa: Bagi siswa, nama variabel yang benar, desain gaya adalah penting. Kode yang jelas adalah kode terstruktur yang dapat dibaca oleh orang lain di tim Anda.
Peter: Seperti dalam bahasa apa pun, membagi kode menjadi entitas yang masuk akal, variabel penamaan, dll. Tetapi di tingkat sekolah, hampir tidak ada yang dibutuhkan, maksimum adalah untuk membuat lekukan yang memadai.
Sergey : Ini sangat penting dalam rangka proyek yang sedang dikerjakan oleh sekelompok programmer. Terkadang Anda harus memahami program orang lain, dan untuk ini beberapa perjanjian harus diperhatikan. Tetapi bagaimanapun juga, ada prinsip-prinsip umum yang tidak mungkin bermakna dalam hal satu masalah. Saya hanya akan menyoroti beberapa:
- struktur program: unit logis harus dialokasikan dalam blok terpisah (indentasi dalam teks program, fungsi, perpustakaan);
- nama-nama variabel dan fungsi harus berbicara sendiri apa yang dikandungnya;
- Anda harus menggunakan komentar saat menjelaskan blok algoritma, setiap fungsi harus berisi spesifikasi lengkap parameter input dan nilai pengembalian.
- Bagaimana perasaan Anda tentang menggunakan Boost untuk tujuan pendidikan?Inessa: Saya tidak menggunakannya dalam pekerjaan
Peter: Pada prinsipnya, secara positif, tetapi ini tidak perlu di sekolah.
Sergey: Dalam pemrograman nyata, saya tidak menentang ekstensi ini. Tetapi saya mengajar anak-anak pemrograman olimpiade, dan di sana siswa tidak akan dapat menggunakannya, karena Boost tidak termasuk dalam kumpulan standar perpustakaan dari salah satu dari kompiler C ++ standar. Jadi, Anda harus puas dengan apa yang, misalnya, STL (Perpustakaan Template Standar).
- Apakah Anda memiliki resep yang berhasil untuk mempersiapkan siswa untuk pemrograman olimpiade?Inessa: Teori ilmu komputer ditambah dasar-dasar matematika diskrit dan metode matematika pengolahan data. Dan juga pelatihan konstan, dibangun ke dalam sistem.
Peter: Teori dasar, pemecahan masalah, memahami format Olimpiade, pengujian yang akurat.
Sergey: Saya pikir tidak hanya pengalaman, waktu, tetapi juga jiwa harus ditanamkan dalam pengajaran pemrograman anak sekolah. Hanya guru yang tertarik pada mata pelajaran yang mampu menarik minat siswa. Saat mengajar pemrograman, penting untuk memilih sekelompok siswa yang berbakat, dan dalam satu sekolah menengah itu sangat sulit dilakukan. Oleh karena itu, lebih efisien untuk bekerja di lembaga pendidikan tambahan, di mana dimungkinkan untuk bekerja dengan anak-anak dari berbagai sekolah
- Apakah ada sesuatu di program Anda yang membuatnya unik?Inessa: Momen kunci dalam teknik itu sendiri. Saya memimpin kelompok anak-anak yang dibentuk oleh tingkat pelatihan dan kemampuan, bukan berdasarkan usia. Pendidikan tidak hanya model guru-siswa, tetapi juga model siswa-siswa. Para penatua membantu yang lebih muda: mereka menganalisis masalah yang diselesaikan, memeriksa gaya kode untuk program penulisan, dan membantu guru. Di dalam kelas, lingkungan komunitas anak-anak dipertahankan - suasana untuk sukses, promosi, hasil. Kami melakukan acara yang bersifat olimpiade, pelatihan eksternal bersama, bersama, dengan sukacita.
Peter: Pertama, kelas diadakan sepenuhnya online, dimungkinkan untuk belajar jarak jauh dari mana saja di dunia. Kedua, tidak adanya rencana kalender, setiap siswa terlibat dengan langkahnya sendiri. Ketiga, perhatian untuk menguji dan menemukan bug dalam kode. Keempat, lisensi gratis untuk materi yang saya kembangkan.
Sergey: Pertama, penggunaan sumber daya penulis
"Programmer's School" . Kedua, penggunaan manual cetak hak cipta. Ketiga, semua materi teoretis disajikan dalam presentasi untuk menggambarkan materi program pendidikan dengan lebih jelas.

Tentang pendidikan mandiri
- Belajar mandiri dan pelatihan reguler. Bagaimana cara menggabungkannya dengan lebih baik?Inessa: Pelatihan dengan guru sesuai dengan skema klasik - musim gugur ini penting untuk menguasai markas, mengembangkan level, "berdiri di atas sayap". Ketika seorang anak menjadi pemenang hadiah, pemenang olimpiade serius adalah kelanjutan dari pelatihan klasik, proses pelatihan, sekolah lapangan, pendidikan mandiri (kursus jarak jauh, pelatihan reguler pribadi).
Peter: Gabungkan, misalnya, saya tahu. Anak-anak sekolah mempelajari sendiri bahan-bahannya, tetapi saya pribadi memeriksa solusi untuk masalah-masalah itu, ditambah para siswa selalu dapat berkonsultasi dengan saya jika ada sesuatu yang tidak jelas bagi mereka.
Sergey: Benar, pelatihan mandiri itu lebih baik digabungkan dengan pelatihan reguler. Ini memungkinkan Anda mempelajari subjek pemrograman lebih cepat, karena guru yang berbakat dapat membimbing siswa dengan benar ke arah yang benar, beri tahu apa, di mana, dan bagaimana.
- Mereka mengatakan bahwa pemrograman layak dipelajari hingga usia tertentu, dan usia ini kurang dari 30 tahun. Kemudian efisiensinya turun secara dramatis. Bagaimana perasaan Anda tentang batasan usia tersebut?Inessa: Tentu saja, akan menyenangkan untuk mempelajari semuanya sekaligus sampai usia 30, tetapi kehidupan berubah, pengetahuan meningkat, bahasa berkembang. Oleh karena itu, pelatihan terus menerus sepanjang hidup. Pemrograman olimpiade, yang membutuhkan kecepatan, konsentrasi psikologis, jam pelatihan - ini untuk kaum muda. Belajar memprogram setelah 30 tahun - saya tidak melihat masalah di sini jika ada motivasi dan pola pikir matematika.
Sergey: Pada dasarnya, saya setuju. Tapi mungkin ada pengecualian. Setelah 30 tahun, ada kesulitan tidak hanya dengan mempelajari sesuatu, tetapi dengan pemrograman itu sendiri. Tentu saja, ini terjadi dengan sangat lancar dan tidak ada batas yang jelas. Saya dulu bisa melakukan pemrograman selama 10 jam sehari, tapi sekarang - api. Oleh karena itu, saya secara sistematis berpindah dari pemrograman ke pengajaran pemrograman: Saya semakin sedikit memprogram dan mengajar lebih banyak.
- Bagaimana perasaan Anda tentang banyak program untuk programmer yang buka hari ini? Tidakkah Anda berpikir bahwa mereka memberikan pengetahuan yang terlalu dangkal?Inessa: Kursus perselisihan. Dalam proses seleksi mata kuliah, selalu perlu melihat kuliah pertama untuk mengkorelasikan tingkat Anda dan tingkat kursus, mengevaluasi kegunaan pengetahuan, dan sebagainya. Oleh karena itu, saya percaya bahwa seorang kenalan awal dengan kursus diperlukan.
Peter: Saya percaya ada kursus yang masuk akal dan dangkal. Plus, banyak tergantung pada siswa itu sendiri.
Sergey: Saya melihat tidak ada yang salah dengan fakta bahwa ada kursus yang hanya memberikan pengetahuan yang dangkal. Anak-anak hanya perlu membiasakan diri dengan subjek ini sebelum mendaftar di kursus serius yang bertujuan mengajarkan pemrograman profesional. Dan tidak mungkin ada banyak kursus profesional: tidak ada begitu banyak anak yang mampu belajar pemrograman serius, ini adalah arah yang agak sempit.
- Apa hal yang paling sulit bagi Anda selama pelatihan Anda sendiri? Tahapan apa yang bisa Anda pilih?Inessa: Tahap pertama adalah pengembangan awal, ketika tampaknya semuanya baru dan tidak jelas. Tahap kedua adalah studi mendalam tentang materi, ketika semuanya jatuh ke tempatnya. Pada tahap ini, konsultasi dengan rekan kerja adalah penting, dan jika mungkin, penyempurnaan materi yang diajarkan. Selain itu, saya menganggap penting untuk terus mengulang dalam proses pengajaran dan motivasi untuk mempelajari hal-hal baru.
Sergey: Jika Anda ingat bahwa itu tahun 1989, ketika tidak ada Internet, komputer di rumah, dan guru, dan hanya satu kalkulator yang dapat diprogram dengan instruksi, maka ya, ada kesulitan tertentu. Tetapi saya masih bisa menguasai prinsip-prinsip dasar pemrograman. Lalu aku duduk di kelas sembilan. Ini adalah tahap pertama.
Tahap selanjutnya adalah pelatihan dalam rangka KUHAP kelas 10-11 pada komputer tanpa hard drive. Tapi kemudian dengan keyboard, monitor (yang merupakan TV hitam putih) dan seorang guru. Kemudian saya belajar Basic dan Pascal. Lebih jauh di universitas, kemampuan dan pengetahuan saya di bidang pemrograman sangat berkembang. Kami mempelajari C ++, Lisp, Prolog, dan Assembler. Dan sejak tahun kelima saya mulai mengajar diri sendiri, mulai mengajar Pascal ke anak-anak sekolah.
Tahap signifikan berikutnya dalam hidup saya terhubung dengan pengembangan saya arah pemrograman web dalam membangun situs web. Langkah ini, mungkin, mengubah hidup saya terbalik dan menarik banyak majikan kepada saya, dari siapa saya masih melawan :)
Hanya pada tahun 2003 saya menjadi tertarik pada pemrograman Olympiad dan beralih untuk mengajar ini kepada anak-anak sekolah.
- Kesalahan apa yang Anda lakukan selama pelatihan Anda sendiri? Apa yang bisa Anda beri tahu dalam hal ini?Inessa: Kesalahan dalam proses pembelajaran - upaya untuk menutupi informasi yang berbeda, sejumlah informasi berkualitas buruk. Saya menyarankan Anda untuk menggunakan kursus berkualitas tinggi dengan ulasan bagus, rekomendasi dari rekan-rekan mereka. Penting juga untuk menyisihkan waktu untuk pelatihan.
Sergey: Mungkin kesalahan utama saya adalah pilihan alat pemrograman yang salah untuk membuat situs web. Saya masih menggunakan teknologi dari Microsoft: Windows + IIS + ASP + MSSQL. Semua perkembangan tidak hanya membutuhkan lisensi, tetapi juga sumber daya komputasi yang besar. Jauh lebih baik untuk membangun perangkat lunak bebas. Saat itu, dan sekarang masih relevan untuk membuat program dan mengembangkan situs untuk Unix menggunakan Apache + PHP + MYSQL.