"Hesaplamalı Bilim İnsanı", kağıt / LaTeX ile sayısal analiz yapan ve kavram kanıtı uygulamaları ile sayısal analiz yapan insanları, genel amaçlı kütüphaneleri yazan kişileri ve belirli problem sınıflarını çözen uygulamalar geliştirenleri ve bunları kullanan son kullanıcıları içerdiğinden biraz geniştir. uygulamalar. Bu gruplar için ihtiyaç duyulan beceriler farklıdır, ancak "tam yığına" aşina olmak konusunda büyük bir avantaj vardır. Bu yığının kritik parçaları olduğunu düşündüğüm şeyi açıklayacağım, bu seviyede çalışan insanlar elbette daha derin bilgiye sahip olmalıdır.
Alan bilgisi (örneğin fizik ve mühendislik geçmişi)
Herkes çözdüğü problem sınıfının temellerini bilmelidir. PDE'ler üzerinde çalışıyorsanız, bu birkaç PDE sınıfına (örneğin Poisson, esneklik ve sıkıştırılamaz ve sıkıştırılabilir Navier-Stokes) bazı genel aşinalık, özellikle de "tam olarak" yakalamak için hangi özelliklerin ve ayrıklaştırmanın ne kadar önemli olacağı anlamına gelir. Hata (bu, yerel koruma ve sempatik bütünleştiriciler ile ilgili yöntem seçimini bildirir). Uygulamalara ilgi duyan bazı fonksiyoneller ve analiz türleri hakkında bilgi sahibi olmalısınız (kaldırma ve sürüklemenin optimizasyonu, başarısızlık tahmini, parametre inversiyonu, vb.).
Matematik
Herkes kendi problem alanı ile ilgili yöntem sınıfları hakkında genel bir bilgi sahibi olmalıdır. Bu, seyrek ve yoğun doğrusal cebirin temel özelliklerini, "hızlı yöntemlerin" kullanılabilirliğini, mekansal ve zamansal ayrıklaştırma tekniklerinin özelliklerini ve bir ayrıklaştırma tekniğinin uygun olması için fiziksel bir sorunun hangi özelliklerinin gerekli olduğunu nasıl değerlendireceğini içerir. Çoğunlukla son kullanıcıysanız, bu bilgi çok yüksek olabilir.
Yazılım mühendisliği ve kütüphaneler
Soyutlama teknikleri ve kütüphane tasarımı ile ilgili biraz bilgi sahibi olmak, bilişim bilimindeki hemen hemen herkes için yararlıdır. Kavram kanıtlama yöntemleri üzerinde çalışıyorsanız, bu kodunuzun düzenini iyileştirecektir (başka birinin daha sağlam bir uygulamaya dönüştürmesini "kolaylaştırır). Bilimsel uygulamalar üzerinde çalışıyorsanız, bu yazılımınızı daha da genişletilebilir hale getirecek ve kütüphanelerle etkileşimi kolaylaştıracaktır. Kod geliştirirken, hataların olabildiğince erken tespit edilebildiği ve hata mesajlarının olabildiğince bilgilendirici olacağı durumlarda savunuculukta olun.
Araçlar
Yazılımla çalışmak, hesaplama biliminin önemli bir parçasıdır. Seçtiğiniz dilde, editör desteğinde (örneğin etiketler, statik analiz) ve hata ayıklama araçlarında (hata ayıklayıcı, valgrind) yeterlilik, geliştirme verimliliğinizi büyük ölçüde artırır. Toplu ortamlarda çalışıyorsanız, iş göndermeyi ve etkileşimli oturumlar almayı bilmelisiniz. Derlenmiş kodlarla çalışıyorsanız derleyiciler, bağlayıcılar ve Make gibi derleme araçlarının çalışma bilgisi çok zaman kazandıracaktır. Sürüm kontrolü, yalnız çalışsanız bile herkes için önemlidir. Git veya Mercurial'ı öğrenin ve her proje için kullanın. Kütüphaneleri geliştirirseniz, dil standartlarını makul bir şekilde tamamen bilmelisiniz, böylece ilk kez her zaman taşınabilir kod yazarsınız, aksi halde kodunuz korkak ortamlarında kurulmadığında kullanıcı destek taleplerine gömülürsünüz.
Lateks
LaTeX, bilimsel yayın ve işbirliği için fiili bir standarttır. LaTeX ile yeterlilik, sonuçlarınızı iletebilmeniz, teklifler üzerinde işbirliği yapabilmeniz vb. İçin önemlidir. Rakamların oluşturulmasını yazmak, yeniden üretilebilirlik ve veri sunumu için de önemlidir.