Saya telah pemrograman selama bertahun-tahun tetapi ingin ijazah membuat saya lebih mudah dipekerjakan. Setelah lulus dari universitas, saya tidak memilih jurusan ilmu komputer 5 tahun penuh tetapi program rekayasa perangkat lunak yang lebih pendek dan lebih praktis .
Saya berharap bahwa itu mungkin lebih fokus pada keterampilan konkret daripada pada teori, tetapi masih memiliki gagasan bahwa universitas dan profesor menyukai hal-hal yang benar, formal, akademik. Itu masih sains, kan? Salah - Saya terkejut dengan betapa cerobohnya banyak kursus TI.
Dalam kursus pengantar tentang C ++ kami diuji pada klise seperti "mengapa global buruk" dan "mengapa konstanta baik", setelah hanya menulis 1-2 program. Anekdot acak tanpa konteks yang tepat. Handout berisi system(pause/cls)
, getch
dan header menyukai conio.h
dan iodos.h
. Salah satu tugasnya adalah mencetak "karakter ASCII" dari 32 hingga 255 , dengan tangkapan layar yang memperlihatkan tabel seperti itu dicetak menggunakan halaman kode Windows-1252, tetapi tanpa menyebutkan penyandian sama sekali.
Pertanyaan : ketika seorang universitas / profesor tampaknya menggunakan alat dan metode yang lebih rendah dan / atau ketinggalan jaman, dan konten yang diajarkan adalah garis batas yang salah, bagaimana Anda menghadapinya secara konstruktif dan penuh hormat, jika sama sekali?
Beberapa jawaban menunjukkan bahwa Anda harus melihat melampaui pemrograman karena itu hanya alat untuk belajar tentang topik-topik seperti struktur data dan algoritma. Saya setuju dengan ide ini, tetapi dalam kasus ini tidak ada rencana seperti itu di balik gaya yang buruk. Sebagian besar kursus hanya akan mengajarkan "alat" lain tanpa banyak teori latar belakang atau "gambaran besar". Seringkali terasa seperti mereka cepat disatukan hanya demi menawarkan kursus seperti itu.
Saya terjebak dengan itu dan akhirnya lulus. Kualitas tetap cukup rendah di seluruh (dengan beberapa pengecualian), dan beberapa siswa lain telah mengeluhkannya. Seperti yang diharapkan, saya telah belajar lebih banyak dari proyek-proyek pribadi dan pekerjaan paruh waktu daripada dari sekolah, namun proses menyelesaikan sekolah dan label "siswa perangkat lunak" tampaknya secara misterius berguna dalam diri mereka sendiri!
Jawaban:
Matematika dan pemrograman adalah hal yang sangat berbeda. Matematika adalah sains, pemrograman adalah teknik. Di dunia akademis, pemrograman adalah sesuatu yang harus Anda ketahui sehingga Anda dapat menangani hal-hal nyata, sesuatu yang sebenarnya menarik dan penting - algoritma.
Siapa yang peduli jika kompilernya kuno dan Anda menggunakan
system
panggilan? Siapa yang peduli jika Anda memiliki Linux dan bukan Windows? Nah, para profesor tidak, itu sudah pasti. Dan mereka seharusnya tidak melakukannya. Jangan berharap menjadi programmer profesional dari program studi di lembaga akademik. Bukan itu tujuan Anda pergi ke sana.Itu benar bahwa kompiler yang dia harapkan untuk Anda gunakan adalah kuno, dan asumsi tentang OS adalah anakronistik, dan bermasalah. Anda dapat meningkatkannya, dan mungkin itu akan ditangani. Tetapi bukan karena kursus tidak sesuai dengan industri, tetapi lebih karena itu menyebabkan kesulitan langsung kepada siswa. Temukan kompiler lama itu sekarang dan jalankan di MacBook Anda ...
Secara umum, studi akademik tidak boleh sia-sia untuk mempelajari C ++ dan Android, Anda harus mempelajari hal-hal Ilmu Komputer yang sebenarnya di sana. Anda tidak akan mendapatkan kesempatan lain untuk itu. Android? Unduh Eclipse dengan ADT dan mulailah mengerjakannya di rumah, seperti yang saya lakukan. Tidak perlu sekolah untuk itu.
Saya pikir tidak mungkin mengharapkan pengembangan teknik dari universitas. Terutama bukan universitas riset. Anda dapat mengatakan bahwa tempat yang hanya menawarkan bujangan harus lebih bertarget industri, tetapi universitas riset - menginginkan peneliti. Para profesor mencari calon mahasiswa pascasarjana dan kandidat PhD, bukan programmer yang baik. Jadi saya pikir Anda harus mengatur tingkat harapan Anda.
sumber
Ilmu komputer adalah pemrograman apa fisika untuk pertukangan.
Jika Anda ingin menjadi seorang tukang kayu, mempelajari fisika tidak akan mewujudkannya. Ini akan mengajarkan Anda banyak hal menarik, yang mungkin bisa Anda terapkan pada pekerjaan Anda, tetapi itu tidak akan mengajari Anda cara menjadi tukang kayu yang baik. Untuk itu, Anda harus belajar kerajinan pertukangan.
Demikian pula, jika Anda ingin menjadi programmer yang baik, Anda harus mempelajari keahlian pemrograman . Sayangnya, tidak ada lembaga yang mengeluarkan sertifikasi apa pun. Jadi pada dasarnya, ini adalah sesuatu yang harus Anda lakukan sendiri, dengan apa pun yang membantu orang yang mungkin dapat Anda temukan. Bagi Anda ini berarti pengulangan dan refleksi. Tulis banyak kode lalu kembali untuk melihatnya. Juga luangkan waktu untuk membaca kode orang lain. Pertimbangkan untuk berpartisipasi dalam proyek sumber terbuka.
Universitas tidak terlalu peduli untuk pemrograman dan bahkan kurang untuk detail yang akan berubah dalam beberapa tahun ke depan. Apa yang Anda lihat di sekolah Anda adalah bahwa mereka telah memilih beberapa lingkungan pemrograman (yang buruk, tapi itu tidak begitu penting) dan sekarang menunjukkan kepada Anda, sehingga mereka akan memiliki kerangka referensi di mana mereka dapat mengajarkan Anda berbagai teknik pemrograman. Orang bisa berargumen, bahwa kerangka acuannya buruk dan bahasanya pun pilihan itu aneh. Dari perspektif mereka, itu mungkin tidak masalah, karena itu dipilih secara sewenang-wenang.
sumber
Tidak ada yang salah dengan mempelajari 'gaya-DOS'. Saya yakin banyak dari orang tua di sini mulai pada DOS, atau bahkan dengan sistem operasi sebelumnya, menulis program berbasis garis, dan telah menyesuaikan dengan baik. Dunia komputasi berubah begitu cepat sehingga saya tidak akan terpaku pada spesifik seperti perpustakaan mana yang digunakan untuk apa.
Sebenarnya, saya menduga alasan kami memiliki dunia yang penuh dengan programmer yang dapat memberi tahu Anda apa itu injeksi ketergantungan , tetapi berjuang untuk menjawab FizzBuzz , adalah karena banyak programmer tidak menghabiskan banyak waktu di level yang sangat dasar itu.
Sepertinya ini adalah pengantar pemrograman, jadi pada dasarnya, jangan khawatir tentang hal itu. Pelajari dasar-dasarnya, dan Anda akan baik-baik saja. Jika Anda tertarik pada platform lain, jelajahi sendiri. Itulah hal hebat tentang pemrograman.
sumber
Bagaimana Anda bisa menghadapinya? Unduh pemrograman e-book atau streaming video, coba contohnya sendiri. Jangan bergantung pada profesor Anda. Pemrograman sangat dipelajari sendiri.
sumber
Banyak universitas yang memiliki profesor pemrograman yang jelek. Saya pergi ke salah satu sekolah lulusan terbaik di negara saya dan cukup banyak belajar jongkok dalam pemrograman. Saya kira sebagian besar unis seperti itu yang menyebabkan programmer benar-benar memilih pekerjaan dengan gaji yang lebih baik (bukan mengajar). Anda harus mengambil proyek kecil dan mencoba kode sendiri. Anda bisa mendapatkan tips dari banyak forum seperti ini. Itu mungkin cara yang lebih baik untuk belajar dalam jangka panjang.
sumber
Saya berpikir bahwa Universitas harus mengajarkan konsep abstrak bahasa pemrograman, algoritma, dll dan tidak boleh menjadi tempat di mana Anda belajar pemrograman: pemrograman adalah kegiatan yang sangat praktis dan Anda hanya dapat mempelajarinya dengan melakukan.
Selama belajar, saya mempelajari dasar-dasar pemrograman dalam Pascal, kemudian saya punya satu proyek di C (kami harus belajar bahasa sendiri) dan kemudian saya memiliki kursus tentang konsep bahasa pemrograman (prosedural, berorientasi objek, fungsional, logika) . Itu adalah cerita rakyat bahwa pada MSDOS Anda memiliki conio.h atau pointer jauh, yang tidak Anda miliki pada sistem UNIX. Ini adalah hal-hal yang akan kami diskusikan oleh para siswa sambil minum bir, itu bukan sesuatu yang Anda diskusikan selama kelas karena itu tidak begitu penting. Pengajaran universitas berfokus pada abstrak, pengetahuan umum dan menghindari masuk ke detail: contoh dan detail disajikan hanya untuk menggambarkan hal-hal umum.
Contoh yang Anda berikan tentang ASCII versus Unicode dan pustaka MSDOS conio.h berarti bahwa setiap lingkungan pemrograman memiliki cara khusus dalam melakukan dan mengatur berbagai hal. Jika Anda memprogram dalam C ++ pada Visual Studio Anda harus menggunakan pustaka lain, beberapa di antaranya tidak ditemukan, misalnya di Linux. Jadi jika kursus ada di Windows 7 / Visual Studio beberapa orang mungkin mengeluh bahwa akan lebih baik melakukannya di Linux / GCC. Tapi, IMO, ini bukan itu intinya.
Jadi, saya pikir Anda harus mencoba untuk tidak terganggu oleh detail dan berkonsentrasi pada konsep umum yang sedang dibahas oleh kursus. Misalnya, bahwa di sebagian besar bahasa pemrograman Anda akan memerlukan beberapa perpustakaan untuk mengimplementasikan konsol I / O dan bahwa, mengingat lingkungan pemrograman, Anda harus menyelesaikan masalah Anda dengan alat yang Anda miliki. Mungkin ini terdengar sangat jelas bagi Anda dan Anda memiliki kesan Anda tidak benar-benar belajar sesuatu karena Anda sudah memiliki pengetahuan sebelumnya (ini bisa terjadi) tetapi saya tidak mendapatkan kesan bahwa Anda mengikuti kursus yang buruk.
sumber
Universitas memberikan fondasi. Setelah kuat, Anda dapat membangun gedung pencakar langit di atasnya. Saya telah belajar BASIC, C dan C ++ selama masa kuliah saya. Kemudian ketika saya memproyeksikan dalam Visual C ++, saya percaya ini adalah dunia yang sama sekali berbeda. Kemudian saya menyadari perbedaan antara Kerangka dan Bahasa.
Pilih universitas yang tepat di mana mereka memberikan pengembangan fokus bidang komputasi yang Anda inginkan. Yang dapat membantu Anda nanti dalam karier Anda.
sumber
Hasil cetakan yang penuh
system("");
sebenarnya adalah hal yang sangat bagus! Saya terkejut bahwa orang tidak tahu apa-apa tentang fungsi-fungsi ini saat ini.system("pause")
, dan Anda menyingkirkan semua fungsi getcha getX.system("cls")
, dan Anda baru saja menyimpan satu halaman kode.system("mkdir foo")
dan Anda baru saja menyimpan 2 halaman alokasi buffer, pemisahan jalur, _makepath_ss, 256 batas jalur, ton keluar kesalahan dan sebagainya.Apalagi kodenya sangat sederhana sehingga monyet akan memahaminya.
Sekolah penyimpangan polimorfik adalah apa yang harus dilarang oleh hukum.
PS: Lagipula, dengan segala hormat, saya mengalami kesulitan menerima bahwa orang diajarkan C ++ dengan pengecualian dan segala sesuatu virtual sebagai HAL YANG BAIK, karena memiliki lebih banyak gotchas dan ranjau darat daripada yang dapat Anda bayangkan, dan bahkan Bjarne Stroustrup menginjili pengecualian sebagai sesuatu yang super mudah dan aman, sementara pada kenyataannya mereka adalah ranjau nuklir.
Lihat analisis tentang Misra-C ++ dan JSF-C ++. Dan http://blogs.msdn.com/b/oldnewthing/archive/2005/01/14/352949.aspx . Saya terlalu malas untuk menemukan semua artikel yang tersisa hari ini.
Dengan semua yang dikatakan, saya c ++ pengembang dan saya menikmati banyak fitur dan bahasa secara keseluruhan.
sumber
Saran saya mungkin terdengar di luar sana, tetapi dengarkan saya ... Beralih jurusan.
Dalam pengalaman saya di dunia akademis, jurusan Ilmu Komputer adalah tingkat yang sangat rendah pada apa yang membuat komputer tergerak. Anda mulai dengan primer dasar dalam C ++ untuk memastikan Anda tahu apa program itu, dan dasar-dasar memori dan perhitungan di belakang program, dan kemudian Anda belajar perakitan, konsep OS, teknik elektro, desain digital, dll. Anda mendapatkan gelar ini dan mencari pekerjaan dengan NVidia atau AMD, atau Lockheed; di suatu tempat di mana mereka membuat perangkat keras baru, yang membutuhkan seseorang yang dapat memahami perangkat keras itu pada level yang cukup rendah untuk menulis driver dan mengendalikan perangkat lunak.
Kedengarannya seperti yang Anda inginkan adalah program studi yang, di universitas saya, disebut Manajemen Sistem Informasi. Itulah jalan yang saya ikuti; itu mengajarkan pemrograman di Jawa, VB.NET, C #, dan beberapa PHP dan skrip web lainnya di sepanjang jalan. Ini juga membutuhkan kalkulus (tetapi tidak pada tingkat yang sama dengan CS), akuntansi, keuangan, statistik, komunikasi bisnis, OO A&D, desain database, dan analisis sistem. Saya mendapat BBA daripada BS, dan saya memiliki alat dasar untuk mulai bekerja sebagai pengembang perangkat lunak Windows atau Web.
Apa yang dipersiapkan "Ilmu Komputer" jurusan untuk Anda sangat bergantung pada universitas mana yang menawarkannya. Sepertinya Anda berada di jalur awal untuk mendapatkan tampilan tingkat rendah yang sangat ketinggalan zaman pada komputer yang tidak seperti yang Anda kejar dari pendidikan Anda. Saya mendorong Anda untuk melihat-lihat di universitas dan menemukan program studi yang lebih fokus pada jenis pekerjaan komputer yang ingin Anda masuki setelah sekolah.
Apa pun itu, program studi Anda akan dimulai dengan penulisan program "tingkat konsol" yang sangat dasar. Bahasa tidak masalah; apa yang mereka ajarkan adalah pemrograman prosedural dasar; bagaimana berpikir dalam langkah-langkah yang cukup kecil sehingga komputer dapat mengikuti Anda dari langkah ke langkah (karena komputer tidak menerima apa-apa begitu saja, dan tidak dapat mengikuti sebagian besar lompatan manusia dalam logika). Dari sana, Anda akan maju ke pemrograman berorientasi objek (alih-alih memiliki satu fungsi panjang yang melakukan segalanya, jauh lebih mudah untuk memiliki beberapa kode "objek" yang lebih kecil, yang mewakili keadaan dan logika objek dunia nyata), kemudian ke pemrograman berbasis acara ("Jangan panggil kami, kami akan memanggil Anda"; program Anda pada dasarnya dimulai, memberi tahu OS untuk mengatur UI grafis awal Anda,
sumber
Kursus Ilmu Komputer tidak akan mengajarkan Anda pemrograman. Ini berjalan-jalan di taman dibandingkan dengan beberapa pemrograman yang saya lakukan pada kursus CS saya.
Masalah mendasar dengan ini, dalam pengalaman saya, adalah bahwa ada cukup banyak tempat yang akan mengajarkan Anda pemrograman pada tingkat yang setara, sehingga Anda tidak punya pilihan apa pun.
sumber
Saya pikir mungkin ada beberapa kebingungan tentang apa dan mengapa Anda belajar.
Tampaknya seolah-olah Anda sedang mempelajari program ilmu komputer pengantar. Ini ditujukan untuk orang-orang dengan pengalaman minimal yang mempelajari dasar-dasar tentang bagaimana komputer bekerja pada level rendah.
Tampaknya Anda adalah seorang programmer semi-serius atau profesional. Anda telah memprogram selama 10 tahun, dan merasa nyaman dalam 3 bahasa. Sepertinya Anda tahu apa yang Anda lakukan setidaknya cukup untuk bekerja sebagai bagian dari tim. Apakah Anda merasa tidak cocok dengan kursus ini? Apakah siswa lain memiliki tingkat pengalaman atau keterampilan yang sama dengan Anda?
Apa yang ingin Anda dapatkan dari kursus ini?
Apakah Anda hanya setelah 'selembar kertas' itu? Jika ini masalahnya maka jangan berhenti berusaha untuk mendapatkan pekerjaan saat Anda belajar. Lamar pekerjaan, beri tahu mereka bahwa Anda adalah programmer yang kompeten dan Anda belajar karena Anda membutuhkan kertas untuk mendapatkan pekerjaan. Jika mereka mempekerjakan Anda, maka pertimbangkan untuk keluar - begitu Anda memiliki pekerjaan profesional, maka Anda benar-benar tidak membutuhkan kertas itu lagi. Terima upah yang lebih rendah dari biasanya, karena lebih baik dibayar untuk belajar (di tempat kerja) daripada membayar untuk belajar di sekolah - dan Anda akan belajar lebih cepat juga. Setelah satu atau dua tahun Anda sebagian besar akan cepat, dan kemudian Anda dapat meminta kenaikan gaji yang layak atau Anda bisa mencari pekerjaan lain karena Anda akan memiliki pengalaman.
Atau Anda mencoba mempelajari sesuatu? Kemudian berhentilah menghakimi profesor Anda. Seperti seorang guru sekolah menengah yang mengesankan yang biasa mengatakan 'duduk, dan tutup mulut.' Hampir dijamin bahwa profesor memiliki pengalaman dan pengetahuan yang jauh lebih banyak daripada yang Anda miliki dan Anda dapat belajar banyak darinya. Jika dia terlalu lambat untuk Anda maka cobalah untuk mendapatkan kredit untuk kursus pengantar ini berdasarkan pembelajaran dan pengalaman Anda sebelumnya.
Tetapi apakah Anda berada di jalur yang benar? Anda juga bisa belajar banyak dari profesor sastra, atau profesor sejarah ... tidak terlalu relevan. Mungkin Anda tidak menginginkan 'ilmu komputer' tetapi lebih menginginkan keterampilan 'dunia nyata' yang lebih praktis. Coba 'rekayasa perangkat lunak'. Lihatlah institusi lain untuk kursus yang lebih fokus.
Sama seperti ketika Anda memulai pekerjaan baru, kelas atau program studi bisa sangat sulit untuk ditinjau dari luar. Anda tampaknya berada dalam suatu kursus yang tidak memberi Anda apa yang Anda harapkan. Pertimbangkan kembali opsi Anda.
sumber
Saya pikir banyak jawaban untuk pertanyaan ini mengecewakan. Mereka kembali ke argumen lama yang lelah tentang CS vs Pemrograman dll. Mungkin begitu, tapi bagi saya sepertinya kursus OP sedang tidak mengajar juga.
Saya berada dalam situasi sudah bekerja sebagai programmer, dan belajar sedikit sendiri, sebelum belajar CS paruh waktu di perguruan tinggi. Saya berkeliling dengan hati-hati, tetapi umumnya menganggap kurikulum hanya membuang-buang waktu. Juga mereka tidak akan membiarkan saya melewati kursus meskipun sudah memiliki pengalaman profesional di daerah tersebut.
Dalam pengalaman saya, sebagian besar profesor cukup malas dan menggunakan kurikulum yang ketinggalan zaman. Jujur kedengarannya seperti Anda membuang-buang waktu. Saya mempertanyakan bahkan apakah menyelesaikan diploma akan membantu Anda menemukan pekerjaan.
Saya ragu Anda dapat melakukan banyak hal untuk mengubah haluan Anda. Anda bisa menambahnya dengan belajar sendiri. Atau lupakan saja semuanya, dan pelajari CS secara mandiri, dan lakukan sertifikasi industri juga.
Saya harus menambahkan bahwa saya tidak tahu tentang nilai ijazah di pasar kerja negara Anda. Jika ijazah itu sendiri berharga terlepas dari isinya, maka Anda mungkin hanya perlu memasang kurikulum yang agak kurang.
sumber
Mereka harus melayani para siswa. Sebagian besar siswa tidak dapat memprogram. Jadi mereka tidak didorong untuk pergi ke sana secara teknis.
Mereka juga memiliki bidang penelitian khusus, tetapi mereka tidak mengajarkannya. Dan bagaimanapun banyak peneliti bukanlah guru yang baik, sehingga Anda dapat menganggap diri Anda beruntung jika mereka mengajar hal-hal yang sudah Anda ketahui!
Bagaimanapun, Anda sepertinya tidak tahu apa itu ilmu komputer. Ini bukan tentang apa yang praktis untuk industri.
sumber
Saya akan meminta (dan kemudian bersikeras) untuk mengembalikan tugas Anda dalam standar c ++. Ini sepenuhnya masuk akal karena Anda tidak dapat menyelesaikan tugas sebaliknya.
Adapun gaya buruk; pasti akan ada beberapa di antaranya untuk memulai. Belajar menggunakan pustaka io standar dengan benar membutuhkan beberapa fitur c ++ canggih, khususnya templat dan iterator. Saya bisa melihat mengapa seorang dosen akan membuat Anda menggunakan fungsi io yang sangat sederhana untuk memulai. Saya tidak akan takut untuk bertanya tentang ini, itu menunjukkan antusiasme dan sedikit cahaya di mata Anda. Dosen Anda harus dapat menjalin pertanyaan Anda menjadi kuliah di masa depan di mana Anda (semoga) meluruskan latihan awal Anda.
Saya akan membiarkannya di situ saja. Meskipun c ++ dapat menjadi bahasa yang bebas platform, namun seringkali tidak. Mempelajari beberapa fungsi sistem Windows bukanlah hal yang buruk, terutama jika Anda kemudian melatih diri untuk melakukannya sesuai standar. Anda akan menemukan suatu titik
conio.h
ketika melihat kode orang lain - dan ada baiknya mengetahui apa yang dilakukannya.sumber