Di perguruan tinggi, saya tidak pernah tertarik pada teori. Saya tidak pernah membacanya. Tidak peduli berapa banyak saya mencoba, saya tidak dapat membaca hal-hal dan tidak tahu apa yang sebenarnya terjadi secara praktis. Seperti misalnya, dalam mata kuliah saya tentang teori automata, profesor saya memberi tahu saya segala sesuatu yang mungkin berkaitan dengan aspek matematisnya, tetapi tidak sekali pun dia menyebutkan di mana itu akan digunakan secara praktis. Ini hanya sebuah contoh.
Saya berhasil lulus kuliah dan magang di sebuah perusahaan juga, di mana saya melakukan proyek dan untungnya mereka tidak mengganggu nilai saya, karena mereka di atas rata-rata.
Sekarang, saya tertarik untuk mengetahui mata pelajaran apa yang harus disadari oleh siswa CS secara mutlak dan positif? Subjek yang dapat memiliki relevansi di industri. Ini karena saya punya waktu luang dan itu akan membantu saya lebih baik untuk memiliki pemahaman yang baik tentang mereka.
Apa saran Anda? Seperti untuk satu, algoritma adalah satu subjek.
Jawaban:
Percaya atau tidak, salah satu hal yang ternyata sangat penting bagi saya di kemudian hari adalah Konstruksi Kompiler. Bukan versi namby-pamby modern menggunakan Lex dan Yacc, itu untuk boneka.
Konstruksi kompiler NYATA tempat Anda menulis pemindai simbol dan pengurai Anda sendiri dari bawah ke atas.
Ini adalah sesuatu yang saya pikir tidak akan pernah saya gunakan lagi. Namun pada 20 tahun terakhir saja sudah terbukti bobotnya dalam emas 4 kali lipat. Pernah memerintahkan prosesor yang harus saya tulis, setiap pemindai pesan masuk, setiap pengirim pengguna, setiap penerjemah skrip, telah menggunakan prinsip-prinsip dari kursus itu. Lakukan dengan cara itu dan hidup itu manis, jelas dan sederhana. DAN AKU bahkan memberikan semua info kepada seorang kolega yang belum melakukannya - dia benar-benar harus menulis kompiler untuk mesin abstrak. Yang mungkin saya tambahkan telah menjadi sangat sukses secara komersial.
Jika saya harus naik dan berterima kasih kepada dosen mata kuliah di bidang apa pun, ini dia. Tanpa itu saya akan mendapatkan tetapi solusi saya akan jauh lebih buruk.
(Dan sebelum seseorang melompat dan berkata "baik Anda bisa menggunakan lex dan yacc ..." jawabannya adalah, mungkin - itu tergantung banyak pada sistem. Dalam beberapa kasus bahasa pemrograman bukan C (misalnya PL / M dan Ada), dalam beberapa kasus tidak tersedia Lex atau Yacc yang tersedia untuk platform. Mengetahui dasar-dasar berarti solusi sudah ada, alih-alih meremas-remas tangan mencoba mencari cara menekuk beberapa alat agar sesuai dengan masalah.)
sumber
Struktur / Algoritma Data terutama Grafik. Jumlah situasi dunia nyata di mana saya berhasil menggunakan algoritma yang berhubungan dengan grafik telah mengejutkan saya. Fokus pada mengetahui karakteristik kapan suatu struktur data atau algoritma sesuai. Mampu melihat masalah dan tahu untuk menggunakan pemrograman dinamis / algoritma serakah misalnya penting dan dapat menghemat banyak waktu.
Pengetahuan kerja tentang kompleksitas komputasi. Anda tidak perlu tahu dari atas kepala Anda apa batas bawah dari jenis radix adalah tetapi mengetahui bagaimana mencari tahu apa waktu terburuk menjalankan sesuatu yang Anda tulis adalah penting, terutama untuk proyek-proyek penting kinerja.
Konsep OS. Manajemen memori, Penjadwal, dll. Setiap pengembang benar-benar harus memiliki pemahaman yang kuat tentang sistem operasi mengingat bahwa kode yang Anda tulis terus berinteraksi dengannya.
NetSec. Saya telah menemui sangat sedikit pengembang yang memiliki pemahaman yang kuat tentang masalah keamanan dasar dengan pengembangan (buffer overflows, xss, SQLI, dll). Ini benar-benar suatu keharusan jika Anda ingin sukses dalam industri. Sangat bagus jika Anda dapat menulis hal besar berikutnya tetapi Anda tidak akan memiliki banyak pengguna lama jika Anda tidak mengamankan data mereka.
Pemrograman paradigma. Ketahui karakteristik dan perbedaan antara pemrograman OO / Fungsional / Prosedural. Salah satu kelas sarjana terbaik yang pernah saya miliki adalah menulis 20 penerjemah instruksi sederhana untuk fortan, skema, prolog, dll dalam bahasa itu sendiri. Hanya paparan itu sendiri dapat benar-benar membantu Anda memahami konsep dasar pengembangan perangkat lunak.
sumber
Memenuhi persyaratan kelulusan belum tentu cukup untuk menjadi ilmuwan komputer terbaik yang Anda bisa. Untuk kurikulum perguruan tinggi yang umum, berikut adalah sepuluh hal utama yang harus Anda pelajari:
Dasar-dasar ekonomi - Kursus pengantar yang mencakup topik-topik seperti pelengkap dan pengganti sangat penting untuk bekerja dalam ekonomi yang lebih besar, atau hanya memahaminya saja. Sementara konsep Giffen Good tidak selalu membantu Anda, mengetahui tentang eksternalitas akan membantu. Mungkin juga membantu Anda menghargai bahwa lebih banyak situasi menang-menang daripada yang mungkin Anda sadari.
Cara menulis bukti - Semua jurusan ilmu komputer harus tahu cara menulis bukti. Dan matematika diskrit, sementara bagian dari sarapan yang seimbang, tidak masuk hitungan. [Induksi hanya satu teknik bukti, dan Anda bisa bertahan tanpa benar-benar mengetahui banyak tentang bukti.] Kursus aljabar atau analisis nyata diperlukan untuk benar-benar menulis bukti. Yang saya maksud dengan aljabar adalah teori kelompok atau aljabar abstrak, bukan mata kuliah yang Anda ambil di sekolah menengah. Untuk manfaat penuh, ambil aljabar dan analisis nyata dalam istilah yang sama.
Mengapa penulisan bukti penting? Karena itu pemrograman! Pikirkan ketika Anda pertama kali belajar bagaimana memprogram: apakah suatu tugas memerlukan suatu
if
dan satu putaran, Anda mungkin tidak memiliki intuisi tentang di mana harus menempatkan mereka dalam hubungan satu sama lain. Tetapi sekarang tugas yang sama akan terasa sangat alami. Menulis bukti sangat mirip. Ada serangkaian trik yang Anda pelajari, dan begitu Anda mempelajarinya, segalanya terlihat sangat berbeda.Cara menulis - Keterampilan komunikasi tertulis sangat penting, baik Anda akan bekerja di industri atau akademisi. Cara terbaik adalah Anda dapat menemukan kursus mekanik, dan bukan kursus menulis yang efektif tentang topik yang berbeda. Artinya, banyak sekolah akan mencoba membuat kursus penulisan lebih relevan atau menarik dengan menjadikannya tentang topik khusus. Cobalah untuk mengikuti versi "membosankan" dari kursus.
Probabilitas dan statistik - Ada beberapa hal yang hanya dapat Anda ambil dengan benar dengan mengikuti kursus. Bersama dengan persyaratan utama CS (yang seharusnya memberi Anda matematika diskrit, variabel tunggal dan banyak variabel, dan aljabar linier) dan aljabar dan / atau analisis nyata, mengambil statistik mungkin akan memberi Anda minor dalam matematika. Mempelajari statistik dapat membantu Anda bekerja dengan ilmuwan lain dalam proyek mereka.
Topik hangat saat ini - Dalam beberapa dekade sebelumnya, mungkin basis data, atau pemrograman berorientasi objek. Hari ini mungkin pemrograman web atau arsitektur berorientasi layanan. Apapun tren saat ini, pastikan untuk mengambil kursus di dalamnya. Kalau hanya untuk melihat apa isengnya.
Masalah penghentian - Sebagian besar masalah tidak dapat diselesaikan oleh mesin. Ini adalah ide yang cukup mendalam bahwa budaya kita telah menyerap dengan sangat baik sehingga tidak lagi terdengar mengejutkan. Hal yang sama berlaku untuk radio, Goedel, dan bom atom; Baru setelah seni postmodern dan perang dingin kita dapat sekali lagi mengatasi konsep-konsep ini. Namun, mengambil kursus dalam teori komputabilitas dapat membuat Anda kembali peka terhadap bukti yang sangat menakjubkan ini.
Pemrograman fungsional murni - Anda kemungkinan besar tidak akan masuk ke pemrograman fungsional murni, kecuali jika Anda melakukan penelitian di dalamnya atau bekerja untuk beberapa perusahaan tertentu, tetapi mengetahui itu akan membantu Anda menjadi programmer yang lebih baik. Alasannya adalah bahwa Anda akan belajar banyak bentuk abstraksi baru, dan konsep-konsep seperti nomor dan kelanjutan Gereja dan monad dan, ya, rekursi, dan alat-alat ini dapat diterapkan pada program Java Anda berikutnya juga.
P dan NP - OK, ini sudah di jalur kritis Anda, tetapi perhatikan juga. Anda ingin memastikan bahwa Anda dapat memperbaiki seseorang ketika mereka salah memanggil NP "non-polinomial." Seolah!
Topik-topik dari kursus yang pasti Anda benci - Ini bisa berupa kursus CS yang Anda temukan terlalu rendah, terlalu teoretis, atau kursus non-CS yang Anda anggap terlalu tidak pantas, terlalu keras, atau terlalu membosankan . Jika kursus seperti ini tampaknya menjadi masalah bagi Anda, dan Anda menemukan diri Anda menjelaskan kepada orang lain mengapa Anda sangat senang Anda tidak perlu mengambil ini dan itu, itu akan memberi tahu Anda bahwa Anda akan belajar banyak. dengan mengikuti kursus! Mungkin Anda tidak akan mempelajari materi kursus, tetapi Anda akan belajar tentang batasan Anda sendiri dan mungkin lebih banyak tentang pembenaran yang Anda buat untuk diri sendiri. [Petunjuk: Mereka biasanya lemah.]
Kursus non-CS yang pasti Anda sukai - Pada akhirnya, Anda harus bersenang-senang. Ini adalah kursus yang mungkin paling tidak Anda dapatkan, tetapi tetap saja lakukan. Lakukan sekali. Jika Anda menyukai banyak kursus, maka itu baik untuk Anda, tetapi pastikan itu tidak menghalangi seluruh program dalam daftar ini.
Pendekatan saya di sini praktis, berdasarkan pada kursus yang benar-benar dapat Anda ambil. Dan saya telah fokus pada tujuan pembelajaran yang mungkin dipelajari. Catatan: Jawaban ini diadaptasi dari posting blog saya di Sepuluh Hal yang Harus Dipelajari Setiap Ilmu Komputer .
sumber
Setelah berbicara dengan beberapa perwakilan perusahaan dan teman-teman yang memiliki banyak wawancara:
cenderung menjadi "keharusan" untuk karyawan baru (atau seperti yang mereka katakan, kursus "sangat dianjurkan").
Kursus lain yang mungkin berguna adalah keamanan komputer, perakitan, dan arsitektur mesin. Banyak profesor saya telah merekomendasikan kepada saya kursus kompiler juga. Juga, jika Anda punya waktu, saya akan sangat merekomendasikan kursus matematika seperti teori grafik, matematika diskrit, dan kombinatorik. Anda belajar banyak keterampilan penalaran di kelas-kelas yang sebagian besar kursus CS menyelinap, tetapi akhirnya menjadi sangat berguna ketika menulis program yang sangat kompleks.
Semoga itu bisa membantu!
sumber
Ini sangat tergantung pada apa yang Anda rencanakan lakukan dengan gelar. Tampaknya sebagian besar jurusan CS berakhir sebagai semacam insinyur perangkat lunak. Dengan pemikiran itu, saya benar-benar tidak yakin mengapa lebih banyak orang tidak hanya mengambil jurusan rekayasa perangkat lunak. Saya menduga bahwa tidak ada cukup program rekayasa perangkat lunak yang tersedia terutama di lembaga-lembaga publik.
Saya berasal dari tanah yang tertanam. Setiap orang yang bekerja dengan saya memiliki gelar EE atau CE dan itu sebagian karena ketika "orang tua" ketika kuliah, tidak ada banyak program CE yang tersedia. Jadi, sangat jelas bahwa jika Anda ingin bekerja di bidang tertanam bahwa latar belakang perangkat keras diinginkan.
Terlepas dari bidang mana Anda ingin bekerja, saya percaya bahwa setiap programmer harus mengambil kursus merakit pemrograman. Anda mungkin tidak pernah menggunakannya, tetapi itu akan mengajarkan dengan tepat apa yang terjadi di tingkat prosesor selama panggilan fungsi, bagaimana interupsi ditangani, bagaimana memori disusun atau bagaimana berbagai mode pengalamatan digunakan. Saya percaya semua hal ini akan membuat Anda menjadi programmer yang lebih baik.
Juga, meskipun mungkin tidak jelas sehingga beberapa di antaranya adalah topik penting ketika mempertimbangkan Struktur Data dan Algoritma untuk platform tertentu.
sumber
Ada 2 cara untuk menjawab pertanyaan Anda. Biarkan saya mencoba keduanya. Cara pertama adalah untuk melihat hal-hal dari sudut pandang pasar kerja potensial, keterampilan pengkodean dll. Jadi inilah daftar saya:
Cara kedua adalah melihat sesuatu dari perspektif yang agak abstrak, dan siapa tahu, mungkin juga sedikit filosofis. Daftar berikut ini mungkin tidak memiliki keterampilan terpanas yang diminta pasar kerja, tetapi saya cukup yakin pada saat Anda keluar dari kursus ini, Anda akan memiliki apresiasi yang lebih dalam terhadap seni mengembangkan perangkat lunak.
sumber
Saya juga akan menambahkan Rekayasa Perangkat Lunak atau Praktik Desain ke daftar, meskipun konten mereka biasanya diambil oleh siswa di industri.
Juga, menurut saya (tidak didukung oleh banyak pengalaman) perusahaan tidak benar-benar menginginkan sebagian besar hal-hal teoritis yang diajarkan dalam kursus seperti database dll., Mereka ingin orang-orang mengerti dan dapat menggunakan hal-hal ini.
EDIT: Karena downvote, saya merasa ingin menjelaskan jawaban saya. Saya seorang mahasiswa tahun terakhir ilmu komputer, dan pengalaman saya didasarkan pada magang dan wawancara kerja dengan perusahaan-perusahaan terkemuka di lapangan. Dalam pengalaman saya, orang jarang diminta untuk menggunakan algoritma yang rumit atau kode struktur data yang sangat rumit dalam wawancara atau pekerjaan.
Lebih berguna jika Anda dapat membuat dan menggunakan basis data, menggunakan kontrol sumber, tahu cara men-debug dengan benar, tahu cara menggunakan pola desain dll. Namun, seperti yang saya katakan, keterampilan ini biasanya diambil di industri dan tidak tercakup dalam kursus. Rekayasa Perangkat Lunak / Praktik Desain biasanya melibatkan pembangunan proyek menengah, sangat berguna untuk mempelajari semua keterampilan tesis ini.
sumber
Hal-hal yang saya pelajari di perguruan tinggi yang saya gunakan setiap hari:
Saya berharap saya mengambil kursus basis data. (Saya telah mengambil cukup untuk bertahan sejak saya lulus, tetapi saya berharap saya tahu lebih banyak.) Saya juga berharap kontrol versi diajarkan - itu ada di mana-mana, sangat berguna, dan sama sekali diabaikan dalam kurikulum sekolah saya.
Saya harus mengikuti beberapa kursus matematika. Saya belum pernah menggunakan kalkulus sejak saya lulus. Saya berharap saya mengambil kursus statistik. (Sekali lagi, saya sudah mengambil cukup banyak untuk lulus sejak lulus, tapi saya berharap saya tahu lebih banyak.)
Di luar departemen CS, ikuti kursus menulis. Keterampilan komunikasi tertulis yang baik sangat penting untuk kesuksesan.
sumber
Ada banyak kursus penting, tergantung arah mana yang akan Anda tuju. Namun, dengan asumsi Anda dapat memprogram sama sekali, kursus yang paling penting adalah:
Struktur dan algoritma data
Sebenarnya segala sesuatu dalam komputasi kembali ke penanganan data menggunakan algoritma. Berikan perhatian khusus pada array dan hashtable, karena mereka sejauh ini merupakan struktur data yang paling berguna dalam penggunaan umum, tetapi daftar dan pohon dan grafik (well, daftar adalah jenis pohon terbatas, dan pohon adalah jenis grafik terbatas) akan menjadi penting juga. Selain itu, memahami algoritma sangat penting untuk menghasilkan kode yang tidak buruk. (Kalau tidak, Anda akan melakukan hal-hal yang hanya mengerikan, seperti menggunakan algoritma O ( n 3 ) di mana O ( n log n ) akan dilakukan.) Jika gelar CS Anda tidak memiliki kursus wajib DS + A di atasnya, itu bukan CS. Atau rekayasa perangkat lunak. Atau bahkan hanya pemrograman.
Selain itu, kursus yang menurut saya paling berguna selama bertahun-tahun di berbagai bidang adalah:
Konkurensi
Ada banyak aspek konkurensi, tetapi saya berharap pemahaman tentang perbedaan antara memori bersama dan pesan-lewat. Saya juga ingin ada cakupan yang kuat dari strategi penguncian (mutex, semaphores, dll) dan transaksi.
Ini sangat penting untuk memahami paralelisasi, tentu saja, tetapi juga penting untuk apa pun yang didistribusikan (misalnya, menulis layanan yang terpapar ke internet, meskipun itu adalah single-threaded karena klien akan tetap tidak sinkron). Saya mengerti bahwa ini juga berguna untuk menulis game (yang biasanya multithreaded) dan bekerja dengan perangkat yang disematkan.
Selain itu, saya pikir ini adalah kepentingan terbaik sebagian besar mahasiswa untuk mendapatkan banyak ide berbeda. Banyak bahasa dan paradigma pemrograman. Banyak bidang aplikasi yang berbeda. Jumlah matematika yang masuk akal (sekali lagi, karena sangat berguna) dan juga beberapa paparan faktor manusia dan psikologi (karena setiap perangkat lunak yang berinteraksi dengan pengguna berurusan dengan orang-orang). Bagaimanapun, Anda tidak pernah tahu persis apa yang akan Anda lakukan di masa depan, jadi perencanaan untuk fleksibilitas adalah strategi kehidupan yang hebat.
sumber
Ketika saya masih kuliah, ada beberapa topik yang tidak bisa saya gunakan dalam kehidupan saya yang sebenarnya dan kadang-kadang intuisi itu terbukti benar (Metode Formal benar-benar hanya praktis untuk masalah sepele dalam banyak kasus) dan di lain waktu telah sepenuhnya salah (notasi Big-O sangat berguna) jadi saya kira secara keseluruhan diri saya yang lebih muda adalah bagian yang benar.
Jika Anda ingin mempersiapkan diri Anda untuk dunia nyata, selain hal-hal yang direkomendasikan oleh K-Ran di atas, saya sarankan membaca Kode Lengkap dan menggunakannya sebagai dasar untuk penelitian yang lebih mendalam mengenai topik apa pun yang Anda rasa sulit atau tidak merasa Anda miliki. cukup tertutup.
sumber
Saya pikir Anda harus mempelajari yang berikut:
Sistem Operasi: - Meskipun Anda mungkin tidak membutuhkannya untuk bekerja sebagai programmer tetapi perlu untuk mengetahui bagaimana sistem operasi bekerja dan diharapkan dari lulusan CS. Buku bagus apa pun bisa membantu.
OOP: - Ini roti dan mentega. Harus. Buku jika Anda ingin bertanya: Buku pertama Anda harus: - kepala OOAD pertama, maka Anda bisa pergi untuk buku Grady Booch dan Ivar Jacobson
Struktur Data dan Algoritma: - Sangat penting untuk mengembangkan pemikiran dan pola pikir logis.
Bagi saya ini sudah cukup. Tidak ada kata terlambat. :)
sumber
Sebagai seseorang yang mewawancarai kandidat secara rutin untuk pekerjaan pemrograman, dan seseorang yang setelah berada di industri selama 12+ tahun merasa cukup berhasil, saya akan menyarankan yang berikut ini
Kemudian, beberapa pekerjaan ekstra kurikuler, baca:
sumber
ITU TERGANTUNG , tidak ada jawaban yang bagus untuk pertanyaan ini.
Programmer adalah dunia umum untuk mengidentifikasi seseorang yang menulis perangkat lunak komputer.
Sekarang, di luar sana ada semua jenis perangkat lunak. Misalnya, menggunakan wikipedia sebagai sumber generalisasi, kami dapat menemui 3 generalisasi hebat :
Pada bidang pertama, pemrograman sistem mengembangkan driver perangkat, sistem operasi, server, jadi misalnya Anda dapat mengikuti kursus sistem operasi.
tetapi bagaimana dengan pemrograman perangkat lunak ? di sini sebagai wikipedia menulis Anda dapat mengkompilasi kode, debuggers, interpreter, linker, editor teks, sehingga, kursus dalam teori otomatis, teori bahasa, bahasa dan kompiler dapat berguna.
Bukankah kita dapat berbicara tentang perangkat lunak aplikasi dalam bentuk apa pun:
- video game: aljabar, fisika, kursus berorientasi objek?
- perangkat lunak matematika: kursus matematika?
- pengeditan gambar: matematika, fisika, kursus algoritma?
- otomasi industri: matematika, fisika, algoritma, kursus robot?
- Perangkat lunak medis: biologi, medis, kursus apa lagi?
- Banyak hal di sini: banyak kursus di sini.
Seperti yang Anda lihat ada banyak saja yang bisa Anda ikuti dan akan berguna untuk pekerjaan Anda.
Dalam pengalaman saya, saya adalah rekayasa perangkat lunak sistem dan perangkat lunak aplikasi dalam bidang keamanan (Anda ingin mengikuti kursus keamanan?), Mulai dari sedikit pengalaman dalam pemrograman, saya menjadi lebih menarik dalam algoritme dan sistem terdistribusi, dan lagi-lagi saya merasa tidak nyaman dalam kesederhanaan dari aplikasi tujuan umum yang saya tulis (sniffer, sistem deteksi intrusi jaringan, protokol dissector dan detektor, dll).
Seperti yang telah Anda pelajari dengan buruk dalam ilmu komputer teoretis! sudahkah Anda mengikuti kursus ini? : P
Misalnya, Anda telah belajar bahwa semua bahasa komputer dapat dipasang dalam satu set fungsi matematika yang dapat dihitung dan misalnya jika pengalaman Anda mendapatkan jalur yang sama, segera Anda akan merasa tidak nyaman dalam set kecil kalkulus ini dan seperti saya, Anda dapat mulai melihat bagaimana mengembangkan perangkat lunak tidak begitu menarik dan menakjubkan karena POLA DESAIN yang sama kembali lagi dan lagi (sudahkah Anda mengikuti kursus pola desain?) dan misalnya Anda dapat mulai lebih tertarik pada MENGAPA dan BAGAIMANA bahasa dapat diterjemahkan dalam fungsi matematika dan mulai belajar bahwa bahasa komputer tidak terlalu rumit! Anda dapat segera misalnya menjadi lebih terkejut tentang orang dan psikologi, dan Anda bisa mendapatkan lebih banyak minat tentang hal itu dan menjadi manajer proyek yang baik! Sudahkah Anda mengikuti kursus tentang siklus hidup perangkat lunak?
Jadi sekarang, apa kursus HARUS MEMILIKI dalam karir CS Anda?
Saya sarankan untuk belajar sebanyak mungkin yang dapat Anda pelajari di semua bidang, khususnya di bidang teori, karena di bidang pekerjaan umum Anda dapat segera merasa sangat bosan dengan kompleksitas kecil di sekitar Anda, dan menjadi pekerja penuh waktu Anda memiliki waktu yang sangat sedikit untuk belajar bagaimana hal-hal benar-benar bekerja dan lebih banyak waktu untuk melihat bagaimana orang-orang dengan pengetahuan teoretis yang kuat telah memproyeksikan hal-hal untuk bekerja dan memberi Anda kemungkinan kode untuk mendapatkan makanan di rumah.
ada rasa realitas yang salah dalam ilmu komputer. Ilmuwan komputer misalnya kadang-kadang sangat jauh dari pengembang perangkat lunak.
lihat penjelasan wikipedia.
bersenang-senang dengan hidup :)
2 sen saya.
maaf untuk bahasa inggris saya yang benar-benar buruk.
sumber
Turunkan hal nomor satu yang harus fasih siswa CS adalah bahasa Inggris.
Tanpa pemahaman bahasa Inggris lisan dan tulisan, Anda selamanya akan dirugikan.
Lihat saja segudang pertanyaan yang muncul di situs Stack. Terlalu banyak dari mereka yang sulit diuraikan. Beberapa orang menggunakan campuran l33t, mengirim pesan teks (tidak yakin istilah yang benar). Yang lain membuat pernyataan dan hanya menambahkan tanda tanya sambil kehilangan sedikit pemikiran penting seperti kata kerja atau kata sifat.
Jika Anda tidak dapat berkomunikasi maka Anda tidak akan bisa membuat diri Anda mengerti apalagi memahami apa yang dikatakan orang lain.
Yang lainnya hanyalah detail. Jika Anda dapat berkomunikasi, paling tidak memiliki kecerdasan rata-rata dan dapat memahami apa yang Anda baca maka Anda juga dapat memiliki pemrograman karier yang sukses.
sumber
Saya datang pada ini dari perspektif yang sedikit berbeda dalam bahwa saya tidak lulus di CS, saya lulus di Teknik Elektronik (dengan minor dalam bisnis).
Berdasarkan itu saya pikir daftar hal-hal yang harus Anda pahami relatif singkat karena saya (dan banyak lulusan CS non-lainnya) bertahan hidup bahagia tanpa mengetahui apa pun tentang desain kompiler atau sejenisnya.
Apa yang akan saya katakan saya telah mengambil yang saya temukan berguna:
Dan jika Anda mendapatkan kesempatan untuk belajar tentang manajemen proyek sama sekali maka itu benar-benar tidak ada salahnya tetapi itu diajarkan cukup buruk di universitas dalam banyak hal dan itu adalah sesuatu yang Anda akan pelajari sedikit tentang pekerjaan hanya dengan mengerjakan proyek.
sumber
Saya juga akan menambahkan beberapa mata kuliah dasar Sumber Daya Manusia / Psikologi.
Ini mungkin tampak seperti tambahan yang aneh, tetapi bagian dari pekerjaan secara profesional adalah belajar bagaimana menjual diri sendiri dan bernegosiasi. Berjalan ke wawancara 'nyata' pertama Anda tanpa pengetahuan yang kuat tentang motivasi drone-HR adalah resep untuk bencana dan kemungkinan berakhir dengan siswa menjadi kacau balau dengan gaji rendah.
Kenali musuh Anda sehingga Anda dapat melindungi diri sendiri.
sumber
Tahun 1:
Tahun ke-2:
Tahun ke-3:
Tahun ke 4:
Kursus-kursus tersebut harus menyediakan banyak teori dan praktik pengkodean.
sumber
Aneh tidak ada yang menyebut Arsitektur Komputer.
sumber