Računalniško programiranje

Cilji in kompetence

Računalnik nam omogoča ali pomaga pri reševanju najrazličnejših nalog in problemov. Čeprav lahko za njihovo reševanje velikokrat uporabimo že napisano programsko opremo, pa v praksi večkrat naletimo tudi na naloge, ki zahtevajo posebej za ta namen napisan program. Cilj predmeta Računalniško programiranje je predstaviti študentom temeljne koncepte programiranja. Učni načrt je oblikovan tako, da študente spozna z vsemi osnovnimi programerskimi koncepti ter jih usposobi za samostojno pisanje programov v jeziku Java. Osvojena znanja bodo s pridom uporabljali pri reševanju problemov za katere je potrebna namensko napisana programska oprema.

Pogoji za vključitev v delo oz. za opravljanje študijskih obveznosti

Potrebna so osnovna matematična znanja ter osnovna znanja uporabe računalnika in vsaj enega od sodobnih operacijskih sistemov (Windows, Linux ali OS X).

Vsebina

  1. Uvod
    • Cilji in namen predmeta
    • Predstavitev učnega programa
    • Predstavitev učnih pripomočkov, virov in načina dela
    • Predstavitev obveznosti študentov
    • Napotki in sugestije za študij

  2. Osnovni pojmi
    • Kratka zgodovina programiranja in programskih jezikov
    • Delovanje računalnika
    • Algoritem, računalniški program in diagram poteka

  3. Prvi koraki v Javi
    • Osnovna orodja za poganjanje in pisanje programov (JRE in JDK)
    • Prvi primer programa
    • Spremenljivke
    • Osnovni podatkovni tipi
    • Tabele in nizi
    • Argumenti iz ukazne vrstice
    • Operatorji

  4. Programski stavki in metode
    • Izrazi in stavki
    • Prireditveni stavek
    • Krmilni stavki:
    o pogojni stavki (if-then-else, switch)
    o zanke (while, do-while, for)
    o vejitveni stavki (break, continue, return)
    • Metode

  5. Delo z vhodno-izhodnimi enotami
    • Branje s tipkovnice
    • Branje iz in pisanje v datoteke
    • Izjeme

  6. Objektno orientirano programiranje
    • Osnovni koncepti OOP (objekt, razred, metoda, vmesnik, dedovanje, paket)
    • Deklariranje razredov:
    o polja
    o konstruktorji
    o metode
    • Rezervirani besedi this in super
    • Vrste spremenljivk in njihova vidnost
    • Izpis in kopiranje objektov, preverjanje njihove enakosti

  7. Napredno programiranje
    • Razvojno okolje Eclipse
    • Datoteke jar
    • Matematične funkcije in razred Number
    • Računanja s števili s plavajočo vejico, zaokroževanje in konvergenca
    • Rekurzija
    • Delo z nizi
    • Delo z matrikami
    • Preprost uporabniški vmesnik
    • Pretvarjanje med podatkovnimi tipi
    • Dinamične tabele
    • Sortiranje
    • Računska zahtevnost algoritmov

  8. Grafični uporabniški vmesnik
    • Programčki (angl. Applets)
    • Osnovni principi
    • Grafične knjižnice
    • Osnovni grafični elementi
    • Dogodki

Predvideni študijski rezultati

Študenti bodo osvojili osnovne pojme (objektno orientiranega) računalniškega programiranja in spoznali programski jezik Java. Sposobni bodo samostojno zapisati problem v obliki algoritma in pretvoriti algoritem v računalniški program z uporabo sodobnih programskih orodij. Pridobili bodo osnovno razumevanje računalniških sistemov in arhitektur ter sposobnost samostojnega reševanja realnih problemov s pomočjo računalniškega programiranja.

Temeljna literatura in viri

• Peter Krebelj, Python 3 za začetnike: vse kar potrebujete, da boste postali Python programerji. 1. izd. - Ljubljana: Atelje Doria, 2013
• Peter Krebelj, Python za inženirje. E-gradivo
• Mrhar, P. (2002). Java 2 - prvi korak. Šempeter pri Gorici: Flamingo.
• Mesojedec, U., Fabjan B. (2004). Java2: temelji programiranja. Ljubljana: Pasadena.
• Eck, D. J. (2011). Introduction to Programming Using Java. 6th Edition. E-gradivo
• Eckel, B. (2002). Thinking in Java, 3rd Edition. E-gradivo
• Barnes, D.J., Kolling, M. (2004). Objects First with Java - A Practical Introduction using BlueJ, 2nd Edition, Prentice Hall/Pearson Education. E-gradivo
• Sierra, K., Bates, B. (2005). Head First Java, 2nd Edition, O'Reilly, Sebastopol. E-gradivo
• Wirth, N. (1985). Računalniško programiranje I. Ljubljana: DMFA.
• Wirth, N. (1985). Računalniško programiranje II. Ljubljana: DMFA.
• Učno razvojno okolje za Javo – BlueJ. E-gradivo

Načini ocenjevanja

Seminarska naloga z ustnim zagovorom, kjer se preveri zmožnost samostojne izdelave računalniškega programa za izbran praktični problem. Pisni izpit, kjer se ocenjuje znanje temeljnih konceptov objektno orientiranega računalniškega programiranja v jeziku Java ter zmožnost samostojnega reševanja krajših programerskih problemov. 25/75

Reference nosilca

Dr. Soumen Atta je trenutno zaposlen kot docent na Poslovno-tehniški fakulteti Univerze v Novi Gorici. Raziskovalno je povezan tudi s Centrom za informacijske tehnologije in uporabno matematiko Univerze v Novi Gorici. Dr. Atta je doktoriral iz računalništva in inženirstva na Univerzi v Kaljaniju v Indiji. Del svoje doktorske raziskave je opravil na Fakulteti za matematiko in računalništvo Univerze LODZ na Poljskem. Podoktorske raziskovalne izkušnje je pridobil na Univerzi Masaryk, Češka republika, in Univerzi Nantes, IMT Atlantique, Francija. Z več kot desetletjem raziskovalnih in pedagoških izkušenj se ukvarja s problemi lociranja objektov, kombinatorično optimizacijo, načrtovanjem hevrističnih in metahevrističnih algoritmov, evolucijskim računanjem, označevanjem grafov in prometnimi problemi. Za več informacij o Dr. Atti obiščite njegovo domačo stran https://www.soumenatta.com/.

Izbrane objave

Soumen Atta (2023). An improved harmony search algorithm using opposition-based learning and local search for solving the maximal covering location problem. Engineering Optimization, Taylor & Francis. (Published online: 05 Sep 2023)

Soumen Atta, Priya Ranjan Sinha Mahapatra and Anirban Mukhopadhyay (2022). Solving a new variant of capacitated maximal covering location problem with fuzzy coverage area using metaheuristic approaches. Computers & Industrial Engineering, Elsevier, Vol. 170, Article 108315.

Soumen Atta, Priya Ranjan Sinha Mahapatra and Anirban Mukhopadhyay (2021). A multi-objective formulation of maximal covering location problem with customers’ preferences: Exploring Pareto optimality-based solutions. Expert Systems With Applications, Elsevier, Vol. 186, Article 115830.

Soumen Atta, Goutam Sen (2021). A new variant of the p-hub location problem with a ring backbone network for content placement in VoD services. Computers & Industrial Engineering, Elsevier, Vol. 159, Article 107432.

Soumen Atta, Goutam Sen (2020). Multiple allocation p-hub location problem for content placement in VoD services: a differential evolution based approach. Applied Intelligence, Springer, Vol. 50, No. 5, pp. 1573-1589