Egy matematika érettségi feladat megoldása programozással 2021

érettségi logó

érettségi logóA 2021-es középszintű matematika érettségi feladatsor 12. feladata inspirált arra, hogy a programozás eszköztárával oldjuk meg ezt a feladatot. Szükséges hozzá néhány programozási tétel: sorozatszámítás, eldöntés, megszámolás, kiválogatás. Többféle megoldás/megközelítés is előkerül. Érdekes belegondolni, hogy mennyire más lehetne a problémamegoldás, ha programozhatnánk a matematika érettségi vizsgán. A teljes feladatsor a megoldásokkal együtt letölthető az oktatas.hu-ról.

12. feladat

A háromjegyű pozitív egész számok közül véletlenszerűen kiválasztunk egyet. Mennyi annak a valószínűsége, hogy a kiválasztott szám számjegyei különbözők? Megoldását részletezze!

1. megoldás

Az 1. megoldás egymásba ágyazott ciklusokkal behelyettesíti a szóba jöhető 900 db háromjegyű szám számjegyeit. A feltétel 648 esetben teljesül. Három számjegy azonosságát két részfeltétel és kapcsolatával eldönthetnénk a trichotómia miatt. Három számjegy különbözőségéhez három részfeltétel és kapcsolatából áll össze a feltétel. A válasz a kedvező és összes eset aránya/hányadosa, azaz 0,72. Másképpen 648 db szám a 900 db háromjegyű szám közül. A megoldás lépésszáma 900.

2. megoldás

Az egymásba ágyazott ciklusok lépésszáma összeszorzódik. A legbelső ciklus az előtte lévő feltételtől függően kevesebbszer is végrehajtódhat, hiszen a százas és tízes helyiértéken lévő számjegyek egyezése esetén nincs értelme az egyes helyiértéken lévő számjegy vizsgálatának. Így a 2. megoldás lépésszáma 810, azaz 10%-kal kevesebb. Ez a három részből álló feltétel két részre bontásával érhető el.

3. megoldás

A 3. megoldásban egyetlen ciklus végzi a vizsgálatot, a megszámolást. A ciklusváltozó már nem számjegy, hanem maga a háromjegyű szám, amiről döntést kell hozni: különbözik-e mindegyik számjegye vagy sem. Három beszédes nevű segédváltozó segít értelmezni a Java forráskódot. Ezek az egész osztás és a maradékos osztás műveleteivel állíthatók elő.

4. megoldás

A 4. megoldás logikai visszatérési értékű segédfüggvényt alkalmaz. Ez egy menekülőutas megoldás. Ha kizáró feltétel szerint már döntést tudunk hozni (például megegyezik a százas és a tízes helyiértéken lévő számjegy), akkor hamis értékkel menekülünk. Egyébként ág nélkül ezután következhet az egyes helyiértéken lévő számjegy összehasonlítása a többivel. A második feltétel az eddigiekhez képest tagadott, mert a menekülés a cél. Ha nincs menekülés amiatt, hogy volt két megegyező számjegy, akkor – a feltételek egymásra épülése miatt – nincs más hátra, mint igaz értékkel visszatérni (ami azt jelenti, hogy nem volt egyezés, azaz minden számjegy különbözött).

5. megoldás

Az 5. megoldás segédfüggvénye a háromjegyű szám esetén a különböző számjegyek darabszámával tér vissza. A röptében előállított százaz, tízes, egyes helyiértékeken lévő számjegyekből folyam adatszerkezet készül, aminek feldolgozását a Stream API műveletei (egyediesítő, megszámoló) végzik el. Ezt a vezérlő ciklusban hárommal összehasonlítva léptethető a megszámolást megvalósító változó, hiszen ha teljesül a feltétel, akkor eggyel több megfelelő szám van, mint előtte volt.

6. megoldás

Az 6. megoldás újra másképpen közelít. Ha könnyebbnek tűnik az a feltétel, hogy mikor nem jó (kedvezőtlen) nekünk egy szám, akkor beépíthetjük ezt is. Megszámoljuk azokat a háromjegyű számokat, amelyeknél egy vagy két számjegy azonos, majd ez kivonjuk a háromjegyű számok darabszámából.

7. megoldás

A 7. megoldás már mindent folyamokkal old meg, azok képességeire építve. Az összes háromjegyű számot előállítja, majd rajtuk kiválogatás programozási tételt (szűrőt) használ (az 5. megoldás segédfüggvényére építve), végül a folyamban maradó számokat megszámolja. Ez a megoldás már olyan haladóknak való, akik magabiztosan építik össze a Stream API műveleteit és a lambda kifejezéseket. Mindent egyben. Persze hol itt a hatékonyság? Hozzászólásokban megbeszélhetjük.

8. megoldás

A 8. megoldás szintén folyam adatszerkezettel működik, de négy egymást követő lépésben végez szűrést (kiválogatást). A 900 db háromjegyű számból indulunk ki. Az 1. szűrő kihagyja a 9 db AAA számot, amelyek számjegyei azonosak és így marad utána 891 db szám. A 2. szűrő után marad 810 db szám, mert kimarad az a 81 db AAB alakú szám (ahol a százas és tízes helyiértéken lévő számjegyek megegyeznek) az összesen 90 db-ból, ami még a folyamban maradt az 1. szűrő után. A 3. szűrő kihagy 81 db ABB alakú számot és meghagy 729 db számot. A 4. szűrő kihagy 80 db ABA alakú számot és meghagy 648 db ABC alakú számot.

A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

Ajánljuk matematika érettségi feladat címkénket, mert a témában évről-évre blogolunk.

A feladat a Java SE szoftverfejlesztő tanfolyam szakmai moduljának 5-8. óra: Vezérlési szerkezetek, 13-16. óra: Tömbök, valamint 21-24. óra: Objektumorientált programozás, 2. és 3. rész alkalmaihoz kötődik.

 

Digitális Témahét 2021

A Digitális Témahét 2015-ben indult országos rendezvénysorozat. Fő célja a digitális pedagógia módszertanának népszerűsítése és elterjesztése. A program fontos törekvése, hogy a digitáliskompetencia-fejlesztés az informatikán túl kiterjedjen más tantárgyakra is. A résztvevő pedagógusok és diákok változatos és kreatív iskolai projektek keretében fejleszthetik képességeiket technológiával támogatott tanulás során. A Digitális Témahét rendezvény minden meghirdetett programja ingyenes. A 2018/2019-es tanévben már több mint 3000 oktatási projekt valósult meg, közel 8000 pedagógus és 135000 diák részvételével.

A 2020/2021-es tanévben a rendezvény március 22-26. között valósult meg. Kiemelt témakörök/szempontok:

  • a multidiszciplináris megközelítés: a matematika, a természet- és mérnöki tudományok, valamint a művészet- és társadalomtudományok együttes megjelenítése;
  • a digitális technológia alkotó használata és az algoritmikus gondolkodás fejlesztése;
  • a kiemelt figyelmet igénylő tanulók fejlesztése és bevonása;
  • a nevelési-oktatási intézmények közötti együttműködés élénkítése;
  • a határon túli magyar pedagógusok és oktatási intézmények bevonása;
  • a digitális biztonság a mindennapi pénzügyeinkben;
  • az intézményen belül történő pedagógus közötti együttműködés élénkítése, a projektmódszer alkalmazásának kiterjesztése olyan kollégákra, akik még nem ismerik;
  • ebben a tanévben is a digitális gyermekvédelem, a médiatudatosság, a közgyűjtemények digitális tartalmainak nevelésben, oktatásban történő megjelenése.

Rendezvényünk plakátja

Az it-tanfolyam.hu 2021-ben csatlakozott a rendezvénysorozathoz. Három oktatónk hirdetett négy programot a https://digitalistemahet.hu weblapon. A programjainkra 2021. március 23-án 9:00-12:00 óráig került sor.

9:00-9:50 – Kaczur Sándor: Hogyan kommunikálnak különböző szakemberek, miközben elkészül egy bevételt termelő, márkát építő honlap?
Az ötletgazda kitalálja a tutit. A legjobb üzletet. Ami sok pénzt termel. Nyilván online. Rájön arra, hogy ő ennek a megvalósításához egyedül kevés és különböző szakemberekből csapatot épít maga köré. No de ez nem megy könnyen, hiszen mindenki más nyelven beszél. Mégis a közös cél érdekében valahogyan, folyamatokban gondolkodva történik valami miközben telik az idő. Megérti egymást az ötletgazda, a grafikus, a marketing tanácsadó, a kreatív szövegíró, a szoftverfejlesztő, a rendszerüzemeltető, és ahogyan mondták régebben: és még sokan mások. Tehát kipattan a szikra és akad, aki képben van a trendi design elveivel és ergonómiával, a netes értékesítés apró praktikáival, a figyelemfelkeltő és tudatba égő szöveg elkészítésének trükkjeivel, a weboldalba beágyazható követőkódokkal, űrlapokkal, az online fizetési módok akadálymentes megvalósításával és persze nem árt, ha mindez biztonságosan és fenntarthatóan működik. Vajon miről beszélgethetnek? Hogyan valósul meg a projekt? Az előadás ismertet néhány tipikusan előforduló párbeszédet, döntési helyzetet, alternatívát, megoldást. A program szakmaközi kommunikációra fókuszál és a Java tanfolyamaink orientáló moduljához kötődik.

10:00-10:30 – Szegedi Kristóf: Játékprogramok nyerő stratégiáinak elemzése
A tudásalapú rendszerek elméleti alapjaihoz tartoznak a mesterséges intelligencia különböző megoldáskereső módszerei, az állapottér-reprezentáció és a klasszikus keresési stratégiák. Egy játék állapotait valahogyan nyilvántartjuk egy adatszerkezetben. Lehet, hogy néhány lépést előre kalkulálunk (kiterjesztünk) és ezek elágazásaiból fát (fa adatszerkezet) tudunk építeni. Ezeket hatékonyan karban kell tartani konstrukciós és szelekciós műveletekkel. Döntéseket is kell hozni. Vajon melyik állapot a jobb, vagy kevésbé rossz, legalább olyan jó mint ahol járunk? Ki kell értékelni és abba az irányba érdemes haladni, amelyben végül a döntések sokasága igazolja és egyben adja a nyerő stratégiát. Ha ez nem megy, akkor még mindig játszhatunk nem vesztő stratégiával, azaz lehet cél a hosszabb játékmenet, vagy akár a döntetlen állapot is. Az előadás ismertet néhány tipikus problémaszituációt, játéktéret leképező reprezentációs gráfbeli navigációt és összehasonlít néhány fabejáró/gráfbejáró stratégiát. A program mindhárom Java tanfolyamunk orientáló moduljához kötődik.

10:40-11:20 – Kaczur Sándor: Java kollekciók hatékonysága
Adott egy ismert algoritmus egy ismert problémára. A gyakorlati bemutató példákat mutat arra, hogy az ismert Java kollekció keretrendszer különböző adatszerkezeteinek funkcionalitását/szolgáltatásait felhasználva mennyire eltérő megoldásokat tudunk készíteni. Mindegyik megoldás ugyanazt az eredményt adja, de alapjaiban más gondolatmenettel születtek. Vajon melyik tekinthető hatékonyabbnak? Mennyi tárhelyet igényelnek? Mennyi idő alatt hajtódnak végre? Mennyire bonyolultak, azaz mennyire könnyű/nehéz megérteni/dokumentálni/elmagyarázni? Előkerülnek különböző Set, Queue, List, Map implementációk, programozási tételek. Amit csak lehet, mérünk, összehasonlítunk, elemzünk. Végül az eredmények alapján javaslatokat adunk: mikor, miért, mit (mit ne), hogyan (hogyan ne) használjunk. A program a Java SE szoftverfejlesztő tanfolyamunk tematikájához kötődik.

11:30-12:00 – Kiss Balázs: Gondolkodjunk logikusan!
Az előadás során áttekintjük az intelligencia, a kreatív problémamegoldó és logikus gondolkodás összefüggéseit és izgalmas feladatokból válogatva közösen megoldunk néhány fejtörő feladatot.

 

A programjaink a Google Meet online platformon élőben zajlottak, ahová kb. 60-an látogattak el. Köszönöm oktató kollégáimnak, hogy örömmel csatlakoztak. Mindannyian jól éreztük magunkat. Igazán tartalmas programot állítottunk össze. Szívesen csatlakoztunk és szívesen emlékszünk majd rá. Legközelebb talán már az offline világban is szervezhetünk eseményeket, tarthatunk rendezvényeket.

A szakmaközi kommunikációra fókuszáló első előadásomat – kiemelve a grafikus, marketing menedzser, szoftverfejlesztő, rendszerüzemeltető szakmákat – megtartottam a SZÁMALK-Szalézi Technikum és Szakgimnázium Digitális Témahét 2021 rendezvényéhez kötődően is, 2021. március 22-én 14:00-14:45-ig.

Sankey-diagram készítése

Sankey diagram logó

Sankey-diagram-logoA Sankey-diagram alkalmas kétféle adatsor közötti N:M fokszámú kapcsolat, összefüggés és a köztes átmenet ábrázolására. Hangsúlyozza a fő átvitelt vagy áramlatokat egy rendszeren belül. Az áramlás irányát nyíllal szemlélteti és az áramlatok szélessége arányos az áramlási mennyiségekkel.

Feladat

Jelenítsük meg HTML formátumú weboldalként a magyarországi régiókban a foglalkoztatottak számát nemzetgazdasági szektorok szerint a KSH 2018-as adatsora alapján! Automatizáljuk egy Java programmal úgy a feladatot, hogy az év paraméterként megadható legyen!

Tervezés

A KSH témastruktúrában a táblázat elérési útja:

  • 5. Területi adatok,
  • 5.1. A munkaerő-piaci tendenciák Magyarország régióiban,
  • 5.1.3. A foglalkoztatottak száma nemzetgazdasági szektorok szerint, nemenként (2008–)

Online böngészhető táblázat:
http://www.ksh.hu/docs/hun/xstadat/xstadat_hosszu/h_qlf017.html.

Letölthető táblázat (XLS formátumban): http://www.ksh.hu/docs/hun/xstadat/xstadat_hosszu/xls/h5_1_3.xls.

A táblázatban lévő adatforrás szükséges része látható az ábrán:

KSH adatforrás Sankey-diagramhoz

A táblázatban a régiók az A105:A112 cellatartományban találhatók. A hozzájuk tartozó 3 nemzetgazdasági szektor a B-C-D oszlopok azonos soraiból olvashatók ki. POJO-k létrehozása mindenképpen hasznos a megvalósításhoz, például new SankeyData("Közép-Dunántúl", "Szolgáltatás", 253.89). Ezekből generikus listát is célszerű építeni: List<SankeyData> sankeyDataList.

Többféleképpen is hozzájuthatunk az adatokhoz attól függően, hogy milyen előismeretekkel rendelkezünk a különböző tanfolyamainkon:

  • A Java SE szoftverfejlesztő tanfolyamon „kézzel” letölthetjük a projekt files mappájába az XLS fájlt. Ezután akár manuálisan is összeállítható a POJO lista, vagy a JExcel API-val is hatékonyan feldolgozható a XLS fájl aktuális munkalapja. Fájlkezelés előtt az összeállított HTML fájlt kiírathatjuk a konzolra, ahonnan „kézzel” vágólapozva létrehozhatjuk belőle a szükséges HTML fájlt. Fájlkezeléssel persze adott mappába, adott fájlnévvel, kivételkezeléssel a java.io vagy java.nio csomagot használva a HTML fájl generálása is automatizálható.
  • A Java EE szoftverfejlesztő tanfolyamon megvalósítható, hogy a program kivételkezeléssel hálózati kapcsolatot épít, majd letölti az XLS fájlt és ezzel a feladat visszavezethető az előző esetekre. Azt is megtehetjük, hogy az XLS fájlt nem töltjük le, hanem olvasunk belőle közvetlenül a webről. Ekkor is rendelkezésünkre áll a POJO lista. Itt már tudunk HTML fájlt is automatikusan generálni.

Tanulmányoznunk kell a Google Charts galériában a Sankey diagram dokumentációját! Meg kell ismernünk a paraméterezési lehetőségeit és JavaScript forráskódját!

Megvalósítás

A createSankeyDiagram() függvény létrehozza a HTML fájl szöveges tartalmát. Átveszi adatforrásként a sankeyDataList generikus POJO listát. A String típusú sankeyData objektum tartalmazza a Stream API-val hatékonyan összefűzött – POJO-któl elkért – toString() szövegeket. Ezek a diagramhoz szükséges adatok ( addRows …). Például: "['Közép-Dunántúl', 'Szolgáltatás', 253.89]". A  String típusú  html objektum kezdetben tartalmazza a diagramhoz nem szükséges fix részeket, a diagram alapbeállításait, valamint a diagram fejlécéhez szükséges metaadatokat ( addColumnRégió, Nemzetgazdasági szektor, Foglalkoztatottak száma (ezer fő)). A függvény végül a html objektum #SankeyData# részét cseréli a sankeyData-val és az adatfüggő résszel frissített HTML tartalommal tér vissza.

Eredmény

Az egyik eredmény a generált HTML fájl (benne a grafikonhoz tartozó JavaScript) forráskódját tartalmazza:

A másik eredmény a Sankey-diagram képernyőképe, amelyről kiválóan leolvashatók az értékek:

Sankey-diagram

A böngészőben megjelenő HTML oldalon a Sankey-diagram dinamikusan – az egérkurzor pozíciójától függően – képes az aktuális adatok megjelenítésére, mintegy lebegő jelmagyarázatként.

A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

Organogram készítése

Organogram logó

HR-organogram-logoAz Oracle HR sémából építünk organogramot, amivel megjeleníthető a szervezeti hierarchia. Személyenként készítünk csomópontokat. (Másképpen is lehetne: például részlegenként.) A megvalósítás során kétszer konvertálunk A-ból B-be. Először az adatbázisból/adatforrásból SQL lekérdezéssel jutunk hozzá a szükséges adatokhoz, amelyeket generikus listába képezzük le. Ezután a listát feldolgozva generálunk HTML fájlt, amely tartalmaz egy Organization Chart diagramot.

Hasonló feladat: Ki kinek a vezetője?, rekurzív lekérdezéssel. Érdemes összehasonlítani a kétféle szemléletmódot.

Tervezés

Most pedig azt használjuk fel, hogy az Oracle HR sémában az EMPLOYEES táblában reflexió van, amelyet az EMPLOYEE_ID és a MANAGER_ID mezők biztosítanak.

Az Organization Chartnál három adatsor adható meg. Ezek most testre szabva (mindegyik szöveges): 'Employee lastname', 'Job ID', valamint jelmagyarázatként további három mező összefűzve: 'Employee name, Department name, Job title'. Az organogramon megjelenő adatok például: "Raphaely", "PU_MAN", valamint a csomópontra fókuszálva megjelenő tooltip: "Employee: Den Raphaely, Department: Purchasing, Job: Purchasing Manager". A DEPARTMENTS táblából – az EMPLOYEES-zel a DEPARTMENT_ID-vel összekötve – megkapjuk a DEPARTMENT_NAME-t. A JOBS táblából pedig – az EMPLOYEES-zel a JOB_ID-vel összekötve – megkapjuk a JOB_TITLE-t.

A lekérdező parancs

SQL-organogram

Az EMPLOYEE_ID elsődleges kulcs, vagyis kötelező. A MANAGER_ID nem kötelező, a hierarchia tetején álló vezetőnél ez a mező null értékű. Mivel a MANAGER_ID nem kötelező, így külön lekérdező parancsban kell előállítani a 15 középvezetőt együtt a 2 felső vezetővel, valamint az egyetlen felső vezetőt, akinek a MANAGER_ID-ja null. Ezt a két részeredményt össze kell fűzni ( UNION).

Az eredménytábla

SQL-eredménytábla

Az adatfeldolgozás lépései

Java programozási nyelven kötelező a kivételkezelés a JDBC kapcsolatfelvétel, SQL parancs futtatása, valamint a fájlkezelés során. A JDBCConnection interfészben definiált szöveges konstansok: DRIVER, URL, USER, PASSWORD (az adatbázis-szerverrel való kommunikációhoz), SQL (a lefuttatandó lekérdező parancs). Az OrganizationChart interfészbe került a HTML_FILE_PATH (a generálandó HTML fájl Path útvonala) és a HTML (konstans váz az organogram testre szabott HTML+JavaScript forráskódja). Az SQL parancs ResultSet eredménytáblájának feldolgozása során áll elő az orgChartDataList generikus lista. A HTML konstans szövegben lévő #OrgChartData# elemet ki kell cserélni a generikus listából Stream API-val dinamikusan összefűzött adatokra. A fenti példa ide kapcsolódó része: "[{'v':'Raphaely', 'f':'Raphaely<div style="color:red; font-style:bold">PU_MAN</div>'}, 'King', 'Employee: Den Raphaely, Department: Purchasing, Job: Purchasing Manager']". Ezt követően a java.nio csomag Files osztályának write() metódusával fájlba menthető az előállított fájltartalom. A konkrét Java forráskódot most nem részletezem.

Az elkészült organogram

HR-organogram

A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

A feladat a Java adatbázis-kezelő tanfolyam 9-12. óra: Oracle HR séma elemzése, 13-16. óra: Konzolos kliensalkalmazás fejlesztése JDBC alapon, 1. rész, 33-36. óra: Grafikus kliensalkalmazás fejlesztése JDBC alapon, 2. rész alkalomhoz kapcsolódik.

IT történet – januárban történt

IT történet blog bejegyzés sorozatunkban válogatunk a januárban történt események közül – bármikortól napjainkig. A főbb témakörök: IT általában, számítástudomány, hardver, szoftver, platform, szoftverfejlesztés, játékprogramok, híres informatikusok, kibernetikusok, feltalálók, IT hírek, technológiai mérföldkövek. Természetesen nem törekedhetünk a teljességre, pusztán érdekességeket említünk röviden, tömören, amit illik tudni a szakterület iránt érdeklődőknek.


1939. január 1-jén, 82 éve történt:
Bill Hewlett és Dave Packard megalapította az amerikai Hewlett-Packard Company (HP) IT vállalatot, amely a PC-iről és nyomtatóiról lett világhírű.


1979. január 2-án, 42 éve történt:
Dan Bricklin és Bob Frankston megalapítja az amerikai Software Arts nevű vállalkozást. Elkezdték a VisiCalc nevű számítógépes program fejlesztését, amely az első mikroszámítógépekre kifejlesztett táblázatkezelő volt.


1977. január 3-án, 44 éve történt:
A Steve Jobs, Steve Wozniak és Ronald Wayne által alapított Apple Inc. bejegyzett részvénytársaság lett.


1983. január 3-án, 38 éve történt:
A Time magazin a személyi számítógépet választotta ‘Az év emberévé’. Az 1927 óta minden évben kiosztott cím történetében először fordult elő, hogy nem embernek ítélték oda.


2009. január 3-án, 12 éve történt:
Egy ismeretlen (fórumos nevén Satoshi Nakamoto) kibocsátotta a Bitcoin nyílt forráskódú digitális fizetőeszközt. Ez volt az első kriptovaluta. Az elnevezés vonatkozik a nyílt forráskódú szoftverrel létrehozott elosztott hálózatra is.


1972. január 4-én, 49 éve történt:
A Hewlett Packard vállalat bemutatta az első tudományos célú zsebszámológépet, a HP-35-öt. Az eszköz később óriási siker lett.


1995. január 5-én, 26 éve történt:
Bill Gates bemutatta a Microsoft Bob nevű, Windows 3.1-re és Windows 95-re szánt grafikus felületet. Ez a vállalat egyik legnagyobb bukásának bizonyult. Több szaklap is beválogatta minden idők legrosszabb szoftverei közé.


2000. január 6-án, 21 éve történt:
A San Francisco-i MacWorld Expo-n az Apple Inc. bemutatta a Mac OS X operációs rendszert.


1943. január 7-én, 78 éve történt:
Elhunyt Nikola Tesla, aki a világ egyik legjelentősebb és leghíresebb, szerb származású tudósa és feltalálója volt, tevékenységét elsősorban az elektromosság, mágnesség és gépészet területén fejtette ki.


1982. január 7-én, 39 éve történt:
A Consumer Electronics Show (CES) alkalmával a Commodore Business Machines amerikai, elektronikai cég bemutatta a Commondore 64-et, amely az 1980-as évek kultikus személyi számítógép-típusa volt.


1889. január 8-án, 132 éve történt:
Herman Hollerith német származású amerikai statisztikus, feltaláló, üzletember megkapta a szabadalmat az általa kifejlesztett lyukkártya-feldolgozó gépre, amivel néhány hónap alatt feldolgozta az 1890-es amerikai népszámlálás adatait.


2007. január 9-én, 14 éve történt:
Az Apple Inc. bejelentette az iPhone-t, amely az iPhone-széria első okostelefonja volt.


1946. január 10-én, 75 éve történt:
Megtörtént az első sikeres visszhangfelismerés az amerikai hadsereg Diana kísérleti projektjében, amelynek célja volt a Holdról visszavert radarjelek fogadása. Ez volt az első radarcsillagászati kísérlet egy másik égitest vizsgálatára.


1934. január 11-én, 87 éve történt:
Megszületett Tony Hoare, teljes nevén Sir Charles Antony Richard Hoare. A Turing-díjas, tudományos és oktatási tevékenységéért lorddá avatott brit számítógéptudós nevéhez fűződik a Quicksort (gyorsrendezés) algoritmus.


1968. január 12-én, 53 éve történt:
Az AT&T amerikai telekommunikációs vállalat bejelentette, hogy a 911-es számot egyetemes segélyhívó számként jelölte meg.


2020. január 14-én, tavaly történt:
A Microsoft Corporation megszüntette a Windows 7 kiterjesztett támogatását, hogy újabb technológiák és nagyszerű, új szolgáltatások támogatására tudja összpontosítani befektetéseit.


2001. január 15-én, 20 éve történt:
Elindult a Wikipédia projekt angol nyelvű változata. Ez minden idők legnagyobb, szabadon szerkeszthető internetes enciklopédikus gyűjteménye. 2020-ban már 6 millió szócikket tartalmazott. 2002-től a Wikipédia napja.


1986. január 19-én, 35 éve történt:
Megjelent az első IBM PC-re írott rezidens, flopin terjedő bootvírus, a Brain. Szerzői azért hozták létre, hogy büntessék az illegális szoftvermásolást.


1999. január 19-én, 22 éve történt:
A Research in Motion (RIM) szoftverfejlesztéssel és IoT technológiával foglalkozó kanadai cég megjelentette a BlackBerry terméksorozat első eszközét. Ez a BlackBerry 850 hordozható, valósidőben e-mailt küldő/fogadó személyhívó volt.


1999. január 20-án, 22 éve történt:
Először jelent meg a Happy99 féreg, amely az első e-mailben terjedő számítógépvírus volt.


1959. január 21-én, 62 éve történt:
Az Esti Hírlap beszámolt az első magyar elektronikus számítógép (korabeli szóhasználattal: ‘számológép’), az M-3 elkészültéről. Ez a magyar informatika születésnapja.


1984. január 22-én, 37 éve történt:
A XVIII. Super Bowl harmadik negyedében bemutatták az azóta kultikussá vált Apple Inc. ‘1984’ televíziós reklámjának nevezett, amely útjára indította a Macintosh személyi számítógépet.


1996. január 23-án, 25 éve történt:
A Sun Microsystems félvezetőket, számítógépeket, szoftvereket gyártó amerikai cég kiadta a Java fejlesztői környezet első változatát Oak néven (Java Development Kit 1.0).


1984. január 24-én, 37 éve történt:
Apple Inc. bemutatta második személyi számítógépét, a Macintosh-t, amelynek Mac OS nevű grafikus felhasználói felületű operációs rendszere volt.


1926. január 26-án, 95 éve történt:
Londonban bemutatták az első, hagyományos katódsugárcsöves képernyővel rendelkező, működőképes televíziót.


2010. január 27-én, 11 éve történt:
Steve Jobs, az Apple Inc. alapító-vezérigazgatója a San Franciscó-i Yerba Buena Arts Centerben bemutatta a cég új termékét, az iPad táblagépet.


2007. január 28-án, 14 éve történt:
Az adatvédelem nemzetközi napja. Az Európa Tanács (ET) kezdeményezésére 2007-ben, az ET adatvédelmi konvenciója elfogadásának 25. évfordulóján rendezték meg először az Európai Bizottság támogatásával.


1925. január 30-án, 96 éve történt:
Megszületett Douglas Engelbart amerikai feltaláló, aki 1963-ban megalkotta a számítógépes beviteli eszközt. Ez lett a PC korszakban az egér.


2007. január 30-án, 14 éve történt:
A Microsoft Corporation piacra dobja a Windows Vista operációs rendszerét és az Office 2007 irodai programcsomagot is.


1956. január 31-én, 65 éve történt:
Megszületett Guido van Rossum holland programozó, a Python programozási nyelv megalkotója.


1997. január 31-én, 24 éve történt:
A Sony Computer Entertainment (SIE) japán multinacionális videójáték- és digitális szórakoztató-ipari vállalat megjelentette a Final Fantasy VII videószerepjátékot PlayStation-re. A szériában ez volt az első játék, amely 3D-s technológiákat használt.