Siapa yang bisa belajar memprogram? [Tutup]

17

Saya selalu ragu ketika berbicara dengan profesor tentang mencoba meningkatkan persentase orang yang lulus dengan gelar tipe CS dibandingkan dengan jumlah yang mulai berpikir itulah yang mereka inginkan. Di satu sisi saya benar-benar berpikir penting bagi para profesional untuk terlibat dan memberikan umpan balik ini, di sisi lain akan lebih baik jika lebih sedikit siswa sub-par yang berakhir dengan gelar CS.

Saya tidak berpikir setiap pikiran dibangun untuk bidang ini dan Anda harus menjadi murid seumur hidup yang baik. Anda harus memiliki kesabaran dan keterampilan pemecahan masalah tingkat tinggi hanya untuk melakukannya. Jika Anda memang memiliki jenis otak yang "benar", masalah-masalah sulit itulah yang mendorong Anda untuk melanjutkan. Jika Anda hanya mendapatkan daftar panjang masalah mudah Anda bosan sehingga orang-orang ini sebenarnya tidak pandai pekerjaan yang lebih berulang. Saya tidak perlu masuk ke semua detail ... jika Anda membaca ini, Anda mungkin tahu apa yang saya maksud.

Jadi pertanyaannya adalah: Bagaimana Anda menemukan keseimbangan program sarjana yang dapat diakses oleh cukup banyak orang untuk didanai dan dianggap berhasil tetapi juga tidak menghasilkan orang yang tidak benar-benar cocok untuk pekerjaan itu? Mungkin pertanyaan yang lebih baik adalah, metrik apa yang Anda gunakan untuk mengetahui apakah perubahan yang Anda buat dalam program sarjana membuatnya lebih baik? Saya tidak tahu bahwa tingkat kelulusan yang lebih tinggi adalah metrik yang baik. Dan tampaknya umpan balik yang bisa Anda coba tangkap bertahun-tahun kemudian tentang pekerjaan yang dimiliki lulusan akan terlalu jauh tertunda.

Saya telah bergumul dengan pertanyaan ini sejak lama, terutama karena saya rasa tidak ada jawaban. Tapi saya pikir saya akan meminta untuk melihat apakah ada yang tahu tentang penelitian yang sebenarnya telah dilakukan.

Tambahan: Saya baru-baru ini memiliki profesor yang sangat bijak mengingatkan saya bahwa tidak semua orang yang lulus dengan gelar CS bahkan ingin menjadi programmer penuh waktu begitu mereka benar-benar menemukan apa artinya itu. Tetapi, dengan pendidikan yang mereka terima, mereka mungkin bisa menjadi Manajer Proyek, Manajer, admin sistem yang hebat, dll. Saya pikir ini adalah poin yang sangat bagus yang saya pikir tidak perlu dipertimbangkan di sini. Ada persentase yang sangat tinggi dari orang-orang yang pada akhirnya tidak bekerja di bidang yang mereka ambil jurusan, CS bukan pengecualian untuk itu. Memiliki orang-orang tambahan membantu tidak hanya dalam anggaran untuk gelar tetapi juga untuk memperluas persentase non-programmer yang masih cukup tahu tentang hal itu untuk bekerja dengan programmer.

Beth Whitezel
sumber
@ Ayub- Terima kasih, itu poin yang bagus dan membuat saya merasa jauh lebih baik.
Beth Whitezel
2
@ pekerjaan: berbicara sebagai jurusan psikologi, sekarang pemrograman mesin NMR, saya bisa membuktikannya.
Matt Ellen

Jawaban:

33

Oke, berdasarkan permintaan populer ... Biarkan pasar bebas mengetahuinya. Anda tahu, 95% dari jurusan psikologi akhirnya melakukan sesuatu yang lain. Tidak semua orang dengan gelar CS / minor berakhir pemrograman, tetapi mereka membuat manajer, analis, manajer proyek lebih baik daripada mereka yang tidak. Jangan membawa beban dunia di pundak Anda. Gelar CS hanya selembar kertas. Mereka dengan gelar matematika, fisika, kimia, biologi terus menjadi programmer, dan tidak semua orang dengan gelar CS menjadi programmer. Tanpa jutaan anak yang bercita-cita menjadi pemain baseball terbaik, kami tidak akan memiliki bintang yang hebat. Sistem ini mengatur diri sendiri.

Pekerjaan
sumber
Saya setuju sampai batas tertentu, tetapi saya juga harus mendukung kode yang ditulis oleh orang-orang dengan gelar dalam fisika, matematika, dan teknik mesin yang mengira mereka adalah programmer. Hanya karena seseorang melakukan sesuatu untuk pekerjaan mereka tidak berarti mereka melakukannya dengan baik ...
Joel C
7
Saya telah melihat banyak kode buruk yang ditulis oleh siswa CS. Saya telah melihat kode luar biasa yang ditulis oleh orang-orang dari matematika atau fisika atau apa pun. Hampir tidak ada korelasi antara apa yang Anda pelajari dan kualitas kode Anda.
jhocking
1
juga, masuklah biologi!
jhocking
11

Sementara saya pikir jawaban Ayub penting untuk diingat, jawaban yang sama dapat diterapkan pada gelar sarjana. "Saya membayar $ 199,95 saya, sekarang beri saya gelar CS."

Menolak tubuh siswa sesuai dengan standar "programmer sebenarnya" bukanlah pekerjaan Anda. Mengajar siswa bagaimana program / desain (mungkin?) Jika Anda tidak mengubah cara berpikir Anda di perguruan tinggi, Anda membuang-buang waktu di sana. Tujuan Anda adalah menunjukkan kepada setiap siswa yang menunjukkan minat bahwa menjadi seorang programmer mengubah cara berpikir mereka menjadi lebih baik. Anda melakukannya secara tidak langsung dengan menunjukkan kepada mereka ...

  1. apa pemrograman sebenarnya dan ...
  2. bahwa mereka dapat melakukannya.

Kami salah melakukannya

Ada penelitian luas di luar sana yang menunjukkan bahwa cara 95% dari program kuliah kami mengajarkan pemrograman / CS mengerikan. Program CS rata-rata dimulai dengan

  • Semester pemrograman dasar dalam C ++ / Java / C #, yang menghabiskan 16 minggu mengajar beberapa hal lebih maju daripada "ini adalah untuk loop". Sebuah analogi mungkin jika departemen Fisika menghabiskan satu semester mempelajari alfabet Yunani sebelum memulai kinematika.
  • Semester pertama mahasiswa baru masuk ke struktur data dasar dan biasanya benar-benar menyisakan 1/3 hingga setengah dari siswa.
  • Tahun kedua dihabiskan dalam beberapa kombinasi perakitan, struktur data, analisis algoritmik, kursus etika dan mungkin kursus topikal pertama Anda. Anda cenderung kehilangan setengah dari siswa yang masuk selama tahun ini.
  • Junior dan Senior masuk ke kelas dengan nama-nama seperti "Grafik", "Jaringan I dan II", "Sistem Operasi", dan itu adalah materi yang benar-benar menarik pertama yang bisa dilihat oleh siswa.

Hampir semua yang lain lebih baik

Hampir setiap percobaan meningkatkan situasi, diukur dalam hal pemahaman siswa tentang topik dan pendaftaran program dan tingkat kelulusan. Beberapa percobaan yang saya lihat di jurnal ACM CSE adalah ...

  • Membangun dari mesin negara teoritis yang sangat sederhana untuk perakitan dan ke C, berakhir dengan C # / Java di tahun senior Anda. Fokusnya adalah perlahan merangkak ke atas lapisan abstraksi.
  • Memilih bahasa yang sangat "sederhana" untuk memfokuskan siswa pada struktur data dan abstraksi. Saya telah melihat hasil yang baik dengan siswa menulis aplikasi web yang agak rumit dalam varian skema pada akhir tahun pertama. (Itu adalah wiki yang dimodifikasi yang akan menjalankan teks halaman melalui skema sebelum menampilkan ... agak menyenangkan)
  • Memfokuskan siswa pemula pada area tertentu (jaringan), dan mengajar setiap struktur Java / pernyataan sebagai "samping". Siswa minggu kedua ping server mail untuk melihat daftar email mereka, tugas akhir adalah klien IM sederhana. Fokusnya adalah menunjukkan kepada siswa bagaimana programmer membuat satu bagian dari dunia berfungsi.
  • Beberapa program fokus pada robotika. Mahasiswa baru bermain dengan Lego mindstorms ... mahasiswa menggunakan API C-like, Junior dan Senior bekerja dengan ME dan EE dalam kolaborasi lintas kampus untuk membangun sistem yang cukup kompleks.
  • Satu program memfokuskan siswa pada kode BACA untuk semester pertama. Mereka menganalisis kode dalam sistem X11 untuk mengajarkan kontrol aliran dan sintaks dasar selama 8 minggu atau lebih sebelum bahkan mulai menulis kode. Program pertama mereka adalah tambalan kecil untuk memodifikasi sedikit perilaku.

Setiap percobaan ini melihat peningkatan besar dalam minat awal siswa, transfer pengetahuan, dan retensi hingga lulus. Beberapa lebih cocok untuk lingkungan perguruan tinggi tertentu daripada yang lain, tetapi jika Anda mengikuti struktur yang dijelaskan dalam paragraf di atas, tanyakan pada diri sendiri, "Apakah saya akan bertahan selama dua tahun pertama program ini?"

jerman
sumber
Saya setuju dengan Anda bahwa kami harus fokus untuk menunjukkan kepada mereka tentang pemrograman apa dan bagaimana hal itu dapat mengubah proses pemikiran Anda terlepas dari apa yang Anda lakukan sesudahnya. Pikiran yang bagus.
Beth Whitezel
2

Memprogram berarti menginstruksikan secara logis untuk mencapai beberapa hasil yang diinginkan. Dengan kata lain itu memberitahu komputer untuk melakukan beberapa tugas. Satu-satunya cara untuk maju adalah dengan berlatih.

Sama seperti belajar bahasa Inggris atau bahasa lain yang Anda butuhkan untuk memulai dengan mempelajari sintaks (alfabet) dan kemudian beralih ke tata bahasa dan konstruksi lainnya. Jumlah waktu yang diperlukan bervariasi tergantung pada kompleksitas bahasa. Pengkodean dalam bahasa tingkat tinggi seperti SQL, Python hampir seperti menulis bahasa Inggris.

nayan
sumber
2

Beberapa aspek akan membantu, saya pikir -

  • Prof yang sadar akan dunia nyata modern . Jika mereka dapat berbicara tentang teknologi saat ini dan bagaimana hal itu sesuai dengan kerangka kerja teoretis, itu jauh lebih relevan dengan undergrad yang tidak sadar sejarah daripada pembedahan VAXen tanpa mengacu pada teknologi saat ini.

  • Magang yang didukung departemen. Jika Dept dapat menjamin setidaknya 2 musim panas pekerjaan berbayar dengan perusahaan teknologi, maka ada insentif besar untuk bertahan.

Terus terang, siswa ilmu komputer modern jauh lebih diberkati daripada yang hidup bahkan 5-10 tahun yang lalu. Kemampuan untuk membeli sistem low-end, dan kemudian menginstal VM, dan belajar berbagai bahasa, sistem operasi, dll, gratis adalah enabler, sulit untuk melebih-lebihkan itu.

Tentu saja, orang-orang mani seperti Hopper dan Knuth belajar sendiri tanpa kilau. Jenius akan keluar.

Paul Nathan
sumber
Meskipun idenya hebat ... dua musim panas pekerjaan dengan gaji terjamin tidak sayangnya tidak realistis. Ya, ada magang yang dibayar, tetapi sebagian besar lulusan beruntung mendapatkan satu dibayar sekarang dan sering harus puas dengan yang belum dibayar. Ini mungkin berbeda di negara bagian lain. Saya pikir Anda benar tentang mereka yang memiliki lebih banyak peluang. Mereka dapat berkontribusi pada banyak proyek open-source lebih dari beberapa tahun yang lalu.
Beth Whitezel
@ BitOff: Saya belum pernah mendengar tentang magang CS yang belum dibayar.
Paul Nathan
Tidak bercanda? Itu harus menjadi hal yang dilokalkan.
Beth Whitezel
1

Buat area pementasan untuk siswa potensial dan sukses di luar program gelar Anda untuk mengurangi risiko. Ini mungkin termasuk mensponsori kelas AP CompSci di sekolah menengah setempat untuk memisahkan dahulu gandum dari sekam. Jika ini ternyata terlalu sulit, coba menyusupi bab-bab DECA lokal (atau buat yang baru) dengan program yang berorientasi CS di divisi sekolah menengah atau perguruan tinggi. Sebaliknya, Anda akan menunjukkan siswa wirausaha yang mencari keterampilan manajemen, mungkin dengan potensi CS yang belum terealisasi, jalur baru untuk memenuhi aspirasi bisnis mereka melalui media akademik Anda.

Travis J
sumber
Ya, saya sepenuhnya setuju bahwa kita perlu melakukan lebih banyak untuk memperkenalkan CS pada usia lebih dini daripada kuliah. Saya tahu bahwa sebagian besar sekolah menengah menawarkan satu atau dua kelas komputer canggih yang dapat masuk ke bahasa pemrograman, tetapi saya rasa itu tidak cukup. Saya sering berpikir bahwa jika Anda bisa mengajarkan bahasa ramah anak yang sederhana kepada siswa kelas 4-6 Anda akan menarik minat mereka pada usia yang tepat. Saya pertama kali belajar dasar ketika saya berusia 8 atau 9 dan, meskipun saya perlu 10 tahun atau lebih untuk benar-benar masuk ke dalamnya, yang membuat saya memiliki memori "pemrograman" yang luar biasa.
Beth Whitezel
1

Saya berpendapat bahwa kuncinya adalah memahami berbagai tingkat program semacam itu:

Universitas - Ini cenderung menjadi tempat seseorang dapat belajar hanya untuk belajar. Dalam hal ini standar yang sangat berbeda mungkin ada dalam hal membuat program dan menyesuaikannya karena ini bisa sangat teoretis, atau setidaknya itulah yang saya ingat dari mempelajari Ilmu Komputer di program studi tahun saya.

Perguruan Tinggi - Ini cenderung lebih berorientasi pada karir yang merupakan umpan balik dari industri dan menghubungkan perusahaan dengan perguruan tinggi adalah poin kunci. Melihat penempatan 6-12 bulan setelah lulus bisa menjadi metrik yang digunakan untuk melihat seberapa baik orang-orang setelah mereka lulus karena pertanyaan kuncinya adalah apakah seseorang memandang waktu dan uang mereka dengan menganggap pendidikan itu bermanfaat atau tidak. Memperbarui program kemungkinan akan lebih sering karena program-program di sini mungkin sedikit lebih pendek, misalnya program Sarjana universitas Honor cenderung 4 tahun sedangkan program diploma perguruan tinggi mungkin 18-24 bulan. Jadi, tantangannya lebih pada mendapatkan bagian ini untuk memiliki koneksi dengan perusahaan sehingga orang-orang dapat terpapar dengan pekerjaan dan melihat apa yang berhasil atau tidak bekerja untuk mereka.

JB King
sumber