Informatyka


Informatyka w encyklopedii

Z Wikipedii, wolnej encyklopedii To jest najnowsza wersja przejrzana, która została oznaczona 15 lis 2020. Od tego czasu wykonano 6 zmian, które oczekują na przejrzenie. Przejdź do nawigacji Przejdź do wyszukiwania Informatyka zajmuje się teoretycznymi podstawami informacji, algorytmami i architekturami układów ją przetwarzających oraz praktycznymi technikami ich stosowania.

Informatyka (niem. informatik, ang. computing) – nauka ścisła i techniczna o przetwarzaniu informacji oraz naturalnych i inżynierskich systemach obliczeniowych[1]. Zajmuje się badaniem natury i metodologii obliczeń, opisem procesów algorytmicznych oraz tworzeniem sprzętu i programów komputerowych[2][3][4].

Istnieją różne próby definicji informatyki. Uniwersytet Edynburski definiuje ją jako naukę o budowie, zachowaniu i interakcji naturalnych i tworzonych systemów obliczeniowych, włączając w to aspekty obliczeniowe, kognitywne i społeczne[1]. Według Petera J. Denninga podstawowym pytaniem leżącym u podstaw informatyki jest: „Co można zautomatyzować?[5]. Według teorii Stuarta C. Shapiro, informatyka jest nauką przyrodniczą, która bada procedury. Adam Olszewski wyróżnił pięć rodzajów obiektów, które są przedmiotem zainteresowania informatyki: funkcje efektywnie obliczalne, algorytmy, programy komputerowe, realizacje i maszyny[6]. Informatyka jest nauką o transferze i transformacji informacji, oraz związanymi z tym algorytmicznymi procesami[7] oraz systemami przetwarzającymi informacje składającymi się ze sprzętu i programów komputerowych[8]. Bada także przepływ i przetwarzanie informacji w organizmach i systemach społecznych, symulując je i wzorując się na nich[9][10]. Obejmuje teorię i praktykę tworzenia warstwy oprogramowania (ang. software) jak i warstwy sprzętowej (ang. hardware)[4]. Pierwsze algorytmy obliczeniowe powstały w okresie antyku, a pierwszy mechaniczny kalkulator w 1623[11]. Współczesna informatyka powstała w Niemczech, gdzie Konrad Zuse skonstruował pierwszy na świecie komputer. Stworzył on też pierwszy język programowania, a w swojej książce Rechnender Raum (pol. Przestrzeń Obliczeniowa) przedstawił hipotezę że działanie wszechświata może być zasymulowane[12]. W roku 2005, w ACM Computing Curricula[13] zdefiniowano informatykę jako

Ogólnie rzecz biorąc, możemy zdefiniować informatykę jako jakąkolwiek zorientowaną na cel działalność wymagającą, korzystającą z lub tworzącą komputery. W związku z tym informatyka obejmuje projektowanie i budowanie sprzętu i systemów oprogramowania do szerokiego zakresu celów; przetwarzanie, strukturyzację i zarządzanie różnymi rodzajami informacji; wykonywanie badań naukowych przy użyciu komputerów; sprawianie, by systemy komputerowe zachowywały się inteligentnie; tworzenie i używanie mediów komunikacyjnych i rozrywkowych; znajdowanie i gromadzenie informacji związanych z jakimkolwiek określonym celem itd. Lista jest praktycznie nieskończona, a możliwości są ogromne.

Spis treści

Etymologia | edytuj kod

W języku polskim termin „informatyka” zaproponował w październiku 1968 Romuald Marczyński (w Zakopanem, na ogólnopolskiej konferencji w wykładzie zatytułowanym "Informatyka czyli maszyny matematyczne i przetwarzenie informacji")[14], na wzór francuskiego informatique i niemieckiego Informatik.

Termin informatics nie mógł zostać wprowadzony do słownictwa amerykańskiego z uwagi na problemy prawne - istniało tam przedsiębiorstwo o firmie Informatics Inc(ang.), co zablokowało chęć zmiany nazwy ACM na Society for Informatics. Wówczas popularny był już tam termin computer science – dosłownie: „nauka o komputerze” – co bywa postrzegane jako źródło potencjalnych nieporozumień i spotyka się z krytyką środowisk akademickich[15]. Proponowano wiele alternatywnych nazw m.in. Computer Studies, Computics, Computing Science, Information engineering, Information Technology. Association for Computing Machinery będące najważniejszą organizacją informatyczną przyjął termin computing na nazwę ogólnej dyscypliny.

Określenie computer science (CS) odnosi się przede wszystkim do informatyki rozumianej jako nauka ścisła, podczas gdy informatyka techniczna skupiająca się tworzeniu systemów komputerowych jest najczęściej tłumaczona jako computer engineering (CE), podobnie jak niemiecka technische Informatik rozumiana jako nauka inżynierska[16]. Natomiast określenie information technology (IT) jest najczęściej spotykane w kontekście zastosowań informatyki w gospodarce. Określenie software engineering (SE) bywa odnoszone ogólnie programowania, lecz jest także używane w kontekście zarządzania procesem wytwarzania oprogramowania. SE i IT są czasem na wzór niemiecki zbiorczo nazywane informatyką praktyczną (niem. praktische Informatik)[17][18].

Przegląd dyscyplin informatycznych | edytuj kod

Informatyka jest tylko o komputerach, tak jak astronomia tylko o teleskopach.

Edsger Dijkstra

Jako dyscyplina informatyka obejmuje szereg tematów, od teoretycznych badań nad algorytmami i teorią obliczalności po praktyczne zagadnienia związane z implementowaniem systemów obliczeniowych zarówno w warstwie sprzętowej, jak i oprogramowaniu[2][3]. CSAB, dawniej zwana Computing Sciences Accreditation Board – w skład której wchodzą przedstawiciele Association for Computing Machinery (ACM) oraz IEEE Computer Society (IEEE CS)[19] – identyfikuje cztery obszary, które uważa za kluczowe dla informatyki: teoria obliczeń, algorytmy i struktury danych, języki i metodologia programowania oraz budowa i architektura komputerów. Oprócz tych czterech podstawowych obszarów, CSAB identyfikuje również takie dziedziny, jak inżynieria oprogramowania, sztuczna inteligencja, sieci komputerowe i komunikacja, systemy baz danych, obliczenia równoległe, obliczenia rozproszone, interakcja człowiek–komputer, grafika komputerowa, systemy operacyjne oraz metody numeryczne i symboliczne jako będące ważnymi dziedzinami informatyki[2]. W roku 2012 celem ujednolicenia programów studiów informatycznych ACM wyróżnił pięć podstawowych specjalizacji[20]: informatyka techniczna (ang. computer engineering, CE), informatyka czysta (ang. computer science, CS), systemy informacyjne (ang. information systems, IS), technologia informatyczna (ang. information technology, IT), inżynieria oprogramowania (ang. software engineering, SE). W 2020 ACM dołożył do zalecanych specjalizacji Cybersecurity oraz Data Science. W Niemczech zwyczajowo dzięli się natomiast na informatykę teoretyczną, techniczną, praktyczną i stosowaną.

Peter J. Denning z kolei w swoim artykule o informatyce[21] pogrupował treści w następujące działy: algorytmy i struktury danych, języki oprogramowania, architektura komputerów i oprogramowania, systemy operacyjne i sieci, inżynieria oprogramowania, bazy danych i wyszukiwanie informacji, sztuczna inteligencja i robotyka, grafika komputerowa, interakcja człowiek–komputer, symulacje komputerowe i obliczenia numeryczne, informatyka ekonomiczna, bioinformatyka. Jednocześnie dla każdego z tych obszarów zaproponował podział na trzy podejścia dotyczące strony teoretycznej, abstrakcyjnej oraz twórczej.

Informatyka teoretyczna | edytuj kod

Teoretyczna informatyka ma ducha matematycznego i abstrakcyjnego, ale motywację czerpie z praktycznych i codziennych obliczeń. Jej celem jest zrozumienie natury obliczeń, w konsekwencji czego wprowadza ich coraz bardziej efektywne metody.

Algorytmika to więcej niż dział informatyki. Tkwi ona w centrum wszystkich działów informatyki.

David Harel, Algorithmics. The Spirit of Computing[22],

Algorytmika. Algorytmy i struktury danych | edytuj kod

 Osobne artykuły: Algorytmika, AlgorytmStruktura danych.

Algorytmika zajmuje się projektowaniem i analizą algorytmów i struktur danych. Jest najstarszą i jedną z najważniejszych dziedzin informatyki. Wśród jej podstawowych obszarów można wymienić projektowanie i analizę algorytmów, geometrię obliczeniową, optymalizację kombinatoryczną oraz logiką algorytmiczną. Historycznie podstawowymi zagadnieniami są algorytmy sortowania, kompresji, przeszukiwania czy szyfrowania oraz metody numeryczne, m.in. aproksymacji, interpolacji i całkowania numerycznego. Algorytmy podlegają klasyfikacji, wyróżniając np. algorytmy zachłanne jak algorytm Dijkstry czy algorytm Kruskala, metody generowania liczb losowych, metody optymalizacji itd. Do podstawowych struktur danych należą rekord, tablica, stos, lista, kolejka, drzewa czy grafy. Próbą połączenia idei struktur danych i algorytmów jest paradygmat programowania obiektowego. Algorytmika stanowi trzon dla bardzo wielu innych gałęzi informatyki jak chociażby grafika komputerowa, uczenie maszynowe czy przetwarzanie obrazów oraz jest określana jako serce informatyki[23].

Teoria obliczeń, złożoności i automatów | edytuj kod

 Osobne artykuły: Teoria obliczeńTeoria automatów.

Teoria obliczeń dzieli się on na trzy główne części: teorię automatów, teorię obliczalności oraz teorię złożności. Teoria automatów zajmuje definicjami i własnościami modeli obliczeń. W uproszczeniu zajmuje się ona odpowiedzią na pytanie czym jest komputer, teoria obliczalności odpowiedzią na pytanie, które problemy dają się rozwiązać przy pomocy komputera, a teoria złożoności – odpowiedzą na pytanie jak szybko da się to zrobić[24][25]. Jednym z ważniejszych jej obszarów jest teoria automatów. Przykładowymi zagadnieniami są Maszyna Turinga czy Hipoteza Churcha-Turinga. Języki formalne stanowią podstawę badań nad językami komputerowymi, jak i naturalnymi w lingwistyce.Systemy formalne są tworzone i badane zarówno jako samodzielne abstrakcyjne twory, jak i systemy opisu rzeczywistości.

Teoria informacji, sygnałów i kodowania | edytuj kod

 Osobny artykuł: Teoria informacji.

Matematyczna teoria informacji zajmuje się problematyką informacji, w tym podstawami teoretycznymi dla przetwarzania i przesyłania informacji, np. w celu ich transmisji lub kompresji. Przykładowo wprowadza takie pojęcia jak komunikat, entropia, ciało skończone czy bit będący podstawową jednostką w informatyce. Teoria kodowania zajmuje się tworzeniem i analizą reprezentacji danych w komputerze. Wyróżnia się m.in. kodowanie znaków czy kodowanie transportowe, do których należą np. kod stałopozycyjny, kod uzupełnieniowy, kod Hamminga, kod Graya czy kod znak-moduł. Związana z nią teoria sygnałów dostarcza podstaw teoretycznych dla przetwarzania sygnałów.

Informatyka kwantowa | edytuj kod

 Osobny artykuł: Informatyka kwantowa.

Informatyka kwantowa to gałąź informatyki łącząca ją z mechaniką kwantową, w której do przetwarzania informacji wykorzystywane są własności układów kwantowych[26]. Elementarnym nośnikiem informacji kwantowej jest kubit, kwantowy odpowiednik bitu. Stan kubitu opisany jest przez dowolną kombinację liniową stanów bazowych. W najbardziej popularnym modelu kwantowego przetwarzania informacji, operacje na kubitach są reprezentowane za pomocą bramek kwantowych. Najbardziej spektakularny sukces informatyki kwantowej to kwantowa kryptografia. Natomiast najbardziej obiecującym kierunkiem badań są prace dotyczące idei kwantowego komputera. Dynamiczny rozwój technologii w ostatnich latach spowodował że gałąź ta wyłamuje się poza czysto-teoryczne rozważania. Stworzono pewne realizacje bramek kwantowych, a na targach CES w 2018 roku amerykańskie przedsiębiorstwo informatyczne IBM zaprezentowała swój działający, 50-kubitowy komputer kwantowy[27].

Teoria języków programowania, typów, kompilacji | edytuj kod

 Osobny artykuł: Teoria języków programowania.

Teoria języków programowania (ang. Programming language theory, PLT) to dziedzina informatyki zajmująca się projektowaniem, wdrażaniem, analizą, charakteryzacją i klasyfikacją języków programowania oraz ich indywidualnymi cechami[28]. Przykładowymi obszarami PLT są semantyki formalne (ang. formal semantics), teoria typów (ang. type theory)[29] czy metaprogramowanie. Na języki programowania składa się składnia, semantyka i biblioteki standardowe, zazwyczaj posiadają co najmniej obsługę wejścia-wyjścia, obsługę plików, obsługę wielowątkowości, zarządzanie pamięcią operacyjną, podstawowe typy danych, funkcje do zarządzania nimi np. operacje na ciągach znaków. Ważnym obszarem PLT jest też teoria kompilacji, na której proces składa się wykonanie poleceń preprocesora, analiza leksykalna, analiza składniowa, analiza semantyczna, optymalizacja kodu wynikowego i generacja kodu. Języki klasyfikuje się według poziomu abstrakcji na którym operują na języki niskiego poziomu oraz języki wysokiego poziomu, wyróżnia się także wiele paradygmatów programowania[30][31].

Informatyka techniczna | edytuj kod

Informatyka techniczna zajmuje się techniką cyfrową, architekturą i organizacją systemów komputerowych na poziomie sprzętowym oraz oprogramowania sprzętowego, przetwarzaniem sygnałów, sieciami komputerowymi oraz przetwarzaniem równoległnym i rozproszonym, przy czym podział ten jest bardzo umowny - większość zagadnień w informatyce ma aspekty zarówno teoretyczne jak i techniczne.

Technika cyfrowa. Układy logiczne | edytuj kod

 Osobny artykuł: Technika cyfrowa.

Technika cyfrowa zajmuje się projektowaniem i analizą układów cyfrowych. Do jej elementarnych zagadnień należą bramki logiczne, rejestry, układy sekwencyjne i układy kombinacyjne. Obejmuje syntezę logiczną i odwzorowanie technologiczne[32]. Współcześnie jej zagadnienia są kształtowane z jednej strony przez języki opisu sprzętu, a z drugiej przez bezpośrednio programowalne macierze bramek[32][33].

Architektura i organizacja komputerów | edytuj kod

 Osobny artykuł: Architektura komputera.

Architektura komputerów (AK) to główny obszar informatyki technicznej zajmujący się projektowaniem i podstawową strukturą systemów komputerowych oraz budową i organizacją ich podzespołów. Główny obszar AK stanowi architektura procesorów na którą składa się model programowy procesora oraz mikroarchitektura procesora[34]. Procesory są głównym elementem systemów komputerowych. Szczególna uwaga jest poświęcona na sposobie, w jaki procesor wykonuje instrukcje i uzyskuje dostęp do adresów w pamięci. Przykładowe zagadnienia to DMA czy kontroler[35][36] Ważnymi obszarami AK są także magistrale oraz pamięci komputerowe. Pamięcią komputerową nazywa się różnego rodzaju urządzenia i bloki funkcjonalne komputera, służące do przechowywania danych i programów (systemu operacyjnego oraz aplikacji). Istnieje jej wiele rodzajów, m.in. rejestry procesora, pamięć podręczna procesora, pamięć RAM, dyski półprzewodnikowe (SSD), dyski twarde (HDD). Wyróżnia się pamięci zewnętrzne i wewnętrzne. Magistralę komunikacyjną (ang. bus) definiuje się jako zespół linii przenoszących sygnały oraz układy wejścia-wyjścia służące do przesyłania sygnałów między połączonymi urządzeniami w systemach mikroprocesorowych[37].

Przetwarzanie równoległe i rozproszone | edytuj kod

 Osobne artykuły: Przetwarzanie współbieżne, Obliczenia równoległeObliczenia rozproszone.

Obliczenia równoległe to obszar badający możliwość obliczeń, w której wiele instrukcji jest wykonywanych jednocześnie. Taka forma przetwarzania danych była wykorzystywana przez wiele lat, głównie przy wykorzystaniu superkomputerów, a szczególne zainteresowanie zyskała w ostatnich latach, z uwagi na fizyczne ograniczenia uniemożliwiające dalsze zwiększanie częstotliwości taktowania procesorów. Obliczenia równoległe stały się dominującym wzorcem w architekturze komputerowej, głównie za sprawą upowszechnienia procesorów wielordzeniowych. Ze względu na skalę można wyróżnić obliczenia równoległe na poziomie: bitów, instrukcji, danych i zadań. Współbieżność jest właściwością systemów, w których obliczenia wykonuje się jednocześnie i potencjalnie korzystają ze wspólnych zasobów i/lub wchodzą w interakcje ze sobą. Opracowano wiele modeli obliczeń równoległych, w tym sieci Petriego, rachunek procesowy (ang. process calculus) i model maszyny dostępu równoległego (ang. parallel random-access machine, PRAM). Kiedy wiele komputerów jest podłączonych do sieci podczas korzystania ze współbieżności, jest to nazywane systemem rozproszonym. w którym to komputery mają własną pamięć, a informacje są wymieniane, by osiągnąć wspólne cele.

Programowanie niskopoziomowe | edytuj kod

 Osobny artykuł: Programowanie niskopoziomowe.

Oprogramowanie niskopoziomowe pisze się w językach niskiego poziomu. Są to głównie języki asemblera, stanowią symboliczny zapis instrukcji procesora i danych, który w prosty sposób odpowiada zapisowi binarnemu. Języki asemblerowe wprowadzone w celu czytelnej dla człowieka reprezentacji języków maszynowych komputerów. W przeciwieństwie do języków wysokiego poziomu, typowe języki asemblerowe charakteryzują się strukturą liniową (wierszową). Każdy wiersz tekstu może zawierać pojedynczą instrukcję procesora lub dyrektywę asemblera[38].

Sieci komputerowe | edytuj kod

 Osobny artykuł: Sieć komputerowa.

Sieci komputerowe to gałąź informatyki mająca na celu tworzenie sieci między komputerami nazwywanych węzłami, umożliwiając im współdzielenie zasobów. W sieciach komputerowych urządzenia komputerowe wymieniają się danymi za pomocą (warstw sieciowych. W modelu OSI wyróżnia się warstwę aplikacji, prezentacji, sesji, transportową, sieciową, łącza danych i fizyczną, a w modelu TCP/IP – będącym podstawą struktury internetu – wyróżnia się warstwy aplikacji, transportową, internetową i dostępu do sieci. Te łącza danych są ustanawiane za pomocą mediów kablowych, takich jak skrętka lub kable światłowodowe, oraz mediów bezprzewodowych, takich jak np. Wi-Fi[39]. Jednymi z podstawowych zagadnień sieci są protokoły oraz urządzenia sieciowe. Do najpopularniejszych urządzeń sieciowych należy karta sieciowa, router, koncentrator, przełącznik, punkt dostępowy, most, ekspander zasięgu Wi-Fi (repeater Wi-Fi), adaptery PowerLine, serwery wydruku, kamery IP, bramki VoIP orazy telefony IP[40]. Protokołem komunikacyjnym nazywa się zbiór ścisłych reguł i kroków postępowania, które są automatycznie wykonywane przez urządzenia sieciowe w celu nawiązania łączności i wymiany danych. Definiują one syntaks, semantykę, synchronizację komunikacji oraz możliwe metody naprawiania błędów. Protokoły te mogą zostać wdrożone za pomocą hardwaru, oprogramowania lub obu jednocześnie[41].

Systemy operacyjne | edytuj kod

 Osobny artykuł: System operacyjny.

Systemy operacyjny pełnią szczególną rolę w informatyce. Jest to oprogramowanie zarządzające systemem komputerowym, tworzące środowisko do uruchamiania i kontroli zadań. Najważnieszym elementem systemu operacyjnych jest jego jądro wykonujące i kontrolujące zadania m.in. planisty czasu procesora, ustalającego które zadanie i jak długo będzie wykonywane czy przełącznika zadań, odpowiedzialnego za przełączanie pomiędzy uruchomionymi zadaniami. System operacyjny posiada także swoją powłokę, czyli specjalny program komunikujący użytkownika z systemem operacyjnym oraz system plików – sposób ustrukturyzowanego zapisu danych na nośniku. Osoby administrujące systemami nazwa się administratorami (pot. adminami). Współcześnie najważniejszą rodziną systemów operacyjnych jest GNU/Linux oraz Windows.

Informatyka praktyczna | edytuj kod

Programowanie wysokopoziomowe | edytuj kod

 Osobne strony: Programowanie komputerówKategoria:Konstrukcje programistyczne.

Programowanie komputerów to proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów komputerowych w tym dla urządzeń mikroprocesorowych (mikrokontrolery). Programowanie pod różnymi postaciami jest obecne w większości działów informatyki. Kod źródłowy jest napisany w języku programowania, z użyciem określonych reguł, może on być modyfikacją istniejącego programu lub czymś zupełnie nowym. Programowanie wymaga wiedzy i doświadczenia w wielu dziedzinach, jak projektowanie aplikacji, algorytmika, struktury danych, języki programowania i narzędzia programistyczne, kompilatory, czy sposób działania podzespołów komputera. Między programistami trwają debaty, czy programowanie komputerów jest sztuką, rzemiosłem czy procesem inżynieryjnym. Bezpośrednią formą sztuki w tej dziedzinie jest demoscena. Programowanie komputerów integruje ze sobą większość gałęzi informatyki. Istnieje wiele gałęzi rozwoju technik programowania, jednak wszystkie z nich bazują na wspólnych podstawach. Niezależnie czy to będzie aplikacja webowa w Javascript, gra komputerowa w C++ czy program mikrokontrolera w C, używają one podstawowych konstrukcji programistycznych. Podstawymi pojęciami od których zaczyna się naukę programowania są między innymi zmienne, tablice, instrukcje warunkowe, pętle, wskaźniki, łańcuchy, funkcje, debugowanie, biblioteki oraz zarządzanie pamięcią. Języki dzieli sią na generacje: 2GL, 3GL, 4GL, 5GL. Wyróżnia się między innymi języki akcji, języki algorytmiczne, języki dziedzinowe, języki interpretowane, języki kompilowane, języki mnemoniczne, języki nieproceduralne, języki niezależne komputerowo, języki niskiego poziomu, języki opisu zadań, języki problemowe, języki proceduralne, języki symulacyjne, języki uniwersalne, języki wysokiego poziomu i języki uniwersalne. Do najpopularniejszych języków programowania zalicza się: Java, C, Python, C++, Visual Basic .NET, C#, JavaScript, PHP, SQL, Język Asemblera, Swift, Objective-C, Ruby, Groovy, Go, Perl, Delphi, MATLAB, Visual Basic.

Grafika komputerowa | edytuj kod

 Osobny artykuł: Grafika komputerowa.

Grafika komputerowa to dział informatyki zajmujący się cyfrową syntezą i manipulacją treści wizualnych. Ze względu na reprezentację danych dzieli się na grafikę rastrową i wektorową, a ze względu na charakter danych na grafikę dwuwymiarową, trójwymiarową i ruchomą. Obejmuje także obecnie szybko rozwijające się przetwarzenie obrazów. Grafikę komputerową można także podzielić na teoretyczną skupiającą się algorytmach graficznych i praktyczną, skupiającą się manipulacji obrazem czy modelowaniu 3D np. w programie Blender. Grafika komputerowa stanowi podstawę współczesnych gier, animacji, symulacji czy wizualizacji komputerowych. Renderowanie polega na analizie stworzonego wcześniej modelu danej sceny oraz utworzenie na jej podstawie dwuwymiarowego obrazu wyjściowego w formie statycznej lub animacji. Podczas renderowania rozpatrywane są m.in. odbicia, cienie, załamania światła, wpływy atmosfery (w tym mgła), efekty wolumetryczne itp.

Inżynieria oprogramowania | edytuj kod

 Osobny artykuł: Inżynieria oprogramowania.

Inżynieria oprogramowania, także inżynieria systemów informatycznych – zajmuje się procesem i metodykami tworzenia systemów informatycznych: od analizy i określenia wymagań, przez projektowanie i wdrożenie, aż do ewolucji gotowego oprogramowania. Termin inżynieria oprogramowania po raz pierwszy został użyty w przełomie lat 1950/60 (ale oficjalnie za narodziny tej dyscypliny podaje się lata 1968 i 1969, w których miały miejsce dwie konferencje sponsorowane przez NATO, odpowiednio w Garmisch i Rzymie). Wyróżnia fazy produkcji oprogramwania: specyfikacji, projektowania, implementacji, integracji i ewoluacji, a także dostarcza systematycznych metodyk jego tworzenia, jak m.in. model kaskadowy, prototypowy czy zwinny, w tym scrum. Wprowadza takie pojęcia jak np. cykl życia programu czy metryka oprogramowania. Wyróżnia się także jej specjalizacje np. inżynieria systemów mobilnych, inżynieria systemów baz danych, inżynieria sytemów wbudowanych czy inżynieria gier komputerowych. Wzorcem projektowym (ang. design pattern) nazywa się uniwersalne, sprawdzone w praktyce rozwiązanie często pojawiających się, powtarzalnych problemów projektowych. Pokazuje powiązania i zależności pomiędzy klasami oraz obiektami i ułatwia tworzenie, modyfikację oraz utrzymanie kodu źródłowego. Jest opisem rozwiązania, a nie jego implementacją. Architekturą oprogramowania nazwywa podstawową organizację systemu wraz z jego komponentami, wzajemnymi powiązaniami, środowiskiem pracy i regułami ustanawiającymi sposób jego budowy i rozwoju. Metody formalne – tworzenie specyfikacji, projektowania i weryfikacji oprogramowania lub systemów informatycznych w języku formalnym. Metody formalne najlepiej opisać jako zastosowanie dość szerokiej gamy podstaw teoretycznych informatyki, w szczególności rachunku logicznego, języków formalnych, teorii automatów, systemu dynamiki zdarzeń dyskretnych i semantyki programów, a także systemów typów i typów danych algebraicznych do specyfikacji i weryfikacji problemów w oprogramowaniu i sprzęcie.

Inżynieria komputerowa | edytuj kod

 Osobny artykuł: Inżynieria komputerowa.

Inżynieria komputerowa (ang. computer engineering, niem. Technishe Informatik) – specjalność informatyki technicznej zajmująca się tworzeniem systemów komputerowyh. Do jej zadań należy projektowanie, wytwarzanie, integracja i eksploatacja sprzętu cyfrowego, w tym urządzeń sieciowych. Współcześnie ważną jej rolę stanowi tworzenie sprzętu i sterowników dla systemów wbudowanych, które wraz z pojawieniem sie koncepcji IoT mają coraz większe znaczenie[42].

Cyberbezpieczeństwo i kryptologia | edytuj kod

 Osobne artykuły: Bezpieczeństwo komputeroweKryptologia.

Kryptologia dzieli się na kryptografię, czyli gałąź wiedzy o utajnianiu wiadomości oraz kryptoanalizę, czyli gałąź wiedzy o przełamywaniu zabezpieczeń oraz o deszyfrowaniu wiadomości przy braku klucza lub innego wymaganego elementu schematu szyfrowania (szyfru). Przykładowe metody to atak brute force czy kryptoanaliza liniowa. Bezpieczeństwo komputerowe (ang. computer security'', pot. cybersecurity, hacking) zajmuje się zapewnianiem poufności i bezpieczeństwa danych. Osoby posiadające szeroką i zaawansowaną wiedzę informatyczną, lecz nieetycznie z niej korzystający nazywani są hakerami. Ich szczególnym zainteresowaniem jest wyszukiwanie luk (dziur) w systemach operacyjnych, programach, sieciach komputerowych czy urządzeniach do niej podłączonych w celu przejęcia nad nimi zdalnej kontroli. Wyróżnia się wiele klasycznych ataków komputerowych takich jak na przykład DDoS, HTTP Flood, UDP flood, smurf attack, session hijacking, a także wiele rodzai wirusów komputerowych, trojanów, snifferów czy rootkitów. W odpowiedzi powstało wiele technik obrony systemów informatycznych, np. obrona w głąb, security through obscurity czy głębokie ukrycie[43][44].

Data science, engineering, mining, big data | edytuj kod

Danologia (ang. Data science) wykorzystuje metody naukowe, procesy, algorytmy, narzędzia i systemy informatyczne do wydobywania wiedzy i spostrzeżeń z wielu danych strukturalnych i nieustrukturyzowanych. Eksploracją danych (ang. data mining) nazywa się jeden z procesów uzyskiwania wiedzy z baz danych. Idea eksploracji danych polega na wykorzystaniu szybkości komputera do znajdowania ukrytych dla człowieka (właśnie z uwagi na ograniczone możliwości czasowe) prawidłowości w danych zgromadzonych w hurtowniach danych. Big data to termin odnoszący się do dużych, zmiennych i różnorodnych zbiorów danych, których przetwarzanie i analiza jest trudna, ale jednocześnie wartościowa. Obecne użycie terminu big data zwykle odnosi się do użycia analizy predykcyjnej, analizy zachowania użytkownika lub niektórych innych zaawansowanych metod analizy danych, które wydobywają wartość z danych, a rzadko do określonego rozmiaru zestawu danych.

Systemy i technologie komputerowe | edytuj kod

 Osobne artykuły: System komputerowy, System informatycznyTechnika informatyczna.

Systemy informatyczne definiuje się jako zbiór powiązanych ze sobą elementów, które przetwarzają informacje. W języku polskim systemem informatycznym można spotkać ten termin w kontekście systemów komputerowych oraz systemów informacyjnych. Dr Marian Kuraś zwrócił uwagę że określenie system informatyczny powinno być zarezerwowane dla systemów komputerowych (ang. computer system), czy też systemów obliczeniowych (ang. computing system, computational system)[45].

Gry i symulacje komputerowe | edytuj kod

 Osobne artykuły: Gra komputerowa, Symulacja komputerowaProgramista gier komputerowych.

Gry komputerowe to rodzaj oprogramowania komputerowego przeznaczonego do celów rozrywkowych lub edukacyjnych, wymagające od użytkownika (gracza) rozwiązywania zadań logicznych lub zręcznościowych. Gry komputerowe mogą być uruchamiane na komputerach osobistych, specjalnych automatach, konsolach do gry, telewizorach, telefonach komórkowych oraz innych urządzeniach mobilnych. Gry, podobnie jak symulacje komputerowe mają wirtualizować pewien fragment rzeczywistości. Zaawansowane gry i symulacje są pisane w czystych językach programowania, najczęściej obiektowych – jak Simula czy C++ lub są oparte na silnikach jak Unity. Dla mniej wymagających symulacji powstały także uniwersalne programy.

Systemy wbudowane i mobilne | edytuj kod

 Osobne artykuły: System wbudowany, System czasu rzeczywistegoUrządzenie mobilne.

Systemy wbudowane to systemy komputerowe specjalnego przeznaczenia, który staje się integralną częścią obsługiwanego przez niego sprzętu komputerowego (hardware). System wbudowany musi spełniać określone wymagania ściśle zdefiniowane pod kątem zadań, które ma wykonywać. Każdy system wbudowany oparty jest na mikroprocesorze (lub mikrokontrolerze) zaprogramowanym do wykonywania ograniczonej liczby zadań lub nawet wyłącznie do jednego zadania. W systemach wbudowanych najpopularniejszymi modelami programowymi procesorów są RISC oparte na zasadach architektury harvardzkiej lub ARM. W systemach czasu rzeczywistego wynik i efekt działania jest zależny od chwili wypracowania tego wyniku. Od komputerów mobilnych (np. smartfony, tablety) oczekuje się, że mogą być swobodnie transportowane podczas normalnego użytkowania, oraz pozwalają na przesyłanie danych, głosu i wideo. System mobilny, także przetwarzanie mobilne (ang. mobile computing) obejmuje komunikację mobilną oraz sprzęt i oprogramowanie mobilne. Kwestie komunikacyjne obejmują sieci ad hoc, infrastrukturę sieci, a także właściwości komunikacyjne, protokoły, formaty danych i konkretne technologie. Typowy sprzęt mobilny zawiera często różne sensory, np. akcelerometry które są w stanie wykrywać i odbierać sygnały. Najważniejsze mobilne systemy operacyjne to iOS oraz Android Linux, gdzie dominują języki Java i Kotlin[46].

Bazy danych i aplikacje internetowe | edytuj kod

 Osobne artykuły: Baza danychAplikacja internetowa.

Baza danych to zorganizowany zbiór danych, ogólnie przechowywanych i dostępnych z systemu komputerowego. Tam, gdzie bazy danych są bardziej złożone, często są opracowywane przy użyciu formalnych technik projektowania i modelowania. System zarządzania bazą danych (DBMS) to oprogramowanie, które współdziała z użytkownikami końcowymi, aplikacjami i samą bazą danych w celu przechwytywania i analizy danych. Oprogramowanie DBMS obejmuje dodatkowo podstawowe narzędzia do zarządzania bazą danych. Często termin baza danych jest również używany do luźnego odniesienia do dowolnego DBMS, systemu bazy danych lub aplikacji powiązanej z bazą danych. Wyróżnia się bazy proste do których należy kartotekowe i hierarchiczne, w tym sieciowe oraz złożone, przede wszystkim relacyjne, obiektowe, relacyjno-obiektowe, strumieniowe, temporalne czy nierelacyjne. Aplikacją internetową (ang. web application), zwaną również aplikacją webową nazywa się program komputerowy, który pracuje na serwerze i komunikuje się poprzez sieć komputerową z hostem użytkownika komputera z wykorzystaniem przeglądarki internetowej użytkownika, będącego w takim przypadku interaktywnym klientem aplikacji internetowej. Programowanie webowe to praca związana z tworzeniem strony internetowej, co rozciąga się od prostej strony zwykłego tekstu HTML po złożone aplikacje internetowe np. serwisy społecznościowe. Front-endem określa się technologie uruchamiane w przeglądarce takie jak: CSS, JavaScript, HTML, SVG (wyświetlany na stronie) natomiast back-endem określa się skrypty uruchamiane po stronie serwera takie jak CGI (dowolny język), PHP, Ruby on Rails czy Node.js.

Wirtualizacja, emulacja, chmury obliczeniowe | edytuj kod

 Osobne artykuły: Wirtualizacja, EmulacjaChmura obliczeniowa.

Wirtualizacją nazywa się proces symulowania przez oprogramowanie istnienia zasobów logicznych, które wykorzystują ustalone podczas konfiguracji zasoby fizyczne. Chmura obliczeniowa (także przetwarzanie w chmurze, ang. cloud computing) to model przetwarzania danych oparty na użytkowaniu usług dostarczonych przez zewnętrznego usługodawcę. Zasada działania polega na przeniesieniu całego ciężaru świadczenia usług IT (danych, oprogramowania lub mocy obliczeniowej) na serwer i umożliwienie stałego dostępu poprzez komputery klienckie. Dzięki temu ich bezpieczeństwo nie zależy od tego, co stanie się z komputerem klienckim, a szybkość procesów wynika z mocy obliczeniowej serwera. Pojęcie chmury nie jest jednoznaczne, w szerokim znaczeniu przetwarzanym w chmurze jest wszystko co jest przetwarzane na zewnątrz zapory sieciowej.

Interfejsy i interakcje człowiek-komputer | edytuj kod

 Osobny artykuł: Interakcja człowiek–komputer.

Interakcją człowiek–komputer nazywa się wzajemne oddziaływanie między człowiekiem a komputerem zachodzące poprzez interfejs użytkownika, czyli część sprzętu i oprogramowania zajmującą się obsługą urządzeń wejścia-wyjścia przeznaczonych dla interakcji z użytkownikiem. Istnieje wiele rodzajów interfejsów, są to m.in. wiersz poleceń, interfejs tekstowy czy interfejs graficzny. Obecnie prowadzone są intensywne badania nad wirtualną rzeczywistością, a także interfejsami mózg-komputer.

Aplikacje komputerowe | edytuj kod

Sztuczna inteligencja, robotyka i sztuczne życie | edytuj kod

 Osobne artykuły: Sztuczna inteligencja, RobotykaSztuczne życie.

Sztuczna inteligencja (SI, ang. Artificial intelligence, AI) to obszar informatyki zajmujący się komputerowym symulowaniem inteligencji – tworzeniem modeli zachowań inteligentnych oraz systemów komputerowych symulujących te zachowania[47][48]. Szczególnym zainteresowaniem darzy się problemy które nie są bezpośrednio algorytmizowalne, jak rozpoznawanie obrazów, tłumaczenie maszynowe czy rozpoznawanie mowy. Sztuczna inteligencja jest związana z logiką rozmytą, algorytmami ewolucyjnymi, sieciami neuronowymi, robotyką i sztucznym życiem. SI bywa nazywane także inteligencją obliczeniową (ang. Computational Intelligence, CI). Uczeniem maszynowym (ang. Machine learning, ML) nazwa się analizę procesów uczenia się oraz tworzeniem systemów, które doskonalą swoje działanie na podstawie doświadczeń z przeszłości. Jedną z wiodących technologii jest TensorFlow[49]. Systemy te posiadają zdolność do samouczenia się i nazywa się je systemami samouczącymi. Podstawowymi metodami ML są symboliczne uczenie się (nazywane także indukcyjnym, ang. symbolic/inductive learning) oraz sztuczne sieci neuronowe (ang. artificial neural networks)[50]. Nazywa się tak połączone grupy węzłów, podobne do rozległej sieci neuronów w ludzkim mózgu. Głębokie sieci neuronowe (także głębokie uczenie maszynowe, ang. deep learning lub differential programming) to podkategoria uczenia maszynowego – nazywa się tak metody oparte na sztucznych sieciach neuronowych z uczeniem reprezentatywnym (ang. feature learning lub representation learning). Uczenie się może być nadzorowane, częściowo nadzorowane lub nienadzorowane[51]. Sztuczne życie (ang. artificial life, AL, niem. Künstliches Leben, KL) to kierunek badań, zorientowany na zrozumienie i wykorzystanie istoty życia. Pomysłodawcą i ojcem chrzestnym tego podejścia był amerykański matematyk i informatyk Christopher Langton, który zaproponował je w 1986 roku. Dziedzina obejmuje między innymi: tworzenie różnorodnych modeli życia oraz prowadzenie symulacji w środowisku programowym, sprzętowym i biochemicznym, symulacje ewolucji biologicznej oraz innych procesów biologicznych za pomocą metod informatycznych, badania i symulacje układów niebiologicznych, zachowujących się podobnie jak układy biologiczne (np. automatów komórkowych), algorytmy ewolucyjne i ewolucję programów komputerowych.

Rozpoznawanie wzorców. Percepcja komputerowa | edytuj kod

 Osobny artykuł: Rozpoznawanie wzorców.

Rozpoznawanie wzorców (ang. pattern recognition) to pole badawcze w obrębie uczenia maszynowego. Może być definiowane jako działanie polegające na pobieraniu surowych danych i podejmowaniu dalszych czynności zależnych od kategorii do której należą te dane. W rozpoznawaniu wzorców dąży się do klasyfikacji danych (wzorców) w oparciu o wiedzę aprioryczną lub o informacje uzyskane na drodze statystycznej analizy danych służącej wydobywaniu cech obiektów. Klasyfikowane wzorce to zazwyczaj grupy wyników pomiaru lub obserwacji definiujące położenie odpowiadających im punktów w wielowymiarowej przestrzeni cech.

Cyfrowe przetwarzanie sygnałów | edytuj kod

Cyfrowe przetwarzanie sygnałów polega na wykonywaniu pewnych operacji na sygnałach cyfrowych oraz interpretacją tychże sygnałów z wykorzystaniem komputerów lub innych układów przetwarzania danych. Do głównych zastosowań należy przetwarzanie dźwięku, kompresja dźwięku, cyfrowe przetwarzanie obrazów, kodowanie wideo, przetwarzanie mowy, rozpoznawanie mowy oraz telekomunikacja cyfrowa.

Bioinformatyka i chemioinformatyka | edytuj kod

Bioinformatyka (ang. bioinformatics, biocomputing, niem. Bioinformatik) - interdyscyplinarna dziedzina nauki łącząca biologię z informatyką. Bioinformatyka obejmuje rozwój metod obliczeniowych służących do badania struktury, funkcji i ewolucji genów, genomów i białek. Ponadto odpowiada za rozwój metod wykorzystywanych do zarządzania i analizy informacji biologicznej gromadzonej w toku badań genomicznych oraz badań prowadzonych z zastosowaniem wysokoprzepustowych technik eksperymentalnych[52]. Neuroinformatyka (ang. neuroinformatics, neurocomputing, niem. Neuroinformatik) zajmuje się przetwarzaniem i przepływem informacji w systemie nerwowym w celu zastosowania ich w systemach technicznych. Obejmuje tworzenie modeli obliczeniowych, narzędzi analitycznych i baz danych do udostępniania, integracji i analizy danych eksperymentalnych oraz rozwoju teorii na temat funkcji układu nerwowego. W kontekście INCF neuroinformatyka odnosi się do informacji naukowych na temat podstawowych danych eksperymentalnych, ontologii, metadanych, narzędzi analitycznych i modeli obliczeniowych układu nerwowego. Podstawowe dane obejmują eksperymenty i warunki eksperymentalne dotyczące poziomu genomowego, molekularnego, strukturalnego, komórkowego, sieciowego, systemowego i behawioralnego, we wszystkich gatunkach i preparatach zarówno w stanie normalnym, jak i nieuporządkowanym[53]. Informatyka chemiczna (ang. cheminformatics, niem. Chemoinformatik), także chemioinformatyka to nauka zajmująca się wykorzystaniem informatyki do rozwiązywania różnorodnych problemów chemicznych jak np. teoria grafów chemicznych czy badania przestrzeni chemicznej[54][55]. Te techniki, nazywane często metodami in silico, wykorzystywane są do przeprowadzania obliczeń w blisko związanej z nią chemii obliczeniowej oraz w chemii kwantowej i procesie projektowania leków. Nauka ta znajduje zastosowanie w wielu gałęziach przemysłu chemicznego do analizy i przetwarzania danych chemicznych.

Dalsze zastosowania i specjalizacje | edytuj kod

  • Informatyka afektywna zajmuje się metodami i narzędziami rozpoznawania, analizy, interpretacji i symulacji stanów emocjonalnych użytkowników komputerów.
  • Kognitywistyka zajmuje się obserwacją i analizą działania zmysłów, mózgu i umysłu, w szczególności ich modelowaniem. W części informatycznej używany jest termin informatyka kognitywna[57].
  • Informatyka medyczna (niem. Medizinische Informatik, ang. medical informatics) zajmujuje się zbieraniem, przetwarzaniem, przechowywaniem, udostępnianiem i przesyłaniem danych medycznych oraz metodami tworzenia urządzeń i systemów informatycznych wykorzysywanych w medycynie. Informatyka medyczna obejmuje między innymi: systemy wspomagania diagnostyki (np. IBM Watson for Oncology[58]), chirurgiczne i rehabilitacyjne roboty medyczne (np. SRI-led Trauma Pod), systemy rejestracji, przetwarzania i analizy sygnałów i obrazów medycznych (np. EKG) oraz systemy dla telemedycyny[59].

Edukacja | edytuj kod

Szkoła podstawowa, liceum i technikum | edytuj kod

W ramach I etapu edukacji (klasy I-III) uczniowie mają zajęcia z edukacji informatycznej w ramach edukacji wczesnoszkolnej. Klasy IV, V, VI, VII, VIII (II etap edukacyjny) mają już przedmiot informatyka[60]. W ramach ostatniej reformy edukacji w odpowiedzi na rosnące znaczenie technologii informatycznych zwiększono ilość zajęć z informatyki. Najważniejszym celem kształcenia informatycznego uczniów jest rozwój umiejętności myślenia obliczeniowego (z ang. computational thinking), skupionego na kreatywnym rozwiązywaniu problemów z różnych dziedzin ze świadomym i bezpiecznym wykorzystaniem przy tym metod i narzędzi wywodzących się z informatyki[61]. Takie podejście, rozpoczęte w szkole podstawowej, jest kontynuowane w liceum ogólnokształcącym i technikum zarówno w zakresie podstawowym, jak i rozszerzonym. Przedmiot informatyka jest realizowany przez wszystkich uczniów w każdej klasie, począwszy od klasy I szkoły podstawowej i jest kontynuowany w liceum ogólnokształcącym i technikum[61].

Studia wyższe | edytuj kod

Informatyka jest wykładana na uniwersytetach oraz na politechnikach. Na politechnikach programy studiów są nastawione na zagadnienia inżynierskie, a na uniwersytetach na zagadnienia naukowe. Z uwagi na ograniczoną liczbę miejsc oraz fakt że jest chętnie wybieranym kierunkiem studiów, obowiązują na nią stosunkowo wysokie progi punktowe. W roku akademickim 2018/2019 zgłosiło się 42759 chętnych[62]. W najlepszych uczelniach w kraju w pierwszej kolejności są przyjmowani finaliści Olimpiady Informatycznej. Spośród najlepszych jest wyłaniana reprezentacja Polski na różne międzynarodowe konkursy informatyczne np. Akademickie mistrzostwa świata w programowaniu zespołowym[63].

Zobacz też | edytuj kod

Przypisy | edytuj kod

  1. a b What is informatics? 
  2. a b c Computer Science as a Profession, web.archive.org, 17 czerwca 2008 [dostęp 2020-01-14] [zarchiwizowane z adresu 2008-06-17] .
  3. a b National ResearchN.R. Council National ResearchN.R., Computer Science: Reflections on the Field, Reflections from the Field, 4 października 2004, ISBN 978-0-309-09301-9 [dostęp 2020-01-14]  (ang.).
  4. a b Computer Science or Informatics? Wstęp do informatyki .
  5. Wayback Machine, web.archive.org, 25 maja 2006 [dostęp 2020-01-15] [zarchiwizowane z adresu 2006-05-25] .
  6. 46. spotkanie – Granice informatyki, Filozofia w informatyce, 22 listopada 2017 [dostęp 2020-04-19]  (pol.).
  7. What is Algorithm Design?, Computer Science Degree Hub [dostęp 2020-08-19]  (ang.).
  8. Heinz-PeterH.P. Gumm Heinz-PeterH.P., Informatik – band 1: Programmierung, Algorithmen und Datenstrukturen, 2017, DOI10.1515/9783110442267 .
  9. John C.J.C. Wooley John C.J.C., Catalyzing Inquiry at the Interface of Computing and Biology, Herbert S.H.S. Lin, 2005 .
  10. Natural Computing, Springer [dostęp 2020-04-19]  (ang.).
  11. Uniwersytet wU. Jena Uniwersytet wU., Wilhelm Schickard – ein Computerpionier .
  12. KonradK. Zuse KonradK., Rechnender Raum .
  13. The Joint Task Force for Computing Curricula 2005, Computing Curricula 2005 [zarchiwizowane z adresu 2014-10-21] .
  14. Karolina Wasielewska: Cyfrodziewczyny. Wydawnictwo Krytyki Politycznej, 2020. ISBN 978-83-66232-87-7.
  15. Marian Adamski: Informatyka – nauka, sztuka, czy rzemiosło?. „Uniwersytet Zielonogórski” – Miesięcznik Społeczności Akademickiej, 2002-09-30. [dostęp 2017-07-15].
  16. Technische Informatik Studium, www.ingenieurwesen-studieren.de [dostęp 2020-03-31] .
  17. Informatyka o profilu praktycznym | Uniwersytet Gdański – University of Gdańsk, ug.edu.pl [dostęp 2020-03-31] .
  18. Praktische Informatik Master of Science (M.Sc.) – FernUniversität in Hagen, www.fernuni-hagen.de [dostęp 2020-03-31] .
  19. CSAB, Inc., www.csab.org [dostęp 2020-01-14] .
  20. The Joint Task Force for ComputingT.J.T.F.C. Curricula The Joint Task Force for ComputingT.J.T.F.C., A volume of the Computing Curricula Series, web.archive.org, 2015 [dostęp 2020-04-17] [zarchiwizowane z adresu 2014-10-21] .
  21. Peter J.P.J. Denning Peter J.P.J., Computer Science: The Discipline .
  22. prof.Krzysztof Diks, slajd z wykładu, moment 12:28 .
  23. KrzysztofK. Diks KrzysztofK., Wykład pt. Po co komu te algorytmy? Uniwersystet Warszawski .
  24. MichaelM. Sipser MichaelM., Wprowadzenie do teorii obliczeń .
  25. Computational Complexity: A Modern Approach / Sanjeev Arora and Boaz Barak, theory.cs.princeton.edu [dostęp 2020-03-27] .
  26. Michael A.M.A. Nielsen Michael A.M.A., Isaac L.I.L. Chuang Isaac L.I.L., Quantum Computation and Quantum Information (10th anniversary ed.), 2012, ISBN 978-0-511-99277-3 .
  27. IBM zaprezentuje najpotężniejszy na świecie 53-kubitowy komputer kwantowy – NeeWS – GeekWeek.pl, www.geekweek.pl [dostęp 2020-03-27] .
  28. List, Classic Papers in Programming Languages and Logic .
  29. Robert L.R.L. Constable Robert L.R.L., Naïve Computational Type Theory, Dordrecht: Springer Netherlands, 2002, s. 213–259, DOI10.1007/978-94-010-0413-8_7, ISBN 978-1-4020-0608-1 [dostęp 2020-03-27] .
  30. Overview of the four main programming paradigms, people.cs.aau.dk [dostęp 2020-03-27] .
  31. KrishnamurthiShriram, Teaching programming languages in a post-linnaean age, „ACM SIGPLAN Notices”, 2008, DOI10.1145/1480828.1480846 [dostęp 2020-03-27]  (ang.).
  32. a b TC Moduł 1 – Studia Informatyczne, wazniak.mimuw.edu.pl [dostęp 2020-01-15] .
  33. TC Moduł 12 – Studia Informatyczne, wazniak.mimuw.edu.pl [dostęp 2020-03-28] .
  34. Architektura komputerów, wykłady .
  35. P.P. Metzger P.P., A.A. Jełowiecki A.A., Anatomia PC, Helion, 2000 .
  36. J.J. Biernat J.J., Architektura komputerów, Wydawnictwo Politechniki Wrocławskiej, 2002 .
  37. Wykład II. Pamięci półprzewodnikowe. Studia stacjonarne inżynierskie, kierunek INFORMATYKA Architektura systemów komputerowych – PDF Darmowe pobieranie, docplayer.pl [dostęp 2020-03-31] .
  38. Studia informatyczneS. MIMUW Studia informatyczneS., Programowanie niskopoziomowe – Moduł 1 .
  39. Sieci komputerowe – Studia Informatyczne, wazniak.mimuw.edu.pl [dostęp 2020-03-29] .
  40. Popularne urządzenia sieciowe, miroslawzelent.pl [dostęp 2020-03-29] .
  41. Zestawienie protokołów, pasja-informatyki.pl [dostęp 2020-03-29] .
  42. definicje, www.iszkowski.eu [dostęp 2020-05-18] .
  43. DanielD. Schatz DanielD., RabihR. Bashroush RabihR., JulieJ. Wall JulieJ., Towards a More Representative Definition of Cyber Security, „Journal of Digital Forensics, Security and Law”, 12 (2), 2017, DOI10.15394/jdfsl.2017.1476, ISSN 1558-7215 [dostęp 2020-03-28] .
  44. NikolaN. Zlatanov NikolaN., Computer Security and Mobile Security Challenges, 2015 .
  45. MarianM. Kuraś MarianM., System informacyjny a system informatyczny .
  46. ŁukaszŁ. Majchrzyk ŁukaszŁ., Najpopularniejsze języki programowania (styczeń 2019 r.), mobiRANK.pl, 10 stycznia 2019 [dostęp 2020-04-16]  (pol.).
  47. Katalog Niemieckiej BibliotekiK.N.B. Narodowej Katalog Niemieckiej BibliotekiK.N.B., Kontrola Autorytatywna, portal.dnb.de [dostęp 2020-03-31] .
  48. University of BritishU.B. Columbia University of BritishU.B., Faculty of ComputerF.C. Science Faculty of ComputerF.C., Computational Intelligence and Knowledge .
  49. BharathB. Ramsundar BharathB., Reza BosaghR.B. Zadeh Reza BosaghR.B., Głębokie uczenie z TensorFlow, 2019, ISBN 978-83-283-5705-1 .
  50. JerzyJ. Stefanowski JerzyJ., Wprowadzenie do maszynowego uczenia się, Instytut Informatyki, Politechnika Poznańska .
  51. Machine learning i deep learning – samouczące systemy. Leksykon 2017 | [dostęp 2020-03-29]  (pol.).
  52. JacekJ. Błażewicz JacekJ., Bioinformatyka i jej perspektywy, 2011 .
  53. What is Neuroinformatics | INCF – International Neuroinformatics Coordinating Facility, www.incf.org [dostęp 2020-04-19] .
  54. GasteigerG. J.(Editor) GasteigerG., EngelE. T.(Editor) EngelE., Chemoinformatics: A Textbook, 2004, ISBN 3-527-30681-1 .
  55. A.R.A.R. Leach A.R.A.R., V.J.V.J. Gillet V.J.V.J., An Introduction to Chemoinformatics, ISBN 1-4020-1347-7 .
  56. P.L.N.P.L.N. Raju P.L.N.P.L.N., Fundamentals of Geographic Information Systems .
  57. Wydawnictwo AGH - Podstawy informatyki kognitywnej, www.wydawnictwoagh.pl [dostęp 2020-08-22] .
  58. IBM Watson for Oncology [dostęp 2020-04-18] .
  59. Informatyka medyczna to przyszłość – WSIiZ wykształci potrzebnych specjalistów!, WSIiZ w Rzeszowie [dostęp 2020-04-19]  (pol.).
  60. Edukcja informatyki w szkole podstawowej – Portal Oświatowy, www.portaloswiatowy.pl [dostęp 2020-04-03] .
  61. a b Podstawa programowa – Informatyka – Liceum/technikum, podstawaprogramowa.pl [dostęp 2020-04-19] .
  62. WojciechW. Martyński WojciechW., Kierunki studiów 2020 (Najlepsze i najbardziej przyszłościowe), InterviewMe, 11 sierpnia 2015 [dostęp 2020-04-03]  (pol.).
  63. StefanS. Jackowski StefanS., Jak zmieniał się Wydział Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego w latach 1991-2016 .
Kontrola autorytatywna (dyscyplina naukowa):
Na podstawie artykułu: "Informatyka" pochodzącego z Wikipedii
OryginałEdytujHistoria i autorzy