Ketika saya masih di perguruan tinggi, saya dulu menjadi tutor untuk kursus pemrograman intro di antara kursus lainnya. Masalah yang Anda gambarkan adalah tidak biasa. Bergantung pada apa peran spesifik Anda, Anda mungkin memiliki pendekatan berbeda yang ingin Anda ambil.
Pertama, jika ini adalah masalah luas yang mempengaruhi bagian penting dari siswa di kelas, jika Anda memiliki akses untuk melakukannya, saya akan mendekati profesor yang mengajar kursus dengan umpan balik spesifik tentang konsep apa yang siswa gagal pahami, sehingga ia atau dia dapat memasukkan tinjauan tambahan atas materi tersebut ketika muncul kembali dalam istilah tersebut, atau meningkatkan kurikulum untuk istilah-istilah masa depan.
Jika Anda mengajar bagian diskusi untuk kursus di samping waktu praktikum Anda, itu akan menjadi saat yang tepat untuk menguraikan hal-hal yang membingungkan dalam perkuliahan dan membantu menjadikannya lebih konkret dan memastikan fundamental semua dipahami.
Jika satu-satunya waktu Anda bekerja dengan siswa-siswa ini adalah selama waktu Anda di lab bimbingan belajar, Anda masih dapat menggunakan waktu ini untuk mengajar para siswa baik satu per satu, atau beberapa sekaligus, blok bangunan konseptual yang mereka butuhkan untuk memahami dan menyelesaikan pekerjaan rumah mereka.
Mereka mungkin merasa sangat tersesat di kelas sehingga mereka bahkan tidak tahu harus berhenti di mana dan bertanya. Jika itu masalahnya, kembali ke dasar dengan mereka. Di mana mereka dalam kursus ketika mereka terakhir mengerti apa yang sedang terjadi? Jika mereka tidak yakin, atau "tidak pernah" mengerti, Anda mungkin harus kembali ke awal untuk menjelaskan hello world, mengajari mereka hal-hal seperti apa variabelnya, bagaimana komputer mengambil daftar "instruksi" mereka dan mencoba untuk lakukan secara berurutan, tetapi komputer tidak se "pintar" seperti kami sehingga Anda harus sangat harfiah dan mengatakan hal-hal yang tepat untuk dipahami komputer, dll.
Itu sebenarnya adalah titik perjuangan dan frustrasi yang sering saya lihat di kursus pemrograman non-jurusan. Siswa menulis beberapa kode. Tampaknya "tentang" benar, tetapi kemudian mereka pergi untuk mengkompilasinya dan itu memberikan kesalahan, kesalahan yang sangat samar. Dan mereka tidak tahu apa yang salah dengan itu. Dan menatap kode mereka selama berjam-jam. Kemudian akhirnya mencari tahu itu adalah sesuatu yang tampaknya sepele, seperti titik koma yang hilang, atau penyangga di tempat yang salah. Kemudian mereka mengkompilasinya lagi, dan masih ada kesalahan, itu sesuatu yang lain. Mereka mengeja nama variabel secara berbeda saat kedua kali menggunakannya. Dan seterusnya. Jadi mereka meminta bantuan teman, tutor, atau seseorang, dan mereka dapat menjawab dengan keras kepala, "oh, tambahkan saja di sana dan nanti akan berhasil." Jadi pengalaman mereka adalah pemrograman sedikit "misterius"
Itu adalah area sebagai tutor, di mana Anda memiliki banyak ruang untuk membantu. Tergantung pada tingkat frustrasi mereka, saya mungkin memiliki pendekatan berbeda untuk membantu mereka mencari tahu mengapa kode mereka tidak berfungsi. Jika mereka mendapatkannya, saya mungkin memberi mereka petunjuk dan mencoba membantu mereka mencari tahu sendiri. Tetapi jika mereka hanya pada ujung tali mereka tentang siap untuk menyerah frustrasi, saya akan sering memberi mereka beberapa jawaban freebie, dan kemudian mencoba untuk setidaknya bertanya kepada mereka pertanyaan seperti "apakah Anda mengerti mengapa perubahan ini memperbaiki program Anda ? "
Untuk beberapa siswa, terutama non-jurusan, mereka mungkin tidak memiliki perhatian metodis terhadap detail yang diperlukan untuk menjadi programmer yang baik atau menikmati pemrograman. Anda dapat menahan mereka melalui strategi untuk membantu mereka memperhatikan detail, dan cukup metodis untuk menyelesaikan masalah bahkan jika itu merupakan tantangan bagi mereka.
Tetapi anal-retention tentang para siswa mengindentifikasi kode mereka "dengan benar" - begitu sering, programmer pemula membuat masalah dengan bersarang dan ruang lingkup karena mereka memiliki kawat gigi yang tidak cocok atau sejenisnya karena mereka tidak memperhatikan apa yang bersarang di bawah apa. Beri mereka daftar periksa "hal-hal untuk memeriksa kapan program Anda tidak dapat dikompilasi", seperti indentasi semua kode dengan benar dan pastikan kawat gigi cocok, pastikan semua garis diakhiri dengan titik koma, terutama di sekitar nomor baris tempat kesalahan pertama muncul Facebook, dll.
Ajari mereka untuk kompilasi lebih awal dan kompilasi sering. Tulis kode kerangka minimum (katakanlah, hello world), kompilasi / tes. Tambahkan beberapa baris, kompilasi lagi. Jauh lebih mudah untuk menemukan kesalahan jika Anda hanya melihat ember kecil perubahan bukan ember besar.
Bantu mereka belajar cara memecah masalah menjadi masalah kecil yang bisa dipecahkan. Ini adalah hal yang sama yang kita lakukan sebagai programmer profesional yang memecahkan masalah yang jauh lebih sulit yang tidak kita ketahui caranya. Anda terus memecahnya menjadi potongan-potongan sampai Anda mendapatkan sesuatu yang Anda tahu bagaimana menyelesaikannya atau dapat melakukan riset untuk belajar bagaimana menyelesaikannya. "Langkah apa yang perlu Anda ambil untuk mendapatkan solusi yang berhasil?" Nah, pertama Anda perlu beberapa kode kerangka (hello world). Apakah Anda tahu bagaimana melakukan hal itu? Ya, bagus, jadi ketika kita selesai berbicara, Anda bisa mulai dengan melakukan itu! Maka perlu membaca file sebagai input. Apakah Anda ingat pernah membaca tentang itu di bab 4? Tidak juga? Mengapa kamu tidak pergi melihat-lihat itu setelah kamu mendapatkan hello world running, dan lihat seberapa jauh kamu bisa mendapatkan itu bekerja dan kemudian panggil aku kembali dan aku Aku akan membantumu lagi ketika kau terjebak pada itu. Beberapa kali pertama Anda mungkin hanya perlu membuat daftar bernomor untuk mereka dari langkah-langkah yang diperlukan untuk menyelesaikan masalah, sehingga mereka dapat belajar dari contoh cara menguraikan masalah.
Jika mereka mendapatkan beberapa tetapi tidak semua materi di kelas, dorong mereka untuk mengajukan pertanyaan di kelas, karena sembilan dari sepuluh, mereka bukan satu-satunya siswa yang tidak mengerti, dan profesor mungkin hanya menyelimuti sesuatu yang penting.
Jika mereka menghabiskan "berjam-jam" menatap satu bug tetapi tidak mengetahuinya, itu buang-buang waktu, mereka tidak belajar banyak dari itu. Seringkali bug adalah masalah wawasan, dan ini masalah dengan wawasan yang tepat untuk menyelesaikannya, dan mereka mungkin tidak memiliki keahlian untuk jenis-jenis masalah tersebut. Sarankan pendekatan umum lain yang harus diambil ketika mereka macet: minta bantuan teman lain di kelas (kenalilah beberapa teman sekelas jika perlu), mulai pekerjaan rumah mereka jauh-jauh hari agar mereka punya waktu untuk berhenti, dan kemudian datang ke laboratorium guru dan ajukan pertanyaan selama jam buka, atau buka jam kantor profesor. Jika mereka terbiasa menjejalkan, yang bekerja dengan baik untuk subjek menghafal, mereka akan membentur dinding frustrasi ketika mereka dihadapkan dengan pemrograman yang lebih tentang pemecahan masalah daripada menghafal. Tunjukkan pada mereka cara mencari contoh sintaks dari buku teks, stackoverflow, dll. Dorong mereka untuk mengirim pertanyaan di forum pertanyaan kelas privat jika ada.
Ajari mereka cara mempersempit tempat kode berhenti bekerja. Komentari hal-hal sampai Anda kembali ke sesuatu yang berjalan, dan kemudian perlahan-lahan tambahkan kembali sampai Anda mendapatkan segfault lagi.
Banyak dari ide-ide ini dapat diubah menjadi handout jika mereka banyak muncul. Strategi biasanya merupakan bagian dari profesor yang menyeleweng - mereka menghabiskan waktu mereka di sintaks, semantik bagaimana menulis loop, array, i / o, dll. Tapi tidak cukup waktu dihabiskan untuk "apa yang saya lakukan ketika saya mencoba untuk menjalankan kode saya dan itu tidak mengkompilasi atau crash pada saya? "
Ketika datang ke hal-hal konseptual, terutama fundamental, seperti "apa itu variabel", atau "apa itu loop?" tidak memahami yang akan mencegah mereka untuk bisa mengikuti sisa kursus. Dalam kursus berbasis kuliah, profesor mungkin tidak punya waktu untuk menjawab setiap pertanyaan atau membantu bola lampu menyala untuk setiap siswa. Dan itulah bagian dari mengapa tutor sangat penting untuk belajar pemrograman. Mereka mungkin memerlukan instruksi individual dengan analogi tambahan untuk membuat topik tertentu menjadi konkret.
Karena Anda mengajar di C ++, saya akan membayangkan kelas muncul sebagai topik abstrak yang beberapa siswa berjuang untuk "dapatkan". Seringkali abstraksi kelas diajarkan dengan contoh-contoh yang berhubungan dengan beberapa objek dunia nyata acak, seperti "mesin ATM", dan analogi dibuat dengan objek dunia nyata. Anda mungkin memiliki variabel untuk melacak berapa banyak uang yang ada di dalamnya, Anda memiliki metode, yang seperti aturan yang memberitahu mesin atm bagaimana menanggapi kondisi tertentu, dll. Kadang-kadang satu analogi adalah yang "melekat" untuk orang tertentu , dan siswa lain memahami yang berbeda dengan lebih baik.
Jika memungkinkan, buatlah gambar untuk mereka. Seperti diagram urutan tentang apa yang terjadi dari waktu ke waktu untuk membantu mereka melihat gambaran besar dari apa yang kode mereka lakukan. Pengguna mengklik tombol ini. Maka program harus merespons dengan melakukan x, y, dan z. Gambar sebuah array seperti sekelompok PO Boxes di kantor pos yang masing-masing dapat menampung hanya satu nomor, dan pointer seperti panah menunjuk ke "alamat" di bagian depan kotak. Dll