it-swarm.asia

Lisansın bilmesi gereken CS dersleri

Üniversitede asla teoriyle ilgilenmedim. Hiç okumadım. Ne kadar denersem deneyim, bir şeyler okuyamadım ve gerçekte neler olduğunu bilmiyordum. Örneğin, otomata teorisi dersimde, profesörüm bana bunun matematiksel yönü ile ilgili her şeyi anlattı, ancak bir kez bile pratikte nerede kullanılacağından bahsetmedi. Bu sadece bir örnek.

Üniversitemi geçmeyi başardım ve bir proje ile staj yaptım, burada bir proje yaptım ve neyse ki ortalamanın üzerinde olduğu için notlarımı rahatsız etmediler.

Şimdi, bir CS öğrencisinin hangi konulardan kesinlikle ve olumlu olarak haberdar olması gerektiğini bilmek istiyorum. Endüstride ilgisi olabilecek konular. Çünkü ellerimde biraz boş zamanım var ve onları iyi anlamam daha iyi olur.

Önerileriniz neler? Birinde olduğu gibi, algoritmalar da bir konudur.

34
Karl

İster inanın ister inanmayın, daha sonraki yaşamda benim için kritik öneme sahip olan şeylerden biri Derleyici İnşaat'dı. Lex ve Yacc kullanan modern namby-pamby sürümü değil, aptallar için.

Kendi sembol tarayıcınızı ve ayrıştırıcıyı sıfırdan yazdığınız GERÇEK derleyici yapısı.

Bu, bir daha asla kullanmayacağımı düşündüğüm bir şey. Ancak son 20 yılda bu kurs ağırlığını 4 kez altın olarak kanıtladı. Yazmam gereken her komut işlemcisi, her gelen mesaj tarayıcı, her kullanıcı dağıtıcısı, her komut dosyası tercümanı, bu dersten ilkeleri kullandı. Bu şekilde yapın ve hayat tatlı, açık ve basittir. VE hatta tüm bilgileri, bunu yapmayan bir iş arkadaşına bile verdim - aslında soyut bir makine için bir derleyici yazmak zorunda kaldı. Ekleyebileceğim çok ticari olarak başarılı oldu.

Eğer herhangi bir konuda yukarı çıkıp bir üniversite dersi öğretim görevlisine teşekkür etmem gerekirse, bu olurdu. O olmadan ben halledebilirdim ama çözümlerim çok daha çirkin olurdu.

(Ve biri atlanmadan ve "iyi Lex ve yacc kullanmış olabilir ..." demeden önce cevap belki de sisteme çok bağlıdır. Bazı durumlarda programlama dilleri C değildi (örneğin PL/M ve Ada), bazı durumlarda platform için hazır bir Lex veya Yacc bulunmamaktaydı.

42
quickly_now
  1. Veri Yapıları/Algoritmalar, özellikle Grafikler. Grafikle ilgili algoritmaları kullanmayı başardığım gerçek dünya durumları benim için sürpriz oldu. Bir veri yapısının veya algoritmanın ne zaman uygun olduğunu bilmeye odaklanın. Örneğin bir problemi görebilmek ve dinamik programlama/açgözlü algoritmayı kullanmayı bilmek önemlidir ve size çok zaman kazandırabilir.

  2. Hesaplama karmaşıklığı çalışma bilgisi. Radx sıralamasının alt sınırının ne olduğunu kafanızın üst kısmından bilmek zorunda değilsiniz, özellikle yazdığınız bir şeyin en kötü durumda çalışma süresinin, özellikle performans açısından kritik projeler için nasıl olduğunu anlamanız gerekir.

  3. İŞLETİM SİSTEMİ. kavramlar. Bellek yönetimi, Zamanlayıcılar, vb. Yazdığınız kodun sürekli olarak etkileşime girdiği göz önüne alındığında, her geliştirici gerçekten işletim sistemleri hakkında sağlam bir anlayışa sahip olmalıdır.

  4. NETSEC. Geliştirme ile ilgili temel güvenlik kaygıları (arabellek taşmaları, xss, SQLI, vb.) Hakkında sağlam bir anlayışa sahip çok az geliştiriciyle karşılaştım. Endüstride başarılı olmak istiyorsanız bu gerçekten bir zorunluluktur. Bir sonraki büyük şeyi yazabiliyorsanız harikadır, ancak verilerini güvende tutmazsanız uzun süre çok fazla kullanıcınız olmayacaktır.

  5. Programlama paradigmaları. OO/Fonksiyonel/Prosedürel programlama özelliklerini ve arasındaki farkları bilir. Şimdiye kadar sahip olduğum en iyi lisans derslerinden biri, dillerin kendilerinde fortan, şema, prolog vb.Için basit 20 öğretim tercümanı yazmaktı. Sadece pozlamanın kendisi, yazılım geliştirmenin temel kavramlarını anlamanıza gerçekten yardımcı olabilir.

37
Kurtis

Mezuniyet koşullarını karşılamak, olabileceğiniz en iyi bilgisayar bilimcisi olmak için yeterli değildir. Tipik bir üniversite müfredatı için, öğreneceğinizden emin olmanız gereken ilk on şey:

  1. Ekonominin temelleri - tamamlayıcılar ve ikameler gibi konuları kapsayan bir giriş kursu, daha büyük ekonomide çalışmak için hayati önem taşır veya sadece anlamak. Giffen Eşyası kavramı size yardımcı olmayacak olsa da, dışsallıklar hakkında bilgi sahibi olmak. Ayrıca, kazanabileceğinizden daha fazla durumun kazan-kazan olduğunu takdir etmenize de yardımcı olabilir.

  2. Bir kanıt nasıl yazılır - Tüm bilgisayar bilimleri bölümleri nasıl bir kanıt yazıldığını bilmelidir. Ve ayrık matematik, dengeli bir kahvaltının bir parçası olsa da, sayılmaz. [Tümevarım sadece bir kanıt tekniğidir ve kanıtlar hakkında fazla bir şey bilmeden edinebilirsiniz.] Kanıtları gerçekten yazmak için cebir veya gerçek analizde bir ders gereklidir. Ve cebir derken, grup teorisini veya soyut cebiri kastediyorum, lisede aldığınız dersi değil. Tam fayda için aynı dönemde cebir ve gerçek analiz alın.

    Kanıt yazmak neden önemlidir? Çünkü programlama yapıyor! Nasıl programlayacağınızı ilk öğrendiğinizde düşünün: bir görev if ve bir döngü gerektiriyorsa, bunları birbirleriyle ilişkili olarak nereye koyacağınız konusunda herhangi bir sezginiz olmayabilir. Ama şimdi aynı görev tamamen doğal hissedecekti. Bir kanıt yazmak çok benzer. Öğrendiğiniz bir dizi hileci var ve öğrendikten sonra işler oldukça farklı görünüyor.

  3. Nasıl yazılır - İster sektörde, ister akademide çalışın, yazılı iletişim becerileri esastır. Farklı bir konuyla ilgili etkili bir yazma kursu değil, bir mekanik kursu bulmanız en iyisidir. Yani, birçok okul yazma kurslarını özel bir konuyla ilgili hale getirerek daha alakalı veya ilginç hale getirmeye çalışacaktır. Kursun “sıkıcı” versiyonuna geçmeye çalışın.

  4. Olasılık ve istatistikler - Sadece bir ders alarak düzgün bir şekilde alacağınız bazı şeyler var. CS ana gereksinimleri (size ayrık matematik, tek değişkenli ve çok değişkenli hesap ve doğrusal cebir vermelidir) ve cebir ve/veya gerçek analiz ile birlikte, istatistik toplama muhtemelen matematikte küçük bir verim verecektir. Öğrenme istatistikleri, diğer bilim insanlarıyla projeleri üzerinde çalışmanıza yardımcı olabilir.

  5. Güncel güncel konu - Önceki yıllarda, veritabanları veya nesne yönelimli programlama olabilir. Bugün web programlama veya servis odaklı mimari olabilir. Mevcut fad ne olursa olsun, içinde bir ders aldığınızdan emin olun. Sadece hevesin ne hakkında olduğunu görmek için.

  6. Durma sorunu - Çoğu sorun makineler tarafından çözülemez. Bu, kültürümüzün o kadar iyi emdiği, artık şok edici gelmediği oldukça derin bir fikir. Aynı şey radyo, Goedel ve atom bombası için de geçerli; postmodern sanata ve soğuk savaşa kadar bu kavramlarla bir kez daha başa çıkabildik. Bununla birlikte, hesaplanabilirlik teorisinde bir ders almak sizi bu oldukça şaşırtıcı kanıtlara yeniden duyarlı hale getirebilir.

  7. Saf fonksiyonel programlama - Büyük bir olasılıkla saf fonksiyonel programlamaya girmezsiniz, eğer araştırma yapmazsanız veya birkaç şirkette çalışmazsanız, ancak daha iyi bir programcı olmanıza yardımcı olacaktır. Bunun nedeni, birçok yeni soyutlama biçimini ve Kilise sayıları ve süreklilikleri ve monadlar gibi kavramları öğrenmeniz ve evet, özyineleme ve bu araçlar bir sonraki Java programınıza da uygulanabilir).

  8. P ve NP - Tamam, bu zaten kritik yolunuzda ama yine de dikkat edin. Birini yanlış bir şekilde NP “polinom olmayan” olarak adlandırdığında düzeltebildiğinizden emin olmak istersiniz.

  9. Elbette nefret ettiğinizden emin olduğunuz konular - Bu, çok düşük seviyeli, çok teorik veya CS olmayan kurslar, çok sakıncalı, çok zor veya çok sıkıcı bulursunuz. Böyle bir kurs sizin için bir sorun gibi görünüyorsa ve kendinizi başkalarına neden bu kadar çok almak zorunda olmadığınıza sevindiklerini açıklarken, çok şey öğreneceğinizi söylemelisiniz. ders alarak! Belki de dersin materyallerini öğrenmezsiniz, ancak kendi sınırlarınız ve belki de kendinize yaptığınız gerekçeler hakkında daha fazla şey öğreneceksiniz. [İpucu: Genellikle zayıflar.]

  10. Seveceğinizden emin olduğunuz CS olmayan kurs - Sonunda biraz eğlenmelisiniz. Muhtemelen en azını alacağınız kurs budur, ancak yine de alın. Bir kez yapın. Birçok kursu seviyorsanız, o zaman sizin için iyi, ancak bu listedeki diğer kursları kapsamadığından emin olun.

Buradaki yaklaşımım, gerçekten alabileceğiniz kurslara dayalı olarak pratikti. Ve öğrenilmesi muhtemel öğrenme hedeflerine odaklandım. Not: Bu cevap benim bir blog yayınından uyarlanmıştır Her Bilgisayar Bilimi Binbaşı Öğrenmesi Gereken On Şey .

21
Macneil

Çok sayıda röportaj yapan birkaç şirket temsilcisi ve arkadaşı ile konuştuktan sonra:

  • Veritabanları
  • OOP
  • Algoritmalar
  • Veri Yapıları

yeni işe alımlar için "dersler" olma eğilimindedir (ya da dedikleri gibi, "şiddetle tavsiye edilir" dersleri).

Yararlı olabilecek diğer dersler bilgisayar güvenliği, Montaj ve makine mimarisidir. Profesörlerimin çoğu bana bir derleyici kursu önerdi. Ayrıca, zamanınız varsa, grafik teorisi, ayrık matematik ve kombinatorik gibi matematik derslerini şiddetle tavsiye ederim. CS derslerinin çoğunun parladığı, ancak çok karmaşık programlar yazarken çok yararlı olan bu sınıflarda birçok akıl yürütme becerisi öğrenirsiniz.

Umarım yardımcı olur!

8
K-RAN

Büyük ölçüde dereceyle ne yapmayı planladığınıza bağlıdır. Görünüşe göre çoğu CS binbaşı bir tür yazılım mühendisi olarak karşımıza çıkıyor. Bunu göz önünde bulundurarak, neden daha fazla insanın sadece yazılım mühendisliğinde önemli olmadığını bilmiyorum. Özellikle kamu kurumlarında yeterli yazılım mühendisliği programının bulunmadığından şüpheleniyorum.

Gömülü bir zeminden geliyorum. Birlikte çalıştığım her bir kişinin ya bir EE derecesi ya da CE derecesi vardı ve bunun nedeni kısmen "yaşlı adamlar" ne zaman kolejde o kadar çok CE programı yoktu. Bu nedenle, gömülü alanda çalışmak istiyorsanız, bir donanım arka planının arzu edildiği açıktır.

Bununla birlikte, çalışmak istediğiniz alan ne olursa olsun, her programcının montaj programlamasında bir ders alması gerektiğine inanıyorum. Bunu asla kullanamazsınız, ancak bir işlev çağrısı sırasında işlemci düzeyinde neler olduğunu, kesintilerin nasıl ele alınacağını, belleğin nasıl yapılandırıldığını veya farklı adresleme modlarının nasıl kullanıldığını öğretecektir. Tüm bunların sizi daha iyi bir programcı yapacağına inanıyorum.

Ayrıca, belli olmasa da, belirli bir platform için Veri Yapıları ve Algoritmalar düşünüldüğünde bunların bazıları önemli konulardır.

6
Pemdas

Sorunuzu cevaplamanın 2 yolu vardır. Her ikisini de deneyeyim. İlk yol, iş piyasası açısından potansiyel bir bakış açısına, kodlama becerilerine vb. Bakmaktır. İşte benim listem:

  1. Veri yapısı
  2. Algoritma Analizi
  3. Nesne yönelimli programlama
  4. C++ veya Java'da belirli bir kurs
  5. İşletim sistemleri
  6. Kullanıcı arayüzü tasarımı
  7. Paralel Programlama

İkinci yol, olaylara biraz soyut bir perspektiften bakmaktır ve kim bilir, biraz da felsefi olabilir. Aşağıdaki liste, iş piyasasının talep ettiği en sıcak becerilere sahip olmayabilir, ancak bu kurslardan çıktığınızda yazılım geliştirme sanatının daha derin bir takdirine sahip olacağınızdan eminim.

  1. Sonlu Dil ve Otomata Teorisi
  2. Derleyici Yapımı
  3. Grafik teorisi
  4. Yapay zeka
5
Fanatic23

Ayrıca, içeriği genellikle sektördeki öğrenciler tarafından alınmasına rağmen, Yazılım Mühendisliği veya Tasarım Uygulamaları'nı listeye ekleyeceğim.

Ayrıca, bence (çok fazla tecrübeyle desteklenmiyor) şirketler, veritabanları vb. Derslerde öğretilen teorik şeylerin çoğunu gerçekten istemiyorlar, insanların anlamasını istiyorlar ve kullanabiliyorlar bu şeyler.

EDIT: Downvote nedeniyle, cevabımı açıklamak istiyorum. Ben son sınıf bilgisayar bilimi öğrencisiyim ve deneyimim, alanında lider firmalarla yaptığım staj ve iş görüşmelerime dayanıyor. Deneyimlerime göre, insanların nadiren karmaşık algoritmalar kullanmaları veya görüşmelerde veya işlerde çok karmaşık veri yapılarını kodlamaları gerekmektedir.

Eğer veritabanları oluşturmak ve kullanmak, kaynak kontrolünü kullanmak, düzgün hata ayıklamayı bilmek, tasarım kalıpları nasıl kullanılacağını bilmek vb. Eğer daha yararlıdır. Yazılım Mühendisliği/Tasarım Uygulamaları tipik olarak tüm tez becerilerini öğrenmek için çok yararlı olan orta büyüklükte bir proje oluşturmayı içerir.

2
apoorv020

Hangi yöne gitmeyi planladığınıza bağlı olarak birçok önemli ders vardır. Ancak, programlayabileceğinizi varsayarsak, en önemli dersin olması gerekir:

  • Veri yapıları ve algoritmalar

    Hesaplamadaki hemen hemen her şey, algoritmaları kullanarak veri işlemeye geri döner. Diziler ve karma tablolara özellikle dikkat edin, çünkü bunlar yaygın kullanımdaki en yararlı veri yapılarıdır, ancak listeler ve ağaçlar ve grafikler (listeler sınırlı ağaç türleri ve ağaçlar sınırlı grafik türleri) önemlidir. Ayrıca, algoritmaları anlamak, korkunç olmayan kodlar üretmek için hayati önem taşımaktadır. (Aksi takdirde O kullanmak gibi korkunç şeyler yaparsınız (n3) algoritması burada bir O (n günlükn) CS derecenizde bir zorunlu DS + Kursu yoksa CS değil. Veya yazılım mühendisliği. Ya da sadece programlama.

Bunun yanı sıra, yıllar boyunca birçok alanda en yararlı bulduğum kurs şu şekildedir:

  • eşzamanlılık

    Eşzamanlılığın birçok yönü vardır, ancak paylaşılan bellek ile mesaj iletme arasındaki farkın anlaşılmasını beklerim. Ayrıca kilitleme stratejilerinin (muteksler, semaforlar, vb.) Ve işlemlerin güçlü bir şekilde kapsanmasını isterdim.

    Bu, paralelliği anlamak için hayati önem taşır, ancak dağıtılan her şey için de önemlidir (örneğin, internete maruz kalan bir hizmet yazmak, tek iş parçacıklı olsa bile yine de eşzamansız). Oyun yazma (genellikle çok iş parçacıklı) ve gömülü cihazlarla çalışmak için de yararlı olduğunu anlıyorum.

Bunun yanı sıra, mümkün olan en fazla sayıda farklı fikre maruz kalmaları, çoğu lisans öğrencisinin çıkarına olduğunu düşünüyorum. Birçok programlama dili ve paradigması. Birçok farklı uygulama alanı. Makul miktarda matematik (yine, çünkü sık sık yararlıdır) ve ayrıca insan faktörlerine ve psikolojisine maruz kalma (çünkü kullanıcılarla etkileşime giren herhangi bir yazılım insanlarla ilgilenmektedir). Sonuçta, gelecekte ne yapacağınızı asla bilemezsiniz, bu nedenle esnekliği planlamak harika bir yaşam stratejisidir.

2
Donal Fellows

Her gün kullandığım üniversitede öğrendiğim şeyler:

  • Nesneye yönelik tasarım metodolojisi
  • Tasarım desenleri
  • Düzenli ifadeler
  • Temel algoritmalar ve analiz
  • Veri yapıları

Keşke bir veritabanı kursu alsaydım. (Mezun olduğumdan beri alabilecek kadar aldım, ama daha fazlasını bilseydim.) Ayrıca, sürüm kontrolünün öğretilmesini diliyorum - her yerde, son derece yararlı ve okulumun müfredatında tamamen göz ardı edildi.

Birkaç matematik dersi almak zorunda kaldım. Mezun olduğumdan beri matematik kullanmadım. Keşke bir istatistik kursu alsaydım. (Yine, mezun olduktan sonra alabilecek kadar aldım, ama keşke daha fazlasını bilsem.)

CS bölümünün ötesinde bir yazma kursuna katılın. İyi yazılı iletişim becerileri başarı için gereklidir.

2
pwc

Kolejdeyken gerçek hayatımda kullanamadığım birkaç konu vardı ve bazen bu sezginin doğru olduğu kanıtlandı (Resmi Metotlar gerçekten sadece çoğu durumda önemsiz problemler için pratiktir) ve diğer zamanlarda tamamen yanlış olmuştur (Big-O notasyonu çok yararlıdır) bu yüzden sanırım bütün genç benliğim bir parça haklıydı.

Kendinizi gerçek dünyaya hazırlamak istiyorsanız, @ K-Ran'ın yukarıda önerdiği şeylere ek olarak, Kod Tamamlandı okumayı ve zor bulduğunuz herhangi bir konuda daha derin bir araştırma için bir temel olarak kullanmanızı öneririm ya da yeterince örtülü hissetmiyorsun.

1
glenatron

İşleri programlama için adaylarla düzenli olarak görüşen biri ve 12 yıldan fazla bir süredir sektörde kaldıktan sonra makul bir şekilde başarılı olan biri olarak, aşağıdakileri öneririm

  • Veritabanı Tasarımı ve SQL: Kaç programcının basit SQL bilmediği şaşırtıcıdır ve iyi SQL becerisine sahip olanlar paha biçilmezdir. İyi bir veritabanı tasarlayabilmek için belirli bir veritabanı yapısına sahip bir şirkette işe yaramayabilir, yeni başlayanlar ve değişimden geçen şirketler için bir zorunluluktur!
  • Tasarım desenleri. İyi tasarım hakkında daha iyi kararlar vermenize yardımcı olacaklar
  • OOP: Bu genellikle çoğu kurs için bir ön koşuldur, ancak yardımcı olacaktır.
  • Algoritmalar: Çünkü çok az insan özyinelemenin ne olduğunu biliyor, bir sürü karmaşık kodlamayı kurtarabildiğini anlayalım.
  • Veri Yapıları: Çoğu modern dil sizin için bu şeylerle ilgilenir, ancak bunları anlamak iyi tasarımın anahtarıdır.

Sonra, bazı müfredat dışı çalışmalar okuyun:

  • Sertifika türü kitaplar. Genellikle size kapakların sözdizimi ve operatörlerin altında olduğunu öğretirler. Neden bu kadar yaygın olan 'çünkü işe yarıyor' yerine bir şey yaptığınızı bilmek çok daha önemlidir.
1
Codemwnci

DEPENDS , bu soru için iyi bir cevap yok.

Programcı bilgisayar yazılımı yazan birini tanımlamak için genel bir dünyadır.

Şimdi, her türlü yazılım var. Örneğin, wikipedia'yı bir genelleme kaynağı olarak kullanarak büyük genelleme :

  • sistem programlama
  • programlama yazılımı
  • uygulama yazılımı

Birinci alanda sistem programlama aygıt sürücüleri, işletim sistemi, sunucular geliştirin, böylece bir işletim sistemi kursunu takip edebilirsiniz.

peki ya programlama yazılımı ? Burada wikipedia yazdığı gibi derleyiciler, hata ayıklayıcılar, yorumlayıcılar, bağlayıcılar, metin editörleri kodlayabilirsiniz, böylece, otomatik bir teori kursu, dil teorisi, dil ve derleyiciler yararlı olabilir.

Herhangi bir tür uygulama yazılımı hakkında konuşamayız:
- video oyunları: cebir, fizik, nesne yönelimli dersler?
- matematiksel yazılım: matematiksel dersler?
- görüntü düzenleme: matematiksel, fizik, algoritma dersleri?
- endüstriyel otomasyon: matematiksel, fizik, algoritma, robotik dersler?
- tıbbi yazılım: biyoloji, tıbbi, başka ne dersiniz?
- burada bir sürü şey var: burada bir sürü ders var.

Gördüğünüz gibi takip edebileceğiniz çok şey var ve işiniz için faydalı olacak.

Deneyimlerime göre, güvenlik (bir güvenlik kursunu izlemek ister misiniz?) Alanında bir sistem yazılımı mühendisliği ve uygulama yazılımıyım, biraz programlama çok deneyim ben algoritmalar ve dağıtılmış sistemde daha ilginç alıyorum ve yine ben yazdım genel amaçlı uygulamanın sadeliği (sniffer, ağ saldırı tespit sistemi, protokol disektör ve dedektör, vb) rahatsız hissediyorum.

Teorik bilgisayar bilimlerinde öğrendiğiniz gibi! bu kursları flört ettin mi : P

Örneğin, tüm bilgisayar dillerinin bir dizi hesaplanabilir matematiksel fonksiyona yerleştirilebileceğini öğrendiniz ve örneğin deneyiminiz aynı yolu elde ederse, yakında bu küçük matematik setinde rahatsız olacaksınız ve benim gibi nasıl geliştiğini görmeye başlayabilirsiniz. yazılım o kadar ilgi çekici ve şaşırtıcı değil, çünkü aynı DESIGN DESTERN bir kez daha geri geliyor (tasarım deseni kurslarını takip ettiniz mi?) ve örneğin NEDEN ve NASIL dilinin matematiksel fonksiyona çevrilebildiği ve bilgisayar dilinin çok karmaşık olmadığını öğrenin! yakında kişi ve psikoloji hakkında daha fazla şaşırabilirsiniz ve bu konuda daha fazla ilgi çekebilir ve iyi bir proje yöneticisi olabilirsiniz! Yazılım yaşam döngüsü ile ilgili dersleri takip ediyor musunuz?

Peki, şimdi CS kariyerinizde ZORUNLU kursu nedir?

Her alanda, özellikle teori alanında öğrenebileceğiniz kadar öğrenmenizi öneririm, çünkü ortak çalışma alanında yakında etrafınızdaki küçük karmaşıklıktan gerçekten sıkılmış hissedebilirsiniz ve tam zamanlı bir işçi olmak için gerçekten daha az zamanınız var. Güçlü teorik bilgiye sahip insanların işleri nasıl projelendirdiğini görmek ve evde yiyecek almak için kodlama imkanı vermek için işler gerçekten nasıl çalışır ve çok daha fazla zaman.

bilgisayar biliminde yanlış bir gerçeklik duygusu vardır. Örneğin, bilgisayar bilimcisi bazen yazılım geliştiriciden çok uzaktadır.

wikipedia açıklamasına bir göz atın.

hayat ile eğlenin :)

benim 2 sent.

gerçekten kötü İngilizcem için üzgünüm.

1
boos

Bence aşağıdakileri incelemelisiniz:

İşletim Sistemi: - Bir programcı olarak çalışmanıza gerek olmasa da, bir işletim sisteminin nasıl çalıştığını bilmek ve CS gradından beklenmesi önemlidir. Herhangi bir iyi kitap yardımcı olabilir.

OOP: - Bu ekmek ve tereyağı. Bir zorunluluk. Sormak istediğiniz kitaplar: İlk kitabınız şöyle olmalıdır: - önce OOAD'a gidin, sonra Grady Booch ve Ivar Jacobson'un kitabına gidebilirsiniz

Veri Yapıları ve Algoritmalar: - Mantıksal düşünme ve zihniyet geliştirmek çok önemlidir.

Benim için bu kadarı yeterli. Asla geç Değil. :)

1
Abhi

Biraz farklı bir perspektiften geliyorum, çünkü CS'de mezun olmadım, Elektronik Mühendisliği'nden mezun oldum (küçük bir işletme ile).

Buna dayanarak, ben (ve diğer CS olmayan mezunlar) derleyici tasarımı veya benzeri hakkında bir şey bilmeden mutlu bir şekilde hayatta kaldıkça zorunl anladığınız şeylerin bir listesi olduğunu düşünüyorum.

Söyleyebileceğim yararlı bulduğumu öğrendim:

  • RDBMS tasarımı - RDBMS'ler çoğu sistem ve sitenin arkasında bulunur ve en azından neler olup bittiğinin temellerini anlamalısınız (bunu işte öğrendim).
  • Temel UI Tasarımı - çalıştığım en iyi programcılar, cehennem kadar çirkin olmayan kullanışlı bir uygulama üretebilirler. Biri hariç ama kuralı ispatlayan istisna.
  • Bazı temel programlama - yani basit. Bazı C (görüntü işleme ve gömülü sistemler için), bazı Montaj Dili (kursu tamamladıktan birkaç hafta içinde unutmuş olduğum) ve bazı Pascal (temel bir bilgisayar kursu tüm mühendisler için standarttı) öğrendim. Röportaj yaparken, ticari kuruluşların ne kadar az sayıda CS mezununun gerçekten programlayabileceği karşısında şaşkına döndüm, bu yüzden fazla beklemiyorum, ancak temel bilgileri bilmelerini bekliyorum.
  • Mantık - Bunu dijital elektronik, matematikçiler teori yoluyla öğrendim, CS dereceleri programlama yoluyla öğrendim, ancak öğrenirseniz de, ona kadar geldiği için iyi bir kavrayışa sahip olmalısınız.
  • İletişim becerileri - Üniversitemde gerçek derecem, sunum becerilerim ve atılganlık dışında birkaç ders yaptım. Çok sağduyulu ama mantıklı şeylere birkaç kez söylenmesi asla acıtmıyor.
  • İşletme ve muhasebenin temelleri. Bazı programcılar önemli değil gibi davranırlar ama bence bir şirkette çalışan herkes için önemlidir - oyun bu şekilde çalışır ve hayatınızı kontrol eder, bu yüzden neden en azından nasıl ve neden oluyor?

Ve eğer proje yönetimi hakkında bilgi edinme şansına sahip olursanız, bu gerçekten zarar görmez, ancak bu birçok durumda üniversitede oldukça kötü bir şekilde öğretilir ve bu sadece projeler üzerinde çalışarak iş hakkında biraz öğreneceğiniz bir şeydir.

1
Jon Hopkins

CS öğrencilerinin akıcı olması gereken bir numaralı şey İngilizce'dir.

Hem yazılı hem de sözlü İngilizce anlamadan sonsuza dek dezavantajlı olacaksınız.

Stack sitelerinde gelen sayısız soruya bakın. Birçoğunun deşifre edilmesi zordur. Bazı insanlar l33t, manifatura karışımı kullanır (doğru terimden emin değilim). Diğerleri bir açıklama yapar ve fiiller veya sıfatlar gibi önemli küçük düşünceleri kaçırırken bir soru işareti ekler.

İletişim kuramıyorsanız, kendinizi başkalarının ne söylediğini daha az anlamanız için yapamazsınız.

Diğer her şey sadece detaylar. İletişim kurabiliyorsanız, en azından ortalama bir zekaya sahipseniz ve ne okuduğunuzu anlarsanız, başarılı bir kariyer programlamanız da olabilir.

1
NotMe

Listeye bazı temel İnsan Kaynakları/Psikoloji dersleri de eklerim.

Bu tuhaf bir ekleme gibi görünebilir, ancak profesyonel olarak çalışmanın bir kısmı kendinizi nasıl satacağınızı ve pazarlık edeceğinizi öğrenmektir. HR-drone'nun motivasyonları hakkında sağlam bir bilgi sahibi olmadan ilk 'gerçek' röportajınıza yürümek, felaket için bir reçetedir ve öğrencinin düşük maaşlı bir maaşa batmasıyla sonuçlanması muhtemeldir.

Kendinizi koruyabilmeniz için düşmanınızı tanıyın.

0
Peter Bernier