Bilgisayar bilimi

Expression for Church numerals in lambda calculus Hızlı sıralama algoritması
Hareket yakalamayla oluşturulmuş bir bilgisayar animasyonu örneği Half-adder devresi

Bilgisayar biliminin temel alanları bilgisayar programlama dillerini (sol üst), algoritmaların dizayn ve analizini (sağ üst), akıllı sistemlerin yapılmasını (sol alt) ve elektrik donanımları (sağ alt) kapsar.

Bilgisayar bilimi; pratik tekniklerle birlikte veri ve hesaplamanın teorik temellerini de ele almaktadır. Şekilde en kısa yol problemi ve çözüm algoritması animasyonu veriliyor.

Bilgisayar bilimi, bilgisayarların tasarımı ve kullanımı için temel oluşturan teori, deney ve mühendislik çalışmasıdır. Hesaplamaya ve uygulamalarına bilimsel ve pratik bir yaklaşımdır. Bilgisayar bilimi; edinim, temsil, işleme, depolama, iletişim ve erişimin altında yatan yönteme dayalı prosedürlerin veya algoritmaların fizibilitesi, yapısı, ifadesi ve mekanizasyonunun sistematik çalışmasıdır. Bilgisayar biliminin alternatif, daha özlü tanımı "büyük, orta veya küçük ölçekli algoritmik işlemleri otomatikleştirme çalışması" olarak nitelendirilebilir. Bir bilgisayar bilimcisi, hesaplama teorisi ve hesaplama sistemlerinin tasarımı konusunda uzmanlaşmıştır.[1]

Alanları teorik ve pratik disiplinlere ayrılabilir. Bilgisayar grafikleri gibi alanlar, gerçek dünya görsel uygulamalarını vurgularken, hesaplamalı karmaşıklık teorisi (hesaplama ve zor olan sorunların temel özelliklerini araştıran) gibi bazı alanlar oldukça özeldir. Diğer alanlar sıklıkla hesaplamanın uygulanması konusunda karşılaşılan zorluklara odaklanmaktadır. Örneğin, programlama dili teorisi, hesaplamanın tanımlamasına yönelik çeşitli yaklaşımları ele alırken, bilgisayar programcılığının kendisi de programlama dili ve karmaşık sistemlerin kullanımının çeşitli yönlerini inceler. Bununla beraber insan-bilgisayar etkileşimi alanı; bilgisayarları ve hesaplamaları yararlı, kullanışlı ve evrensel olarak insanlara ulaştırmaya yönelik zorlukları tanımlamaya ve onları aşmaya çalışmaktadır.

Daha sonraları bilgisayar bilimi haline gelecek olgunun en eski temelleri, modern dijital bilgisayarın icadından önce gelmektedir. Abaküs gibi sabit sayısal işlemler için kullanılan hesap makineleri, antik çağlardan beri var olmuştur. Bunlar çarpma ve bölme gibi temel hesaplamalara yardımcı oluyordu. Ayrıca, hesaplamaları gerçekleştirmek için kullanılan algoritmalar, antik çağlardan beri, hatta gelişmiş bilgisayar ekipmanlarının geliştirilmesinden önce de var olmuştur.

Blaise Pascal, 1642'de kendi ismini verdiği hesap makinesini tasarladı ve geliştirdi.[2] 1673'te Gottfried Leibniz, "Stepped Reckoner" adında bir dijital mekanik hesap makinesi tasarladı.[3] İlk bilgisayar bilimcisi ve bilgi teorisyeni olarak düşünebilir. Leibniz'i ilk bilgisayar bilimcisi olarak kabul etmemiz için diğer sebeplerin yanı sıra kendisinin, ikili sayı sisteminde belgeli ve sistemli biçimde çalışmış olması yeterlidir. Thomas de Colmar, 1820'de mekanik hesap makinesi endüstrisini başlattı ve basitleştirilmiş aritmometre'yi piyasaya sundu. Bu hesap makinesi, günlük olarak ofis ortamında kullanılabilecek kadar donanımlı ve güvenilir ilk hesap makinasıydı. Charles Babbage, 1822'de ilk "Otomatik çalışan mekanik hesap makinesi" olan Fark Makinesi'nin (İngilizce: Difference Engine) tasarımını başlattı ve bu çalışmalarının neticesinde ona ilk programlanabilir mekanik hesap makinesi fikri olan "Analitik Tabanlı Motor" ismini verdi.[4] Bu makineyi 1834'te geliştirmeye başladı ve iki yıldan az bir sürede modern bilgisayarın göze çarpan özelliklerinin çoğunu çizmişti.[5] 1843 yılında Ada Lovelace, "Analitik Motor" hakkındaki bir Fransız makalesinin çevirisi sırasında, içerdiği birçok nottan birinde, günümüzde ilk bilgisayar programı olarak düşünülen Bernoulli sayılarını hesaplamak için bir algoritma yazdı.[6] 1885 civarında Herman Hollerith, istatistiksel bilgileri işlemek için delikli kartlar kullanan çizelgeleyiciyi (tabulator) icat etti; Sonunda çalışmaları kendi şirketi IBM'in bir parçası haline geldi. 1937'de, Babbage'ın imkânsız rüyasından yüz yıl sonra, Howard Aiken, her türden delikli kart ekipmanı üreten IBM'i ikna etti ve Babbage'ın Analitik Motor fikrinden yola çıkarak dev programlanabilir hesap makinesi geliştirmek için çalışmalar yaptı. Başarıyla yürüttüğü çalışmalarının sonucunda "ASCC / Harvard Mark I" hesap makinesini icat etti.[7] Bu cihazda kartlar ve merkezi işlem birimi (CPU) kullanıldı. Makine çalışması bittiğinde, çevresindekiler "Babbage'nin hayali gerçeğe dönüştü!" diyerek Howard Aiken'i takdir ettiler.[8]

1940'lı yıllarda, yeni ve daha güçlü bilgi işlem makineleri geliştirildiğinde, hesaplama terimi için insanlardan ziyade makinelere atıfta bulunulmaktaydı.[9] Bilgisayarların sadece matematiksel hesaplamalardan daha fazlası için kullanılabileceği netleştikçe, bilgisayar bilimi alanı, genel olarak hesaplamayı incelemek üzere genişletildi. Bilgisayar bilimi, 1950'lerde ve 1960'ların başında ayrı bir akademik disiplin olarak kurulmaya başlandı.[10][11] Dünyanın ilk bilgisayar bilimleri lisans programı olan Cambridge Bilgisayar Bilimleri diploması, 1953'te Cambridge Bilgisayar Laboratuvarı'nda verilmeye başladı. ABD'deki ilk bilgisayar bilimleri programı, 1962'de Purdue Üniversitesi'nde kuruldu.[12] Pratik bilgisayarlar piyasaya çıktığından beri, birçok bilgisayar uygulaması, kendi sistemlerine sahip farklı birer çalışma alanları haline geldi.

Başlangıçta pek çok insanın, bilgisayarın bilimsel bir çalışma alanı olmasının imkânsız olduğuna inanmasına rağmen, bilgisayarlar 1950'li yıllarda giderek daha fazla akademik nüfus arasında kabul gördü.[13][14] Bu süre zarfında bilgisayar bilimleri devriminin bir parçasını oluşturan günümüzde geniş kitleler tarafından bilinen IBM markası sesini duyurmaya başladı. IBM (International Business Machines'in kısaltması), IBM 704[15] ve daha sonra bu tür cihazların arama periyodu boyunca yaygın olarak kullanılan IBM 709 bilgisayarlarını piyasaya sürdü. "Yine de bu ilkel IBM bilgisayarı ile çalışırken bir harfi yanlış yerleştirmiş olsaydınız sinir bozucu olurdu, çünkü program çökerdi ve bütün süreci yeniden baştan başlatmanız gerekirdi." 1950'lerin sonlarında bilgisayar bilimleri disiplini gelişim aşamasındaydı ve bu tür sorunlar sıradan olarak kabul görmekteydi.[16]

Zaman, bilgisayar teknolojisinin kullanışlılığında ve etkinliğinde önemli gelişmeler kaydetti.[17] Modern toplumda, bilgisayar teknolojileri yalnızca uzmanlar ve profesyoneller tarafından değil, neredeyse her yerde bulunan kullanıcı tabanına ulaştı. Bilgisayar teknolojisi kullanıcılarında ciddi ve belirgin bir artış yaşandı. Başlangıçta, bilgisayarlar oldukça pahalıydı ve kısmen profesyonel bilgisayar operatörleri tarafından verimli bir şekilde kullanılmak için bir miktar insan yardımına yani teknik desteğe ihtiyaç vardı. Bilgisayarın geniş kitleler tarafından benimsenmesi ancak bilgisayarların daha geniş ve uygun fiyatlı hale gelmesiyle ve ortak kullanım için daha az insan faktörüne ve teknik desteğe ihtiyaç duyulduğunda mümkün hale geldi.

Bilgisayar bilimi, resmi bir akademik disiplin olarak kısa geçmişine rağmen, bilime ve topluma bir takım önemli katkılar sağlamıştır. -özellikle elektronikle birlikte- Bilgi Çağında kurulan bir bilimdir ve insanlığın ilerlemesinde adeta bir şoför haline gelmiştir. İnsanlığın teknolojik ilerlemesinde büyük sıçrayış olarak görülen bilimsel bilgiye dayalı karar verme ve günümüzün bilgi toplumu ideallerinin temel yapı taşlarından birisi haline gelmiştir.

Bu katkılar şunları içerir:

Mevcut bilgi çağını ve İnternet'i içeren dijital devrimin başlangıcıdır.[18]

Hesaplamanın ve hesaplanabilirliğin biçimselleştirilmiş bir tanımıdır. Bilgisayar bilimi; hesaplanamaz, çözülemez ve zor olarak kabul edilmiş problemlerin çözülebileceğinin bir nevi kanıtıdır.[19]

Çeşitli soyutlama seviyelerinde metodolojik bilgilerin tam olarak ifade edilmesi için araç olan programlama dili kavramı türemiştir.[20]

Alman ordusunun kullandığı Enigma makinesi

Kriptografi alanında örneğin Enigma kodunu kırmak, İkinci Dünya Savaşı sırasında Müttefiklerin zaferine katkıda bulunan önemli bir faktördü.[21]

Bilgisayar uygulamaları sayesinde bilimsel hesaplama yöntemleri gelişmiştir. Böylelikle süreçlerin ve durumların pratik olarak değerlendirilmesi ve kısmi de olsa süreçleri kontrol edilebilir bir karmaşıklığa indirgenmesi mümkün hale gelmiştir.

Aynı zamanda insan zihni üzerinde ileri düzeyde çalışmayı mümkün kıldı ve "İnsan Genomu Projesi" ile insan genomunun haritalandırılması mümkün oldu. Örneğin Folding@home gibi dağıtık bilgi işlem projeleriyle protein katlanması keşfedildi.

Algoritmaya dayalı ticaret alanında yapay zekâ, makine öğrenimi, istatistiksel ve sayısal teknikler vb. bilgisayar bilimleri konuları kullanılarak finansal piyasalardaki verimlilik ve likidite arttı.[22] Ayrıca yüksek frekanslı algoritmik ticaret de volatiliteyi artırmıştır.[23]

Bilgisayar grafikleri ve bilgisayar tarafından oluşturulmuş görüntüler, özellikle televizyon, sinema, reklam, animasyon ve video oyunlarında kullanılmış ve özetle modern eğlence dünyasında her yerde kullanılır hale gelmiştir. Hatta kullanılan tekniğe göre değişmekle beraber yapaylık içermeyen CGI teknolojili filmler genellikle dijital kameralar üzerinde filme alınmakta, dijital video düzenleyicisi kullanılarak düzenlenip veya post-processing tekniğiyle işlenebilmektedir. Bu sayede günümüz filmlerindeki efektler başarılı şekilde uygulanmaktadır.[24]

Akışkanlar dinamiği hesaplamalarında, fiziksel, elektriksel ve elektronik sistemlerde, devre tasarımlarında, toplumların yaşantısı, sosyal durumlar (özellikle savaş oyunları) ve ortak yaşam alanları gibi çeşitli süreçlerde bilgisayar simülasyonları kullanılmaktadır. Modern bilgisayarlar, uçak gibi özel tasarımların optimizasyonunu mümkün kılmaktadır. Elektrikli ve elektronik devre tasarımında dikkat çeken unsurlar SPICE ve yeni (veya değiştirilmiş) tasarımların fiziksel olarak gerçekleştirilmesi için yazılımlardır. Ayrıca, entegre devreler için gerekli tasarım yazılımının kullanılması da mümkündür.

Yapay zekâ daha verimli ve karmaşık bir hal aldığından giderek önem kazanmaktadır. Yapay zekânın birçoğu evde görülebilen formdadır, örneğin robotik elektrikli süpürgeler gibi birçok yapay zekâ uygulaması vardır. Video oyunları, modern savaş teknolojilerinde dronlar ve füze savar sistemleri kullanılmaktadır. Ve ayrıca takım destekli robotlar da yapay zekanın kullanım alanlarına örnek olarak gösterilebilir.

İlk 1956'da önerilmiş olmasına rağmen "bilgisayar bilimi" terimi 1959'da ACM'nin İletişim Bildirisinde ortaya çıkar,[25] çünkü Louis Fein 1921 yılında Harvard Business School'un yaratılışına benzer şekilde bilgisayar bilimleri için de bir enstitünün kurulmasını savunmaktadır. Yönetim bilimi (Management Science) gibi bir alanın akademik disipline özgü özelliklere sahip olarak tanınmasına rağmen pek çok konuda uygulanmış ve disiplinler arası bir nitelikte olan bilgisayar biliminin akademik yönlerini savunarak kendini haklı çıkarmıştır.[26] Kendisinin bu yöndeki çabaları ve diğer pek çok sayısal analizci George Forsythe gibi isimlerin çabaları ödüllendirildi: Üniversiteler 1962'de Purdue'den başlayarak üniversitelerinin bünyesinde bu tür programlar açmaya başladı.[27] Bu kabule rağmen kayda değer bir kitle de bilgisayar biliminin salt bilgisayardan ibaret olmadığını ve kelimenin yetersiz olduğunu savunmaktaydı. Bu nedenle birkaç alternatif isim önerildi.[28] Büyük üniversitelerin bazı bölümleri, bu farkı tam olarak vurgulamak için bilgisayar bilimi terimini tercih etmektedir. Danimarkalı bilim insanı Peter Naur, bu bilimsel disiplinin yani bugün bilgisayar bilimleri olarak anılan alanın, veri ve veri işleme konuları etrafında şekillenmesi gerektiğini savunmaktaydı ve dataloji (datalogy)[29] terimini önerdi; bu sayede bahsi geçen disiplinin uğraş alanına mutlaka bilgisayarların dahil olmadığı savunuluyordu. Bu terimi kullanan ilk bilimsel kurum, 1969'da kurulan Kopenhag Üniversitesi'nde Dataloji Bölümü'nden ve Peter Naur'un dataloji bölümünün ilk profesörü olmasından kaynaklanmaktadır. Terim ağırlıklı olarak İskandinav ülkelerinde kullanılmaktadır. Naur tarafından da önerilen alternatif bir terim veri bilimidir; ancak bu terim artık istatistik ve veritabanlarının dahil edildiği farklı bir veri analizi alanı disiplini için kullanılmaktadır.

Ayrıca, bilgisayarlı hesaplamanın ilk dönemlerinde Communications of the ACM bünyesinde çalışan bazı pratisyenlerin birkaç kelimesi önerildi: turingineer, turologist, flow-charts-man, applied meta-mathematician ve applied epistemologist.[30] Üç ay sonra aynı dergide comptologist kavramı öne sürüldü ve ertesi sene bunu hypologist kelimesi takip etti.[31] Sonraki çalışmalarda computics terimi de önerildi.[32] Avrupa'da, "automatic information" ifadesinin (örneğin, İtalyancadaki "informazione automatica") sözleşmeli çevirileri yapılmasından sonra "information and mathematics" gibi kavramlar türetilmiş, örneğin; informatique (Fransızca), Informatik (Almanca), informatica (İtalyanca, Hollanda dili), informática (İspanyolca, Portekizce), informatika (Slav dilleri ve Macarca) veya Yunanca olarak pliroforiki (πληροφορική: bilişim anlamına gelir). Benzer kelime, Birleşik Krallık'ta (as in the School of Informatics of the University of Edinburgh) kabul edilmiştir.[33] "Bununla birlikte, ABD'de informatics, uygulamalı bilgisayar bilimleriyle ilişkilidir veya bilgisayarlı hesaplama alanında çalışılan başka bir uğraş ile birlikte anılmaktadır."[34]

İlk kez Edsger Dijkstra tarafından formüle edilmemiş olmasına rağmen sıklıkla Dijkstra'ya atfedilen bir alıntıda kendisi bilgisayar bilimi için "teleskop ile kozmoloji ne kadar ilintiliyse, bilgisayar ile bilgisayar bilimleri de aynı şekilde ilintilidir." sözlerini belirtmektedir. Bilgisayarların, bilgisayar sistemlerinin tasarımı ve yerleştirilmesi genel olarak bilgisayar bilimleri dışındaki disiplinler olarak düşünülür. Örneğin, ticari bilgisayar sistemlerinin incelenmesi ve konuşlandırılmasına genellikle bilgi teknolojisi veya bilgi sistemleri denirken, bilgisayar donanımının çalışması genellikle bilgisayar mühendisliğinin bir parçası olarak düşünülür. Bununla birlikte, bilgisayar bilimi ile çeşitli disiplinler arasında ciddi bir etkileşim söz konusudur ve akademik çevrelerce göz ardı edilmemesi gerektiği düşünülmektedir. Bu nedenle bilgisayar bilimi araştırmaları; felsefe, bilişsel bilim, dil bilimi, matematik, fizik, biyoloji, istatistik ve mantık gibi diğer disiplinleri de sıklıkla kesiştirir.

Bilgisayar bilimleri ve etkileşimde bulunduğu disiplinler hakkında bazı gözlemciler, örneğin hesaplama alanının matematiksel bir bilim olduğunu savunarak, bilgisayar bilimlerinin birçok bilimsel disiplinden ziyade matematikle daha yakın bir ilişki kurduğunu düşünüyordu. Erken bilgisayar bilimi Kurt Gödel ve Alan Turing gibi matematikçilerin çalışmalarından büyük ölçüde etkilenmiştir ve matematiksel mantık, kategori teorisi, alan teorisi ve cebir gibi alanlar göz önünde bulundurulduğunda bilgisayar bilimi ve matematik arasında bilgilerin yararlı bir şekilde değişimi açıkça görülmektedir.

Bilgisayar bilimi ve yazılım mühendisliği arasındaki ilişki ise tartışmalı bir konudur. "Yazılım mühendisliği" teriminin ne anlama geldiği ve bilgisayar biliminin nasıl tanımlandığına dair anlaşmazlıklar nedeniyle karışıklığa neden olur.[35] Diğer mühendislik ve bilim disiplinleri arasındaki ilişkiden bir ipucu alarak David Parnas, yazılım mühendisliğinin temel odağının pratik nitelikli amaca ulaşmak için spesifik hesaplamalar dizayn etmek olduğunu, bilgisayar biliminin odak noktasının ise genel olarak hesaplama ve onun özelliklerini incelediğini iddia etti. Bu iki alanların ayrı ama birbirini tamamlayıcı disiplinler oldukları düşünülmekteydi.[36]

Bilgisayar biliminin akademik, politik ve finansman yönleri, bu bölümün matematiksel bir vurguyla veya bir mühendislik vurgusu ile oluşup oluşmadığına bağlıdır. Matematik ağırlıklı ve sayısal oryantasyona sahip bilgisayar bilimleri bölümleri, sayısal bilimlerle uyum sağlamayı yani entegrasyonu esas almaktadırlar. Mühendislik ya da matematik ağırlıklı bilgisayar bilimleri bölümlerinin her ikisi de kendi alanlarına eğitici nitelik kazandırmak için diğer bilimlerle bağlantı kurmak ve disiplinler arası bir eğitim modeli yaratmak için çaba harcamaktadırlar.

Birtakım bilgisayar bilimcisi, bilgisayar bilimlerini üç ayrı paradigmaya ayırmak için fikir beyan ettiler. Peter Wegner, bu paradigmaların bilim, teknoloji ve matematik olduğunu savundu.[37] Peter Denning'in çalışma grubu ise, bu paradigmaların teori, soyutlama (modelleme) ve tasarım olduğunu savundu.[38] Amnon H. Eden ise "rasyonalist paradigma" (bu yaklaşım teorik bilgisayar bilimlerinde yaygın olarak kullanılan tümdengelim gibi konuların matematik kökenli olmasından dolayı bilgisayar bilimini matematiğin bir branşı olarak kabul etmektedir.) "teknokratik paradigma" (mühendislik yaklaşımlarını, belirgin olarak yazılım mühendisliğini bilgi işlem teknolojilerinde esas alma ve toplumda statülendirme) ve "bilimsel paradigma" (yapay zekânın bazı dallarında tanımlanabilen bilgisayarlarla ilgili çalışmalara doğal bilimin ampirik bakış açısıyla yaklaşmaktadır) ayrımlarından bahsetmiştir.

Bilgisayar biliminin alanları

[değiştir | kaynağı değiştir]

Bilgisayar bilimi, bir disiplin olarak, algoritmaların teorik çalışmalarından hesaplama ve hesaplama sınırları çalışmalarına, donanım ve yazılım alanlarında bilgisayar sistemlerinin uygulanmasına ilişkin pratik ve teorik olmak üzere bir dizi konuyu kapsar.[39][40] Computing Sciences Accreditation Board (Bilgisayar Bilimleri Akreditasyon Kurulu) olarak adlandırılan ve Computing Machinery Association (ACM) ve IEEE Computer Society (IEEE CS)[41] temsilcilerinden oluşan CSAB, bilgisayar disiplininde önemli olduğunu düşündüğü dört alanı şöyle tanımlamaktadır:

  1. Hesaplama teorisi
  2. Algoritmalar ve veri yapıları
  3. Programlama metodolojisi ve dilleri
  4. Bilgisayar elemanları ve mimarisi

CSAB ayrıca, bilgisayar bilimlerinin önemli alanları olarak; yazılım mühendisliği, yapay zekâ, bilgisayar ağı ve iletişim, veritabanı sistemleri, paralel hesaplama, dağıtık hesaplama, insan-bilgisayar etkileşimi, bilgisayar grafikleri, işletim sistemleri ve sayısal ve sembolik hesaplama gibi alanları tanımlamaktadır.

Teorik bilgisayar bilimleri

[değiştir | kaynağı değiştir]

Teorik bilgisayar bilimleri, matematiksel ve soyut olarak özetlenebilir, ancak motivasyonunu pratik ve günlük hesaplamalardan almaktadır. Amacı, hesaplamanın doğasını anlamak ve bu anlayışın bir sonucu olarak daha etkili metodolojiler geliştirmektir. Günümüzde matematiksel, mantıksal, standart kavram ve yöntemleri izah eden tüm makaleler, motivasyonlarının kaynağı olarak bilgisayar bilimi uygulamalarını net bir şekilde belirtip belirtmemesi ölçütünde kabul görmektedirler.

Hesaplama teorisi

[değiştir | kaynağı değiştir]

Peter Denning'e göre, bilgisayar bilimi altında yatan temel soru "Ne, verimlilik sağlayacak biçimde otomatikleştirilebilir?" Hesaplama teorisi, nelerin hesaplanabileceği ve bunları gerçekleştirmek için ne kadar kaynak harcanacağı gibi temel sorulara cevap vermeye odaklanmıştır. Birinci soruyu cevaplamak için, hesaplanabilirlik teorisi hesaplamanın çeşitli teorik modellerinde hangi hesaplama problemlerinin çözülebileceğini inceler. İkinci soru, çok sayıdaki hesaplama problemlerini çözmeye yönelik farklı yaklaşımlarla ilişkili zaman ve mekan maliyetlerini inceleyen hesaplama karmaşıklığı teorisi tarafından ele alınmaktadır.

"Millennium Prize Problems" problemlerinden biri olan Ünlü P = NP? problemi,[42] hesaplama teorisinde hâlâ açık ve çözülememiş bir sorundur.

Otomata Teorisi Hesaplamalı karmaşıklık teorisi Kriptografi Kuantum hesaplama teorisi

Bilgi ve kodlama teorisi

[değiştir | kaynağı değiştir]

Bilgi teorisi, bilginin nicelleştirilmesi ile ilgilidir. Bu teori, veri sıkıştırması, verilerin depolanması ve iletilmesi gibi sinyal işleme operasyonlarının temel sınırlarını bulmak için Claude Shannon tarafından geliştirildi.[43] Kodlama teorisi, kodların özelliklerinin incelenmesi (bilgileri bir formdan diğerine dönüştürmek için kullanılan sistemler) ve bunların belirli bir uygulama için uygunluğunu inceler. Kodlar veri sıkıştırma, şifreleme, hata algılama ve düzeltme ve daha yakın zamanda ağ kodlaması için de kullanılır. Kodlar, etkin ve güvenilir veri iletim yöntemleri tasarlamak amacıyla incelenir.

Algoritmalar ve veri yapıları

[değiştir | kaynağı değiştir]

Algoritmalar ve veri yapıları, Verinin nasıl depolanacağı ve bu depolanan verilerin işlenmesiyle ilgilidir. Ayrıca, yaygın olarak kullanılan hesaplama yöntemlerinin ve bunların hesaplama verimliliğinin incelenmesidir.

Programlama dili teorisi

[değiştir | kaynağı değiştir]

Programlama dili teorisi, programlama dillerinin tasarımı, uygulanması, analizi, karakterizasyonu ve sınıflandırılması ile tekil özellikleri ele alan bir bilgisayar bilimi dalıdır. Hem matematiğe, hem yazılım mühendisliğine hem de dil bilimine bağlı olan bu alan bilgisayar biliminin disiplini içine girmektedir. Çok sayıda akademik dergisi bulunan etkin bir araştırma alanıdır.

Biçimsel yöntemler

[değiştir | kaynağı değiştir]

Biçimsel yöntemler, yazılım ve donanım sistemlerinin spesifikasyonu, geliştirilmesi ve doğrulanması için matematik temelli bir tekniktir. Yazılım ve donanım tasarımı için biçimsel yöntemlerin kullanılması, diğer mühendislik disiplinlerinde olduğu gibi, uygun matematiksel analizlerin yapılması sayesinde geliştirilmekte olan bir tasarımın sağlamlığına ve güvenilirliğine katkıda bulunabileceği beklentisinden kaynaklanmaktadır. Yazılım mühendisliği için, özellikle emniyet veya güvenlikle ilgili önemli teorik bir temel oluşturmaktadır. Biçimsel yöntemler, hataları önlemeye yardımcı olduklarından ve sınama için bir çerçeve oluşturabildiklerinden, yazılım testi için kullanışlı bir yardımcıdır. Endüstriyel kullanım için ise takım desteği gereklidir. Bununla birlikte, biçimsel yöntemleri endüstride kullanmanın yüksek bedelinden ötürü, kullanım alanı genellikle güvenlik veya güvenliğin çok önemli olduğu, yüksek bütünlük gerektiren kritik yaşam sistemleri vb. alanların geliştirilmesi gibi uygulamalarla sınırlıdır. Biçimsel yöntemler en temel teorik bilgisayar bilimi konularının, özellikle mantık hesapları, biçimsel diller, otomata teorisi ve program semantiği gibi oldukça geniş bir çeşitliliğin uygulanması olarak tanımlanır; aynı zamanda, yazılım ve donanım özelliklerinde sorunların üstesinden gelmek için programlama dillerindeki tip sistemleri, cebirsel veri türleri ve doğrulama vb. alanları kullanmaktadır.

Uygulamalı bilgisayar bilimleri

[değiştir | kaynağı değiştir]

Uygulamalı bilgisayar bilimi, gerçek dünya problemlerini çözmede doğrudan kullanılabilecek bazı bilgisayar bilimi kavramlarını araştırmayı, tanımlamayı, modellemeyi ve geliştirmeyi amaçlamaktadır.

Ses ve Görüntü İşleme

[değiştir | kaynağı değiştir]

"Bilgi; görüntü, ses, video veya diğer multimedya biçimlerinde olabilir. Bilgi parçaları sinyaller aracılığıyla akıtılabilir. Bilgi işleme, bilişimdeki merkezi kavramdır; Avrupa'nın bilgi-işlem'e bakış açısı olan bilişim bilimi, bilgi işleme algoritmalarını bilgi taşıyıcının türünden bağımsız olarak (elektriksel, mekanik veya biyolojik olsun fark etmeksizin) inceler. Bu alan; bilgi teorisi, telekomünikasyon, veri mühendisliği açısından önemli bir role sahiptir ve tıbbi görüntüleme ve konuşma sentezi gibi alanlarda uygulamalara sahiptir. “Hızlı Fourier Dönüşümü Algoritmalarının karmaşıklığı için alt sınır nedir?” sorusu teorik bilgisayar biliminde çözülmemiş sorulardan biridir."

Yapay zekâ (Artifical Intelligence), insanlarda ve hayvanlarda bulunan problem çözme, karar verme, çevresel uyarlama, öğrenme ve iletişim gibi hedef odaklı süreçleri sentezlemeyi amaçlamaktadır veya bunları sentezlemek zorundadır. Sibernetik ve Dartmouth Konferansı'ndan (1956) sonra, nitelikli bir yapay zekâ araştırması için; matematik, sembolik mantık, göstergebilim, elektrik mühendisliği, zihin felsefesi, nörofizyoloji ve sosyoloji gibi uzmanlık alanları üzerine muhakkak disiplinler arası bir araştırma yapılması gerektiği sonucuna varılmıştır. Yapay zekâ, popüler düşüncede robotik gelişme ile ilişkilidir, ancak pratik uygulamada genelleştirilmesi ya da tanımlanması "hesaplama anlayışı gerektiren yazılım geliştirme alanlarında kullanılan gömülü bir bileşen" olmuştur. Yapay zekânın başlangıç noktası 1940'ların sonunda, Alan Turing'in "Bilgisayarlar düşünebilir mi?" sorusudur ve Turing testi hâlâ insan-istihbarat ölçeğindeki bilgisayar çıktılarını değerlendirmek için kullanılsa da, soru hâlâ etkili bir şekilde cevaplanmamıştır. Ancak, karmaşık formdaki gerçek dünya verilerini içeren bilgisayar uygulaması alanlarında; insan gözlemi ve müdahalesinin yerini alması nedeniyle değerlendirme, tahmini görevler ve otomasyon uygulamalarında gittikçe başarılı olmuştur.

Makine öğrenimi Bilgisayarlı görü Görüntü işleme
Örüntü tanıma Veri madenciliği Evrimsel algoritma
Bilgi temsili Doğal dil işleme Robotik

Bilgisayar mimarisi ve mühendisliği

[değiştir | kaynağı değiştir]

Bilgisayar mimarisi veya dijital bilgisayar organizasyonu, bir bilgisayar sisteminin kavramsal tasarımı ve temel operasyonel yapısıdır. Büyük ölçüde merkezi işlem birimini. (CPU) dahili olarak nasıl çalıştığına ve hafızadaki adreslere erişim sistemine odaklanmaktadır.[44] Bu çalışma alanı; işlevsellik, performans ve maliyet hedeflerini karşılayan bilgisayarlar oluşturmak için donanım bileşenlerini seçip entegrasyon çalışmaları yürüten bilgisayar mühendisliği ve elektrik mühendisliği disiplinlerini sık sık içerir.

Bilgisayar performans analizi

[değiştir | kaynağı değiştir]

Bilgisayar performans analizi; çıktıları iyileştirme, yanıt süresini kontrol etme, kaynakları verimli bir şekilde kullanma, tıkanıklığı ortadan kaldırma ve yoğun yüklenmelerde sistem performansı tahmin etme gibi genel hedefleri olan ve bunları iyileştirme çalışmaları yürütülen alandır.

Bilgisayar grafikleri ve görselleştirme

[değiştir | kaynağı değiştir]

Bilgisayar grafikleri, dijital görsel içeriğin incelenmesi ve görüntü verisinin sentezi ve manipülasyonu ile ilgilidir. Bu çalışmalar, bilgisayar bilimi, görüntü işleme ve hesaplama geometrisi de dahil olmak üzere bilgisayar bilimlerindeki diğer alanlarla da bağlantılıdır ve özel efektler ile video oyunları alanlarında yoğun bir şekilde uygulanmaktadır.

Bilgisayar güvenliği ve kriptografi

[değiştir | kaynağı değiştir]

Bilgisayar güvenliğinin amacı; sistemin, amaçlanan kullanıcılar için erişilebilirliğini ve kullanılabilirliğini korurken, yetkisiz erişim, bozulma veya harici modifikasyona karşı bilgilerin korunmasını içeren bir bilgisayar teknolojisi dalıdır. Kriptografi gizleme (şifreleme) ve dolayısıyla şifre kırma (ya da şifre çözme) bilgisinin uygulanması ve incelenmesidir. Modern şifreleme, büyük oranda bilgisayar bilimi ile ilgilidir, çünkü birçok şifreleme ve şifre çözme algoritmaları hesaplama karmaşıklığı alanına dayalıdır.

Hesaplamalı bilim

[değiştir | kaynağı değiştir]

Hesaplamalı bilim (veya bilimsel hesaplama), matematiksel modellemeler ve niceliğe dayalı analiz teknikleri oluşturmak ve bilimsel problemleri analiz etmek ve çözümlemek için bilgisayarı araç olarak kullanan bir çalışma alanıdır. Pratikte, bilgisayar simülasyonunun ve diğer hesaplama biçimlerinin, çeşitli bilim dallarındaki sorunlara uygulanması anlamına gelmektedir.

Sayısal analiz Biyoenformatik

Bilgisayar ağları

[değiştir | kaynağı değiştir]

Bilgisayar bilimlerinin bu dalı, bilgisayarlar arasındaki ağları dünya çapında yönetmeyi ve problemleri aşmayı amaçlamaktadır.

Eşzamanlı, paralel ve dağıtılmış sistemler

[değiştir | kaynağı değiştir]

Eşzamanlılık, birçok hesaplamanın aynı anda ve potansiyel olarak birbiriyle etkileşime girdiği sistemlerin bir özelliğidir. Petri ağları, süreç hesapları ve Paralel Rastgele Erişim Makinesi modeli de dahil olmak üzere genel eşzamanlı hesaplama için bir takım matematiksel modeller geliştirilmiştir. Dağıtılmış bir sistem eşzamanlılık fikrini bir ağ üzerinden bağlanan birden fazla bilgisayara genişletir. Aynı dağıtılan sistem içindeki bilgisayarlar kendi özel belleğine sahiptir ve ortak bir amaç edinmek için bilgi kendi aralarında sıklıkla değiştirilir.

Veritabanı, büyük miktardaki veriyi kolayca organize etmek, depolamak ve transfer etmek için tasarlanmıştır. Sayısal veritabanları, veritabanı modelleri ve sorgu dilleri aracılığıyla veri saklamak, oluşturmak, korumak ve aramak için veritabanı yönetim sistemleri sıklıkla kullanılmaktadır. Özellikle finans, emniyet ve kamusal alanlarda kullanımı yaygındır.

Yazılım mühendisliği

[değiştir | kaynağı değiştir]

Yazılım mühendisliği, yüksek kalitede, ekonomik, bakıma açık ve hızlı geliştirmeyi sağlamak için yazılım tasarlama, uygulama ve değiştirme çalışmasıdır. Yazılım tasarımına sistematik ve bilimsel yaklaşım, mühendislik çalışmalarının yazılıma uygulanmasıyla mümkün hale gelmektedir. Yazılım mühendisliği, yazılımın organizasyonu ve analizi ile ilgilenmektedir-sadece yeni yazılımların oluşturulması veya üretimi ile değil, dahili bakım ve düzenleme ile de ilgilenmektedir. Her iki bilgisayar uygulamaları yazılım mühendisi ve bilgisayar sistemleri yazılım mühendisi, 2008-2018 yılları arasında en hızlı büyüyen meslekler arasında yer alması bekleniyor.

Bilgisayar bilimlerindeki bazı büyük yaklaşımlar

[değiştir | kaynağı değiştir]
Alan Turing heykeli

Hesaplama filozofu Bill Rapaport "Great Insights of Computer Science" adlı eserinde bilgisayar bilimlerinde büyük yaklaşımların üçünü kaydetti:[45]

Gottfried Wilhelm Leibniz, George Boole, Alan Turing, Claude Shannon ve Samuel Morse'ın bilgisayar bilimlerine bakış açısı:

Bilgisayarın "herhangi bir şeyi" temsil etmek için kullanması gereken iki nesne var.

Hesaplanabilir bir problemle ilgili tüm bilgiler sadece 0 ve 1 (veya "açma / kapama", "mıknatıslanmış / mıknatıssız","yüksek gerilim / düşük gerilim" vb.) gibi kolayca ayırt edilebilir iki durum arasında geçiş yapabilen diğer dengeli çiftler kullanılarak temsil edilebilir.

Ayrıca bkz: Dijital fizik

Alan Turing'in anlayışı: Bir bilgisayarın "herhangi bir şey" yapmak için gerçekleştirmesi gereken yalnızca beş eylem var.

Her algoritma, yalnızca beş temel talimattan oluşan bir bilgisayar için bir dilde ifade edilebilir:

Bir yerden sola hareket et;

Sağa herhangi bir yere git;

Geçerli konumda sembolü oku;

Geçerli konumda 0 yazdır;

Geçerli konumda 1 yazdır.

Ayrıca bkz: Turing makinesi

Corrado Böhm ve Giuseppe Jacopini'nin yaklaşımı:

Bir bilgisayarın "herhangi bir şey" yapabilmesi için gereken bu eylemleri (daha karmaşık olana doğru) birleştirmenin üç yolu vardır.

Özetle herhangi bir temel talimat kümesini daha karmaşık olacak biçimde birleştirmek için yalnızca üç kural gereklidir:

Sıralama: önce şunu yapın, sonra bunu yapın;

Seçim: Böyle bir durumda bunu yapın, daha sonraki durumda bunu yapın, bu durumlardan birisi değilse bunu yapın;

Tekrarlama: Şöyle bir durumda şu şartlar sağlanıyor iken durumu tekrarla ve bu esnada şu işlemleri sırasıyla gerçekleştir.

Kriptoloji alanında çalışan bilgisayar bilimciler Whit Diffie ve Bruce Schneier "Bilgisayarlar, özgürlük ve gizlilik" konulu konferansta

Konferanslar bilgisayar bilimi araştırmaları için çok önemli olaylardır. Bu konferanslarda, kamu ve özel sektörde araştırmacılar yeni çalışmalarını sunmakta ve bir araya gelmektedirler. Diğer birçok akademik alanın aksine, bilgisayar bilimlerinde, konferans bildirilerinin prestijleri dergi yayınlarından daha yüksektir.[46][47]

Bunun için önerilen bir açıklamada; bilgisayar bilimleri dalının, diğer dallara nispeten hızlı bir şekilde geliştirilmesini, sonuçların hızlı bir şekilde incelenmesini ve dağılımını gerektirmesidir.

Bu nitelikteki çalışmalar ise dergilerden ziyade konferanslar tarafından daha iyi ele alınmaktadır ve bu sayede verimlilik artmakta, kitlelere daha etkin ulaşılabilmekte ve yapılan işlerin performansı artmaktadır.

Bilgisayar bilimi nispeten yeni bir alan olduğundan, okullarda ve üniversitelerde diğer akademik alanlar kadar yaygın şekilde öğretilmemektedir. Örneğin, 2014 yılında Code.org, Amerika Birleşik Devletleri'ndeki liselerin yalnızca yüzde 10'unun bilgisayar bilimi eğitimi verdiğini tahmin ediyordu.[48] Computing Machinery (ACM) ve Bilgisayar Bilimi Öğretmenleri Derneği (CSTA) tarafından düzenlenen 2010 raporunda, 50 eyaletten sadece 14'ünün lise bilgisayar bilimi için önemli eğitim standartlarını benimsediği ortaya çıktı.[49] Bununla birlikte, bilgisayar bilimleri eğitimi her yıl artan bir şekilde büyümektedir.[50] İsrail, Yeni Zelanda ve Güney Kore gibi bazı ülkeler halihazırda ulusal orta öğretim müfredatlarında bilgisayar bilimine yer vermektedirler.[51][52] Birçok ülke de bu gelişmeyi takip ederek müfredatlarını değiştirmektedir.[53][54] Türkiye'de de bu yönde yapılan çalışmalar 2015 yılında bakanlık tarafından duyurulmuştur.

Çoğu ülkede bilgisayar bilimleri eğitiminde önemli bir cinsiyet farkı vardır. Örneğin, ABD'de 2012'de bilgisayar bilimleri derecelerinin yaklaşık %20'si kadına verildi.[55] Türkiye'de bu oranlar ise %10 ila %30 civarında değişmektedir. Bu cinsiyet arasındaki uçurum diğer Batı ülkelerinde de bulunmaktadır.[56] Bununla birlikte, dünyanın bazı yerlerinde, bu cinsiyet dağılımı dengesizliği küçük veya yok denecek kadar azdır. 2011'de, Malezya'daki bilgisayar bilimleri derecelerinin yaklaşık yarısı kadına verildi.[57] 2001 yılında kadınlar, Guyana'daki bilgisayar bilimleri mezunlarının %54.5'ini oluşturuyordu.

  1. ^ WordNet Search 3.1 18 Ekim 2017 tarihinde Wayback Machine sitesinde arşivlendi. Wordnetweb.princeton.edu. Retrieved 2012-05-14
  2. ^ "Blaise Pascal" 19 Ekim 2016 tarihinde Wayback Machine sitesinde arşivlendi.. School of Mathematics and Statistics University of St Andrews, Scotland.
  3. ^ ""A Brief History of Computing"". 29 Haziran 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 23 Kasım 2016. 
  4. ^ "Arşivlenmiş kopya". 8 Eylül 2006 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Eylül 2006. 
  5. ^ a b Anthony Hyman (1982). Charles Babbage, pioneer of the computer.
  6. ^ "A Selection and Adaptation From Ada's Notes found in Ada, The Enchantress of Numbers," by Betty Alexandra Toole Ed.D. Strawberry Press, Mill Valley, CA". Archived from the original 10 Şubat 2006 tarihinde Wayback Machine sitesinde arşivlendi. on February 10, 2006. Retrieved 2006-05-04.
  7. ^ "In this sense Aiken needed IBM, whose technology included the use of punched cards, the accumulation of numerical data, and the transfer of numerical data from one register to another", Bernard Cohen, p.44 (2000)
  8. ^ Brian Randell, p. 187, 1975
  9. ^ The Association for Computing Machinery (ACM) was founded in 1947.
  10. ^ a b c Denning, Peter J. (2000). "Computer Science: The Discipline" (PDF). Encyclopedia of Computer Science. Archived from the original (PDF) on 2006-05-25.
  11. ^ "Some EDSAC statistics" 3 Eylül 2007 tarihinde Wayback Machine sitesinde arşivlendi.. Cl.cam.ac.uk. Retrieved 2011-11-19.
  12. ^ "Computer science pioneer Samuel D. Conte dies at 85" 6 Ekim 2014 tarihinde Wayback Machine sitesinde arşivlendi.. Purdue Computer Science. July 1, 2002. Retrieved December 12, 2014.
  13. ^ a b Levy, Steven (1984). Hackers: Heroes of the Computer Revolution. Doubleday. ISBN 0-385-19195-2.
  14. ^ a b c d Tedre, Matti (2014). The Science of Computing: Shaping a Discipline. Taylor and Francis / CRC Press.
  15. ^ "IBM 704 Electronic Data Processing System—CHM Revolution". 20 Nisan 2011 tarihinde Wayback Machine sitesinde arşivlendi. Computerhistory.org. Retrieved 2013-07-07.
  16. ^ "IBM 709: a powerful new data processing system" 4 Mart 2016 tarihinde Wayback Machine sitesinde arşivlendi. (PDF). Computer History Museum. Retrieved December 12, 2014.
  17. ^ "Timeline of Computer History" 2 Ekim 2015 tarihinde Wayback Machine sitesinde arşivlendi.. Computer History Museum. Retrieved November 24, 2015.
  18. ^ "Computer Science : Achievements and Challenges circa 2000"(PDF). Archived from the original (PDF) on September 11, 2006. Retrieved January 11, 2007.
  19. ^ Constable, R. L. (March 2000). "Computer Science: Achievements and Challenges circa 2000" 21 Temmuz 2010 tarihinde Wayback Machine sitesinde arşivlendi. (PDF).
  20. ^ Abelson, H.; G.J. Sussman with J. Sussman (1996). Structure and Interpretation of Computer Programs (2nd ed.). MIT Press. ISBN 0-262-01153-0. The computer revolution is a revolution in the way we think and in the way we express what we think. The essence of this change is the emergence of what might best be called procedural epistemology — the study of the structure of knowledge from an imperative point of view, as opposed to the more declarative point of view taken by classical mathematical subjects.
  21. ^ David Kahn, The Codebreakers, 1967, ISBN 0-684-83130-9.
  22. ^ "Black box traders are on the march". The Telegraph. August 26, 2006. Archived from the original on June 21, 2008.
  23. ^ "The Impact of High Frequency Trading on an Electronic Market" 2 Aralık 2016 tarihinde Wayback Machine sitesinde arşivlendi.. Papers.ssrn.com. doi:10.2139/ssrn.1686004. Retrieved 2012-05-14.
  24. ^ Matthau, Charles. "How Tech Has Shaped Film Making: The Film vs. Digital Debate Is Put to Rest" 20 Aralık 2016 tarihinde Wayback Machine sitesinde arşivlendi.. Wired. Retrieved November 24, 2015.
  25. ^ Louis Fine (1959). "The Role of the University in Computers, Data Processing, and Related Fields". Communications of the ACM. 2 (9): 7–14.
  26. ^ "Stanford University Oral History" 4 Nisan 2017 tarihinde Wayback Machine sitesinde arşivlendi.. Stanford University. Retrieved May 30, 2013.
  27. ^ Donald Knuth (1972). "George Forsythe and the Development of Computer Science" 20 Ekim 2013 tarihinde Wayback Machine sitesinde arşivlendi.. Comms. ACM. Archived October 20, 2013, at the Wayback Machine.
  28. ^ Matti Tedre (2006). "The Development of Computer Science: A Sociocultural Perspective" 18 Mart 2016 tarihinde Wayback Machine sitesinde arşivlendi. (PDF). p. 260. Retrieved December 12, 2014.
  29. ^ Peter Naur (1966). "The science of datalogy". Communications of the ACM. 9 (7): 485. doi:10.1145/365719.366510
  30. ^ Weiss, E. A.; Corley, Henry P. T. "Communications of the ACM". Communications of the ACM. 1 (4): 6. doi:10.1145/368796.368802.
  31. ^ Communications of the ACM 2(1):p.4
  32. ^ IEEE Computer 28(12):p.136
  33. ^ P. Mounier-Kuhn, L'Informatique en France, de la seconde guerre mondiale au Plan Calcul. L'émergence d'une science, Paris, PUPS, 2010, ch. 3 & 4.
  34. ^ "Why an informatics degree?". 11 Ocak 2023 tarihinde kaynağından arşivlendi. Erişim tarihi: 23 Kasım 2016. 
  35. ^ Tedre, M. (2011). "Computing as a Science: A Survey of Competing Viewpoints". Minds and Machines. 21 (3): 361–387.
  36. ^ Parnas, D. L. (1998). "Software engineering programmes are not computer science programmes". Annals of Software Engineering. 6: 19–37.
  37. ^ Wegner, P. (October 13–15, 1976). Research paradigms in computer science—Proceedings of the 2nd international Conference on Software Engineering. San Francisco, California, United States: IEEE Computer Society Press, Los Alamitos, CA.
  38. ^ Denning, P. J.; Comer, D. E.; Gries, D.; Mulder, M. C.; Tucker, A.; Turner, A. J.; Young, P. R. (Jan 1989). "Computing as a discipline". Communications of the ACM. 32: 9–23.
  39. ^ Computing Sciences Accreditation Board (May 28, 1997). "Computer Science as a Profession". Archived from the original on 2008-06-17. Retrieved 2010-05-23.
  40. ^ Committee on the Fundamentals of Computer Science: Challenges and Opportunities, National Research Council (2004). "Computer Science: Reflections on the Field, Reflections from the Field. " 18 Şubat 2011 tarihinde Wayback Machine sitesinde arşivlendi. National Academies Press.
  41. ^ "CSAB Leading Computer Education" 20 Ocak 2019 tarihinde Wayback Machine sitesinde arşivlendi.. CSAB. 2011-08-03. Retrieved 2011-11-19.
  42. ^ Clay Mathematics Institute 14 Ekim 2013 tarihinde Wayback Machine sitesinde arşivlendi.P = NP October 14, 2013, at the Wayback Machine.
  43. ^ P. Collins, Graham (October 14, 2002). "Claude E. Shannon: Founder of Information Theory". Scientific American. Retrieved December 12, 2014.
  44. ^ A. Thisted, Ronald (April 7, 1997). "Computer Architecture" (PDF). The University of Chicago.
  45. ^ "What Is Computation?" 14 Şubat 2001 tarihinde Wayback Machine sitesinde arşivlendi.. buffalo.edu.
  46. ^ Meyer, Bertrand (April 2009). "Viewpoint: Research evaluation for computer science". Communications of the ACM. 25 (4): 31–34.
  47. ^ Patterson, David (August 1999). "Evaluating Computer Scientists and Engineers For Promotion and Tenure 22 Temmuz 2015 tarihinde Wayback Machine sitesinde arşivlendi.". Computing Research Association.
  48. ^ "Computer Science: Not Just an Elective Anymore" 1 Aralık 2016 tarihinde Wayback Machine sitesinde arşivlendi.. Education Week. February 25, 2014.
  49. ^ "Running On Empty" 12 Haziran 2013 tarihinde Wayback Machine sitesinde arşivlendi. (PDF). October 2010.
  50. ^ "How to Teach Computational Thinking—Stephen Wolfram Blog" 20 Kasım 2016 tarihinde Wayback Machine sitesinde arşivlendi.. blog.stephenwolfram.com. Retrieved 2016-09-16.
  51. ^ "A is for algorithm" 16 Şubat 2017 tarihinde Wayback Machine sitesinde arşivlendi.. The Economist. April 26, 2014.
  52. ^ "Computing at School International comparisons" 8 Mayıs 2013 tarihinde Wayback Machine sitesinde arşivlendi. (PDF). Retrieved 20 July 2015.
  53. ^ Scott, Michael; Ghinea, Gheorghita (17 April 2013). Educating Programmers: A Reflection on Barriers to Deliberate Practice (pdf). Proceedings of the 2nd HEA Conference on Learning and Teaching in STEM Disciplines. HEA. pp. 85–90.
  54. ^ "Adding Coding to the Curriculum" 3 Aralık 2016 tarihinde Wayback Machine sitesinde arşivlendi.. New York Times. March 23, 2014
  55. ^ "IT gender gap: Where are the female programmers?". Retrieved 20 July 2015.
  56. ^ "IT gender gap: Where are the female programmers?".
  57. ^ "what gender is science" 24 Eylül 2015 tarihinde Wayback Machine sitesinde arşivlendi. (PDF). Retrieved 20 July 2015.