Programcılar için teorik bilgisayar bilimi kendi kendine çalışma kaynakları


14

Oldukça yetkin bir yazılım mühendisiyim, ancak fazla teori bilmiyorum. Daha fazla teori öğrenmek istiyorum. İlgilendiğim özel konular: hesaplama karmaşıklığı, biçimsel diller ve tür teorisi. Fakat bu alanları öğrenmeye nasıl başlayacağım konusunda kayboluyorum.

Kendi kendine çalışma yoluyla daha fazla teori öğrenmek isteyen birine hangi kaynakları önerirsiniz? Yazılım mühendisleri için herhangi bir teorik bilgisayar bilimi kendi kendine çalışma kılavuzu var mı?


3
Ne öğrenmek istediğinize bağlı. Arora-Barak , hesaplama karmaşıklığı teorisine kapsamlı bir giriş yapar (ve çevrimiçi olarak ücretsiz olarak mevcuttur). Yani başlamak için iyi bir yer.
Thomas,

4
Kolejde / üniversitede veri yapıları, algoritmalar vb. Gibi teorik dersler aldınız mı? Tipik olarak lisans teorisi derslerini almadıysanız, bu dersler için ders kitapları iyi bir başlangıç ​​noktası olacaktır. Eğer wikipedia makalelere bir göz atabilirsiniz Bundan sonra bizim kitapların listesi ve videolar listesinde , Coursera / Udacity / EDX online kurslar / ... Coursera oldukça güzel teori sahası bulunmaktadır.
Kaveh

Üniversitede ne okudun?
Omar Shehab

Ne tür diller programlıyorsunuz? Teorik CS'nin çoğu somut bir şeyle birlikte öğrenilebilir. Örneğin, resmi diller hakkında daha fazla bilgi edinmek istiyorsanız, düzenli diller / ifadeler (yani regexp'ler) derleyiciler için öğrenmeye başlamak için iyi bir yerdir. Tür teorisi için, haskell, F # veya ML gibi statik olarak yazılmış bir dille oynamak isteyebilirsiniz.
Bebek Ejderha

Dewdney'in New Turing Omnibus'unu geniş / erişilebilir bir giriş / anket / kesit olarak deneyin . ayrıca bkz. TCS'ye ilham veren pop bilim kitapları
vzn

Yanıtlar:


7

Birkaç farklı alana sahip geniş bir alan.

Bilgisayarların ne olduğu hakkında en temel fikirlerden bazılarıyla başlıyorum: Hopcroft ve Ullman, "Otomata Teorisine Giriş, Diller ve Hesaplama".

Özellikle tavsiye etmemin sebebi, ispatlara verdikleri vurgu. Onlar titiz bir düşünce yolu boyunca size rehberlik eder. Program yazma ve bilimsel olma arasındaki fark budur.


1
Teşekkürler! Bunun bir şey değiştirip değiştirmediğini bilmiyorum, ama aslında kanıta dayalı matematikte biraz arka planım var (muhtemelen soruda bundan bahsetmeliydim). Kanıta dayalı gerçek analiz, nokta-set topolojisi ve soyut cebir yaptım.
Henry H.

O zaman çok hızlı bir şekilde üzerinde çalışabileceksiniz :)
Kate F

onun bir farkı değil fark. CS birçok başka ilkeyi de
içeriyor

Titizlik ihtiyacının programlama ve matematik arasında gerçekten bir fark olduğunu düşünmüyorum. Programlama ve kanıtlama teoremleri çok ilgili görevlerdir (bkz. Curry-Howard İzomorfizmi) ve neredeyse hiç matematiksel olmayan görev programlamadan daha fazla titizlik gerektirir. Derleyiciler hataları kanıtları okuyan insanlara göre çok daha az affedicidir.
Jan Johannsen

2
@JanJohannsen Kesinlikle katılmıyorum - örneğin, bkz. C için Tanımsız Davranış
Kate F

9

Tip teorisi hakkında bilgi edinmenin birkaç yolu vardır. Çalışan bir programcı için B. Pierce'ın Türleri ve Programlama Dilleri iyi bir başlangıçtır. R. Harper'ın Programlama Dilleri için Pratik Temeller de iyi olabilir. Operasyonel semantik hakkında biraz daha kolay arka plan okumak istiyorsanız, G. Winskel'in , Programlama Dillerinin Resmi Semantiği: Bir Giriş'i öneriyorum . T. Nipkow, G. Klein, Beton Anlambilimi ileWinskel'in kitabının bir çeşidi Isabelle / HOL interaktif kanıt asistanı için resmileştirildi. Sadece bu kitaptan (veya herhangi bir kitaptan) bir prover ile uğraşmak gerçekten zor, yakınlardaki bir uzmanın soru sormasını istersiniz. Yazı teorisine daha matematiksel bir yaklaşım istiyorsanız, JR Hindley, JP Seldin, Lambda-Calculus ve Kombinatörler: Bir Giriş veya H. Barendregt, Tiplerle Lambda Calculi'ye bakabilirsiniz . Rağmen Barendregt başlayan tavsiye etmem.

Tek bir öneri istiyorsanız, Kısım VI (Yüksek Dereceli Sistemler) hariç tüm Pierce'ı okuyun ve kitabın tartıştığı oyuncak dillerini uygulayın. Sonunda tip teorisinde güçlü bir temel ve muhtemelen daha iyi bir programcı elde edersiniz.


2

Ben tavsiye Hesaplanabilirlik, Karmaşıklık ve Diller Martin Davis, Ron Sigal ve Elaine Weyuker tarafından.


Eski skool TCS için güzel bir kitap. Atlanabilir alan teorik semantik kısmı hariç.
Martin Berger

1

Ben Teori ve Algoritmaların büyük hayranıyım. Bir zamanlar Hindistan, Madras (IIT-M) Hindistan Teknoloji Enstitüsü'nde Teorik Bilgisayar Bilimi'ni ziyaret etme fırsatım oldu. Orada IIT-M'de çok fazla teorisyen var. Oraya gittiğimde, Teorinin ne olduğu hakkında hiçbir fikrim yoktu, ama bugün onunla tamamen sevgiyim.

İşaretçi için @Kate F sayesinde evet Hopcroft ve Ullman başlamak için mükemmel bir yer.

Ancak işte böyle başladım,

  1. Cormen'in Algoritmalara Giriş konusunu okuyun. Bu, başlamak için mükemmel bir yerdir. Çalıştığınız zaman her ispatı mümkün olduğunca uzun süre anlamaya çalışın. Kanıtı iyi anlarsanız, aynı mantığı istediğiniz herhangi bir dilde kodlamayı deneyin. (Biraz daha uzun sürer ama denemeye değer)

  2. Teoride
    FOCS
    SODA
    STOC
    EC (Elektronik Ticaret) - Algoritmik Oyun Teorisi
    COLT (Öğrenme Teorisi Konferansı) - Öğrenme Teorisi CRYPTO
    - Kriptografi
    SOCG (Hesaplamalı Geometri Sempozyumu) ​​- Hesaplamalı Geometri Sempozyumu gibi üst konferansları takip edin
    . Hesaplamalı Karmaşıklık) - Karmaşıklık Teorisi

Çok fazla anlamasanız bile okumaya ve düşünmeye çalışın . Mümkün olduğunca çok kanıt yapmanız gerekiyor ..

  1. Bu özellikle Hesaplamalı karmaşıklığı ( Bu Stanford dan ) düşünüyorsanız, bakmak için harika bir yerdir .
  2. Sanjeev Arora, Boaz Barak, Jelani Nelson, Madhu Sudan
  3. İşte Hesaplama Karmaşıklığı alanında bir dizi sentezlenmiş bilgi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.