İncelediğiniz ancak alan için önemli olan en zor CS konusu / teorisi hangisidir? Ve neden lütfen?
İncelediğiniz ancak alan için önemli olan en zor CS konusu / teorisi hangisidir? Ve neden lütfen?
Yanıtlar:
“Bilgisayar biliminde 2 zor sorun var: önbellekleme, adlandırma ve birebir hatalar”
Dürüst olmak gerekirse, derleyici yapımı!
Algoritma Tasarımı ve Analizi
Bence bu soru sahip olduğunuz öğretmene ve bu konunun kariyerinizde nasıl düzenlendiğine bağlı.
Analiz algoritmaları birinin istediği kadar zor olabilir. Çözülmemiş sorunların olduğunu ve sadece bunu değil: çözülemeyen sorunları hesaba katın.
Mesele şu ki bir sorununuz olabilir ve çözülemeyeceğini biliyorsanız, bu mükemmeldir. Ama ya yapmazsan? NP-Complete olduğunu göstermeye çalışırken veya çözmek için polinom zaman çözümü bulmaya çalışırken çok zaman harcayabilirsiniz.
NP-Tamamlama'yı göstermek kolay değildir. Evet, birçok sorun biliniyor, ancak mesele bunun NP-Complete olduğunu göstermek için indirimler bulmak. Ya bunu göstermeye çalışmak için çok fazla saat / gün / ay harcıyorsanız ve polinom zamanında çözülebilir mi? :)
Derleyiciler , Grup teorisi ve İlkel Özyinelemeli İşlevler gibi ders planı veya öğretmenin istediği kadar zor olabilecek başka konular da vardır ;)
Örüntü Tanıma yani Yapay Zeka. Bu, Optik Karakter Tanıma, Sesden metne, yüz tanıma vb.Gibi diğer desen tanıma araçlarıyla birlikte akıllı bilgi işlem anlamına gelir.
Yapabileceğiniz ya da bilgisayarlarla yapabileceğiniz “havalı” şeylerin çoğu bu algoritmalara güveniyor ve biz onlarca yıl boyunca onları çok başarılı olmadan mükemmelleştirmeye çalışıyoruz.
Benim seçimim hesaplanabilirlik teorisi
(Hmm ... belki o kadar önemli değil, ama kesinlikle zor oldu)
Bilgisayar Bilimlerinde sadece iki zor sorun vardır: önbellek geçersiz kılma ve bir şeyleri adlandırma. - Phil Karlton
kategori teorisi (ayrık matematik), ama buna değer
Kriptografi
Bunu biraz yanlış yaparsanız, bir şirkete milyonlarca mal olabilir.
İşletim Sistemleri, özellikle diş açma ile ilgili olan kısmı.
Bunun nedeni 5 filozofun çatalla pizza yemesini zorlaştırmak değil. Bunun nedeni, çok iş parçacıklı kod yazmanın kendi başına zor olması ve insanın (en azından erkek - eşime göre) zihninin hesaplaması zor olması değildir.
Derleyici Tasarımı için de oy kullanıyorum. Özellikle DFA ve NFA bölümünün geldiği yerde. NP sorunları ve diğer konular hakkında da o kadar net değilim.
Teknik olarak bu bir matematik dalıdır, ancak CS'de son derece önemlidir.
CS'deki hemen hemen her şey kuyruklara (görünür (açık) ve görünmez (çok açık veya zımni değil) dayanmaktadır.
CS'nin ilk günlerinde kuyruklar aşikardı.
Bir program sırası (her program bir kart destesi).
Günümüzde kuyruklar çok açık değil. Örneğin internet: paket anahtarlamalı bir ağdır, ancak paketler kuyruklar oluşturur ve paketleri yönlendirmek bir kuyruk minimizasyonu şeklidir.
Kursta verdiğiniz oyuncak problemleri çok zor değil, ama gerçek problemleri düşünmeye başladığınızda ciddi bir angaryaya dönüşüyor.
İstemci ne istediğini gerçekten bilmiyorsa, müşteri gereksinimlerini yorumlamak . Bu kolejde öğretilmez ve sahip olması gereken en temel becerilerden biridir.
Şahsen benimki Formal Logic'ti. Başlamak zor oldu, ama bir kez kuralları indirip onunla yeterince oynamayı başardığınızda, beyninizLogic++;
, bu da gelişimde çok iyi bir şeydir.
Bir yan not olarak, soruyu doğrudan cevaplıyorum - bu derecemi yaptığımda kesinlikle en zor konu değildi, ama muhtemelen en zor "gerçek hayatta uygulanabilir" konuydu.
Derleyici Konstrüksiyonları. Zor ama arkasındaki kavramları anlamak zorunda
Çekirdek Tasarımı kimse var mı? Nasıl yapıldığını ve bir işletim sistemi için hedeflenen özelliklerin ne olduğunu gerçekten bilmiyorum, ama benim için bir çekirdek tasarlamayı düşünmek göz korkutucu bir görev olmalı.
Bilgisayar güvenliğini de düşünüyorum ; Tabii ki, belirgin arabellek taşmaları, XSS ve SQL enjeksiyonları dışında bir sistemi güvensiz kılan şeyleri gerçekten bilmiyorum.
Emin değilim, ama bazı algoritmalar da güvensiz görünüyor; MetaSploit projesine bakın, her türlü güvenlik ihlali türünü listeler: bir programın kusurlanmasının birçok yolu olduğunu görebilirsiniz.
Sahada pek çok garip konu var, ancak kalıcı zorluk için seçimlerim Global Sistem Özelliklerini içeren konular . Bu genel konuya örnekler:
Bunlar zor çünkü sadece her şey doğru olduğunda var olan bir şeyin peşindesiniz; Eğer küresel bir sistem özelliği ve henüz neredeyse tüm mevcut araçları (ve ihtiyaç bütün deneyimlerime gerçek problemlere ölçek olduğunu olanlar) sadece gerçekten yerel muhakeme yapmak. Bu, programın parçaları hakkında akıl yürütmeden zor olan tüm shebang'a gitme sürecidir, çünkü özellikle kendilerinde doğru olan ancak bileşenlerin yanlış düzenlenmiş olduğu için hala ince hataların olduğu parçalara sahip olmak tamamen mümkündür; böcekler istenmeyen ortaya çıkan özellikler olabilir…
Yönetim Bilişim Hizmetleri
Üniversite dönemim boyunca, her dönem beni tamamen çıldırtan bir yönetim dersi alırdım.
Zorlu! gibi iyi denekler Derleyici Tasarımı , OS Tasarım vs zor ama gerçekten ilginç ve zorlu vardır. Gerçekten can sıkıntısı dolu ve teori çok geçmesi gibi Yönetim Bilgi Sistemi / Hizmetleri vb gibi konularda berbat.
C / C ++ ile çalışıyorsanız işaretçiler bilmek en önemli kavramdır. Ama bir şekilde üniversitede tam olarak anlamadım.
Algoritma Tasarımı ve Analizi. Bilinen algoritmaları anlamak ve analiz etmek o kadar da zor değildir, zor problemler için yeni algoritmalar tasarlamak ve analiz etmek zordur ve birçok farklı tekniğin uygulanmasında birçok alanın ve uygulamanın geniş bir şekilde anlaşılmasını gerektirir.
İncelediğiniz ancak alan için önemli olan en zor CS konusu / teorisi hangisidir?
Ayrık matematik.
Bu zordu çünkü teoriler birbirleriyle çok gevşek bir şekilde ilişkilidir, ancak CS'de kullanılırlar. Sanırım çok fazla ezber ...
Tümevarım, Büyük O, Özyineleme, bölme ve fethetme, Grafik Teorisi, falan filan .. argh!
Derleyici benim için kolaydı, çünkü Automata Teorisi'ni almak zorunda kaldık. ^^
Cevaplarınızı beğendim (ve onları oylamayı unutmadım), derleyici, çekirdek vb. Gibi, ancak programcıların çoğu bu sorunlarla hiç karşılaşmadı. Biraz daha kolay, ancak daha yaygın bir sorun var: eşzamanlılık - iş parçacıkları, kilitleme. Eşzamanlılık mimarisinde küçük bir hata bile yaparsak, büyülü hatalar üreten bir program yazmak çok kolaydır.
Yani, diyorum ki, bilgi işlemdeki en zor sorun değil, ama yaygın olarak kullanıldığı için tehlikeli bir konudur.
Nesne yönelimli programlama
Muhtemelen dişlerimi FORTRAN ve APL'de kestim çünkü kesinlikle prosedürel dillerden nesnelere geçiş yıllardır uğraştığım bir şeydi. Sözde 'uzmanlar'ın nesneye yönelik olmanın ne anlama geldiği ve nesne yönelimli programlar oluşturmanın en iyi / uygun yolları hakkında çelişkili makaleler ve öğreticiler yazmasına yardımcı olmaz.