Buradaki hiç kimse, TCS'yi inceleyen birinin neden programlama öğrenmesi gerektiğine dair pratik meseleleri ele almamıştır.
Bilgisayar Bilimleri bölümünde, TCS'de doktora yapmayı planlıyorsanız, bazı Teorik olmayan derslere girmeniz ve muhtemelen neredeyse kesinlikle çok yoğun bir şekilde yoğunlaşmanız gerekecektir. Bulunduğunuz programa bağlı olarak, yeterlik sınavlarını geçmek için Teori dışı konular hakkındaki bilgilere de ihtiyaç duyabilirsiniz.
Doktora derecenizi tamamladığınızda, TCS için birçok iş fırsatı akademi içerisindedir. Akademi'de çalışıyorsanız, öğretmeniz beklenir ve teoride daha fazla programlama yapacak bir giriş seviyesi CS sınıfı ders vermeniz beklenir. Lisans öğrencilerine bir teori dersi veriyor olsanız bile, Algoritmalar gibi, öğrencilerinizin programlama hakkında teoriden daha fazla şey bilmelerini bekleyebilirsiniz ve öğrencilerinizin bildiklerini bilmeden, anlayışlarındaki boşlukları kapatmanız zor olacaktır. . CS lisans programlarının programlama bilmeyen biri tarafından öğretildiği fikrine titredi!
Bu pratik kaygıları umursamıyorsanız, o zaman muhtemelen programlama hakkında hiçbir şey bilmeden araştırma yaparak alabilirsiniz. Tabii ki, TCS topluluğunda çok fazla şirketiniz var, ancak kilometre, çalıştığınız teorinin tam olarak hangi alanına girdiğinize bağlı olarak değişecektir. Örneğin, eğer saf hesaplama karmaşıklığı teorisi yapıyorsanız, kimsenin sahip olmadığı sınıflar üzerinde daha düşük sınırlar olduğunu kanıtlarsanız hiç duymadım, o zaman programlama sizin için faydasız olacak gibi görünüyor. Fakat daha algoritmik bir şey yapıyorsanız, iyi temiz çalışma kodu yazmanın başka hiçbir şey yapmazsanız sezginizi güçlendireceğini düşünüyorum.
C öğrenmeyi öneririm (C ++ değil). K & R'nin bir kopyasını alın ve arka arkaya okuyun. C, modern dillerin süslü özelliklerinin çoğuna sahip değildir, ancak bütünüyle öğrenmeniz gereken basit ama zarif sözdizimi ve anlambilimine sahiptir. Bununla birlikte, dili bütünüyle anladığınızda bile, C'ye zarif ve hatasız kodlar yazmak konusunda ustalaşmanız gerekir. Bununla birlikte, C'de kodlama konusunda ustalaşırsanız, karşılaştığınız herhangi bir programlama dilinde ustalaşabilirsiniz. Ayrıca, bu disiplin, donanımın nasıl düşündüğünü düşünmenize yardımcı olacaktır, ki bu algoritmalar tasarlanırken faydalı olacaktır.
İşaretçiler gibi fikirler algoritma tasarımı yapan herkes için çok önemlidir, ancak ne yazık ki, Java ve Python gibi diller onları sizden gizliyor, bu yüzden onları matematik geçmişi olan birine ilk dil olarak önermiyorum. OOP, algoritmalar tasarlayan biri için değil, büyük yazılım projeleri sürdürmek zorunda olan insanlar için daha önemlidir.