programozási ismeretek oktatása: kód vagy algoritmus

42
Programozási ismeretek oktatása: kód vagy algoritmus Menyhárt László, Dr. Pap Gáborné IV. Oktatás-Informatikai Konferencia Budapest, 2014.02.07-08.

Upload: anne-woodward

Post on 02-Jan-2016

79 views

Category:

Documents


3 download

DESCRIPTION

Programozási ismeretek oktatása: kód vagy algoritmus. Menyhárt László, Dr. Pap Gáborné IV. Oktatás-Informatikai Konferencia Budapest, 20 14 . 02 . 07-08. Bevezetés. Miről lesz szó? Miért kezdődött el a munka? Mi lett belőle? Hogyan lehet használni? Mivel lehet folytatni?. Alapok. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Programozási ismeretek oktatása: kód vagy algoritmus

Programozási ismeretek oktatása:kód vagy algoritmus

Menyhárt László, Dr. Pap GábornéIV. Oktatás-Informatikai Konferencia

Budapest, 2014.02.07-08.

Page 2: Programozási ismeretek oktatása: kód vagy algoritmus

Bevezetés

Miről lesz szó?

Miért kezdődött el a munka?

Mi lett belőle?

Hogyan lehet használni?

Mivel lehet folytatni?

Page 3: Programozási ismeretek oktatása: kód vagy algoritmus

Alapok

ELTE-IK-n Programozási Alapismeretek oktatása

Rá kell vennünk a hallgatókat a módszeres gondolkodásraAlgoritmust először

Kell egy programozási nyelv isKódot másodszor

Megvalósítás, kipróbálás

Most C++-t használunk

Page 4: Programozási ismeretek oktatása: kód vagy algoritmus

Alapok

Tehát kell mindkettő

Miért? Hogyan?

AlgoritmusÁltalánosabb

Módszeres feladatmegoldás

KódSpeciális nyelvi kifejezések

Futtatás miatt szükséges

Page 5: Programozási ismeretek oktatása: kód vagy algoritmus

Módszeres feladatmegoldás

Feladat megértése / specifikálásAdatmodell (be/kimenet, elő/utófeltétel)

Algoritmus készítés (nyelvfüggetlen)Implementálás

Code::Blocks IDE, C++ nyelv

Futtatás, hibakeresés/javítás

Tesztelés

Dokumentálás (csak házi feladatban)

Page 6: Programozási ismeretek oktatása: kód vagy algoritmus

Tapasztalatok

Specifikáció hiányos (ha van)

Nekiesnek a kódnak

Algoritmus a kódból visszafejtveReplaceAll (informatikus -> inciklusmatikus)

Tesztelés összecsapott

Dokumentáció <- mintadokumentációból a végénbenne maradnak részek a mintából (pl specifikáció)

Page 7: Programozási ismeretek oktatása: kód vagy algoritmus

Ötlet

Adjunk egy alkalmazást, ami segít

Adatot gyűjteni

Dupla munka kiküszöböléseDokumentáció, kód előgenerálás (időt spórolunk a

diáknak copy-paste helyett)

Win-win helyzet kialakításaMindenki nyerjen

Mert az erőszak nem használ

Page 8: Programozási ismeretek oktatása: kód vagy algoritmus

Saját készítésű web-es alkalmazás

Programming Fundamentals Wizard - PFW

Web-es rendszer (langs: HU, EN)

Java-ban fejlesztve (JSP, HTML, CSS, JS, XSLT)

Glassfish Application Server-en fut

Az egyetemi szerveren

Felhasználó azonosítása Gmail (OpenID), inf.elte.hu-s vagy regisztrált név/jelszó párral

Az adatok tárolása speciális XML formátumban

Page 9: Programozási ismeretek oktatása: kód vagy algoritmus

PFW

Adatgyűjtés helyeÁltalános információk (fejlesztés előtt)

Feladat szövege, készítő, …

Egy feladat több részfeladatot tartalmazhat

Bemenet és előfeltételben lehetnek közös részek

Részfeladatonként

Kiegészítő bemenet és előfeltétel

Kimenet, utófeltétel és algoritmus

Kiegészítő információk (kódolás után)

Tesztelés, fejlesztési lehetőségek

Page 10: Programozási ismeretek oktatása: kód vagy algoritmus

Algoritmus leírókEljárás összegzés(N, X[], S):

S:=0;ciklus i:=1-től N-ig

S:=S+X[i];ciklus vége

Eljárás vége

void subtask_1(int N, int X[], int & S){S:=0;for (int i=0; i<N; i++) {

S=S+X[i];}

}

Page 11: Programozási ismeretek oktatása: kód vagy algoritmus

Algoritmus a PFW-ben

NSD (Nassi-Shneiderman Diagram, struktogram)

Komplex diagram

Dobozok jelekkel és jelentésekkel

Nyelvfüggetlen (programozási és természetes)

Külföldi hallgatók képzése angol nyelven

Pszeudókód angolul hasonlít a programozási nyelvekhez

Anyanyelvüket én nem beszélem

Nehéz rajzolni (papíron, hibajavítás, …)

Page 12: Programozási ismeretek oktatása: kód vagy algoritmus

Kitekintés - „NSD szerkesztők”

Ben Shneiderman 2003-ban összegyűjtöttehttp://www.cs.umd.edu/hcil/members/bshneiderman/nsd/

StruktoGraaf 3.0Holland, fizetős, € 84,-

EasyCodeNémet EuroSoftInc kezdte, EasyCode, kód generálás,

fizetős (14 nap próba)

SmartDrawAmerika Kaliforniai, $ 197,-

Page 13: Programozási ismeretek oktatása: kód vagy algoritmus

Kitekintés - „NSD szerkesztők”

Microsoft Visio

SourceCoderMár nem elérhető a HREF Tools Corp. Cég honlapja

szerint.

Még pár (6-10) link nem elérhető

Page 14: Programozási ismeretek oktatása: kód vagy algoritmus

Kitekintés - „NSD szerkesztők”

Nem szerepeltek az oldalon

Egyéb Microsoft termékek

Paint eszközökJavításkor elölről kell újrarajzolni

StructorizerLuxemburgi, weben applet, letölthető

StukimaniaELTE-s szakdolgozat

Webes

Page 15: Programozási ismeretek oktatása: kód vagy algoritmus

PFW-ben megoldva

Java, JSP, HTML, JS, CSS

XML

Új TML nyelv (task, feladat leírás, AML-re épül)

XSLT

Generálásokhoz, NSD megjelenítéshez

NSD szerkesztés

Egér jobb-gomb, Ajax hívás, újratöltés

Page 16: Programozási ismeretek oktatása: kód vagy algoritmus

PFW – így néz ki

Page 17: Programozási ismeretek oktatása: kód vagy algoritmus

PFW - így néz ki

Page 18: Programozási ismeretek oktatása: kód vagy algoritmus

PFW - így néz ki

Page 19: Programozási ismeretek oktatása: kód vagy algoritmus

PFW - így néz ki

Page 20: Programozási ismeretek oktatása: kód vagy algoritmus

PFW - így néz ki

Page 21: Programozási ismeretek oktatása: kód vagy algoritmus

PFW - így néz ki

Page 22: Programozási ismeretek oktatása: kód vagy algoritmus

PFW - így néz ki

Page 23: Programozási ismeretek oktatása: kód vagy algoritmus

PFW - így néz ki

Page 24: Programozási ismeretek oktatása: kód vagy algoritmus

PFW - így néz ki

Page 25: Programozási ismeretek oktatása: kód vagy algoritmus

PFW, mint generátor

Van sok információnk

Lehetséges a generálásDokumentációt és algoritmust

Nem 100%-os megoldást!

Sablont az ismert adatokkal

Page 26: Programozási ismeretek oktatása: kód vagy algoritmus

Dokumentáció generálása

Kattintunk egy gombon

MS Word dokumentum letöltése

HTML doc kiterjesztéssel és mime típussal

Betöltődik a programba

Lehetne OpenOffice is (más kiterjesztés és mime)

Piros színnel jelzi, hogy hol kell belenyúlnia a hallgatónak. „Javítsd!”

Képernyő képek, saját kiegészítések, …

Page 27: Programozási ismeretek oktatása: kód vagy algoritmus

Generált dokumentáció

NSD

Page 28: Programozási ismeretek oktatása: kód vagy algoritmus

Forráskód generálása

Kattintás egy gombon

Tömörített (zip) könyvtár letöltése

Code::Blocks projekt

<rövidnév>.cbp, main.cpp, subtasks.h, subtasks.cpp

Page 29: Programozási ismeretek oktatása: kód vagy algoritmus

Generált forráskód

NSD

Page 30: Programozási ismeretek oktatása: kód vagy algoritmus

Generált forráskód

main.cppVáltozók generálása a specifikációból (be-/kimenet)

Függvényhívások minden részfeladathoz

Adatok beolvasását implementálni kell

Klaviatúra vagy fájl

Adatok kiírását implementálni kell

Képernyő vagy fájl

Page 31: Programozási ismeretek oktatása: kód vagy algoritmus

Generált forráskód

subtasks.hMinden függvényhez a fejléc információk

Paraméterek a specifikációból (be-/kimenet)

subtasks.cppGenerált forráskód az algoritmusból

A hibás szintaxisú kódot javítani kell!void subtask_1(int N, int X[], int & S){

S:=0;while (i:=1..N) {

S:=S+X[i];}

}

Page 32: Programozási ismeretek oktatása: kód vagy algoritmus

Generált forráskód

Lehetséges a nyelvspecifikus kifejezések használata

de inkább NE!

Algoritmus maradjon nyelvfüggetlen!

void subtask_1(int N, int X[], int & S){ S=0; int i=0; while (i<N){ S=S+X[i]; i++; }}

Page 33: Programozási ismeretek oktatása: kód vagy algoritmus

Módszertan

Szeretnénk ha a hallgatók tartanák a sorrendet:

1. Algoritmus, 2. Forráskód

Nincs elég időnk

Időt spórolunk a generálással

Régi sablonból hibás információk nem maradnak

Könnyen szerkeszthető NSD

Egységes kinézetű specifikáció és algoritmus

Nyelvfüggetlen algoritmus

Page 34: Programozási ismeretek oktatása: kód vagy algoritmus

Módszertan

Vonalvezetőt adunk a lépések betartásához

Meg tudjuk mutatni a kapcsolatot a specifikáció és forráskód között

Meg tudjuk mutatni a kapcsolatot az algoritmus és forráskód között

A szintaktika javításával is tanulható a programozási nyelv

Elektronikus felületet biztosítunk a gyakorláshoz

Page 35: Programozási ismeretek oktatása: kód vagy algoritmus

Módszertan

Segítünk, de

Nem helyettesítjük a

gondolkodást

kódolást

dokumentálást

Page 36: Programozási ismeretek oktatása: kód vagy algoritmus

Módszertan

Módszeres, szisztematikusFolyamat, amit be kell tartani

Élményközpontú és sikerorientáltgyorsan és látható eredmény

kis módosítással futó kód

FelfedeztetőSpecifikáció és függvény paraméterek kapcsolata

Algoritmus és kód összehasonlítása

Page 37: Programozási ismeretek oktatása: kód vagy algoritmus

A jövő

Fejlesztési lehetőségek

MathML beépítése az elő- és utófeltételekhez

Házi feladatokhozKivonat generálás

A4-es PDF

Feladat szöveg, specifikáció és algoritmus

Fejlesztés megkezdése előtt be lehetne adni

Email küldéssel beadás a rendszerből

Automatizált kiértékelés (legalább elő feldolgozás)

Page 38: Programozási ismeretek oktatása: kód vagy algoritmus

Irodalom

I. Nassi, B. Shneiderman: Flowchart techniques for structured programming, ACM SIGPLAN Notices, Volume 8 Issue 8, August 1973, Pages 12 - 26

Dijkstra E.W.: A Discipline of Programming, Prentice-Hall, Englewood Cli_s, 1973.

Szlávi Péter, Zsakó László: Módszeres programozás: Programozási bevezető, 18. Mikrológia

Sz. Csepregi, A. Dezső, T. Gregorics, S. Sike: Automatic Implementation of Service Required by Components, Workshop on Property Verification for Software Components and Services ,PROVECS 2007, http://lina.atlanstic.net/provecs/2007/provecs2007proceedings.pdf

Page 39: Programozási ismeretek oktatása: kód vagy algoritmus

Irodalom

Menyhárt László: Can a language be before "the first programming language"?, Teaching Mathematics and Computer Science, 2011, Volume IX, Issue II, 209-224 ISSN: 1589-7389, http://tmcs.math.klte.hu/Contents/2011-Vol-IX-Issue-II.html

Menyhárt László, Pap Gáborné: Dokumentáció alapú programfejlesztés; INFODIDACT 2012 konferencia, Zamárdi, Magyarország, 2012.11.15-2012.11.16.

Menyhárt László, Pap Gáborné: How can we get our students to think while we help their work too?: Document based development; Proceedings of the 7th International Multi-Conference on Society, Cybernetics and Informatics. Konferencia helye, ideje: Orlando, Amerikai Egyesült Államok, 2013.07.09-2013.07.12. Florida: International Institute of Informatics and Systemics (IIIS), 2013. pp. 97-102. (ISBN:ISBN-13: 978-1-936338-83-2)

Page 40: Programozási ismeretek oktatása: kód vagy algoritmus

Irodalom

Vladimir Averbukh, Mikhail Bakhterev: The analysis of visual parallel programming languages, ACSIJ Advances in Computer Science: an International Journal, Vol.2, Issue3, No. 4,2013, ISSN : 2322-5157

Martin Weise: A Model for Teaching Informatics to German Secondary School Students in English-language Bilingual Education, Proceedings of the 6th International Conference ISSEP 2013; Oldenburg, Germany, February 26–March 2, 2013/Diethelm et al. (Eds.)/ Potsdam: Universitätsverlag Potsdam, 2013/ S.127-137

B. Shneiderman: A short history of structured flowcharts (Nassi-Shneiderman Diagrams), University Maryland, 2003, http://www.cs.umd.edu/hcil/members/bshneiderman/nsd/

Bob Fisch: Structorizer, http://structorizer.fisch.lu/

Molnár Tamás: StukiMania, http://stukimania.hu, 2013

Page 41: Programozási ismeretek oktatása: kód vagy algoritmus

Irodalom

https://157.181.166.134:8181/PFW/index2_HU.jsphttp://xml.inf.elte.hu/2013_14_1/progalap/anyagok/PFW_leiras.pdf

https://docs.google.com/forms/d/1LfhO64yJRFhywHqRBfoJzawK8PBZDizImWkTFnI4HmA/viewform

https://docs.google.com/spreadsheet/viewform?usp=drive_web&formkey=dERsTi1rS1V6OGc3Rzc3cm85YW5KNFE6MA#gid=0

Page 42: Programozási ismeretek oktatása: kód vagy algoritmus

Köszönjük a figyelmet!

Elérhetőség

Menyhárt László Gábor Dr. Pap Gáborné[email protected] [email protected].: +36 1 209-0555 / 8652 , 8469Fax: +36 1 381-2140Cím: 1117. Budapest, Pázmány Péter sétány 1/C. 2.406