avouris teaching python

35
Νίκος Αβούρης hci.ece.upatras.gr/avouris Διδακτική Προγραμματισμού με την Python

Upload: nikolaos-avouris

Post on 19-Mar-2017

478 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Avouris teaching python

Νίκος Αβούρης hci.ece.upatras.gr/avouris

Διδακτική Προγραμματισμού

με την Python

Page 2: Avouris teaching python

Διδασκαλία εισαγωγικού μαθήματος στους υπολογιστές και προγραμματισμό

● Στόχος η εισαγωγή στους υπολογιστές με μια γλώσσα προγραμματισμού ως εργαλείο

● Πρώτο μέρος : Εισαγωγή στην Python● Δεύτερο μέρος : Εισαγωγή στην επιστήμη των

υπολογιστών (αριθμητικά συστήματα, αρχιτεκτονική, λειτουργικά, δίκτυα)

● Ομαδικές εργασίες 6 εβδομάδων με αντικείμενο επίλυση προβλημάτων και υλοποίηση λύσης στην Python

Page 3: Avouris teaching python

Μάθημα: Εισαγωγή στους Υπολογιστές

Μάθημα 1ου εξαμήνου (7 ects)

5 ώρες / εβδομάδα * 13 εβδομάδες

3 ώρες στο αμφιθέατρο + 2 εργαστήριο

250 φοιτητές κάθε χρόνο / 2 ομάδες θ. / 6 ομάδες εργ.

Υλικό μαθήματος: eclass.upatras.gr

Πλατφόρμα διόρθωσης ασκήσεων : astraia.upatras.gr

Επικουρικό προσωπικό: 4 διδάσκοντες

Νίκος Αβούρης, Κυριάκος Σγάρμπας, Βασίλης Παλιουράς, Μιχάλης Κουκιάς

Page 4: Avouris teaching python

Ν. Αβούρης, Κ. Σγάρμπας, Β. Παλιουράς, Μ. Κουκιάς: Εισαγωγή στην επιστήμη των υπολογιστών με τη γλώσσα python (3η έκδοση, Σεπτέμβριος 2016)

3η έκδοση:

Νέα κεφάλαια για Βάσεις δεδομένων (sqlite3), γραφική διεπαφή χρήστη (tkinter), διαδικτυακό προγραμματισμό (urllib),

περισσότερα παραδείγματα

Page 5: Avouris teaching python

Διδακτικοί στόχοι

Ο φοιτητής θα πρέπει να είναι σε θέση:

1. να αντιλαμβάνεται και να περιγράφει τις βασικές αρχές και τον τρόπο λειτουργίας σύγχρονων υπολογιστικών διατάξεων και συστημάτων,

2. να διατυπώνει τρόπους επίλυσης απλών αλγοριθμικών προβλημάτων,

3. να έχει λειτουργική χρήση μιας γλώσσας προγραμματισμού υψηλού επιπέδου (Python),

4. να επιλύσει σύνθετα προβλήματα στο πλαίσιο μιας ομάδας (κατά τη φάση εκπόνησης ομαδικών εργασιών)

Page 6: Avouris teaching python

Ημερολόγιο μαθήματος (13 εβδομάδες)w1 Ορισμοί - κωδικοποίηση πληροφορίας - αριθμητικές εκφράσεις στην Python

w2 Μεταβλητές, βασικές δομές δεδομένων

w3 Δομές ελέγχου, λύνουμε τη δευτεροβάθμια εξίσωση

w4 Ακολουθιακές δομές και δομές επανάληψης - μουσική με τον υπολογιστή

w5 Δομημένος προγραμματισμός - ζωγραφική με την turtle

w6 Αρχεία - σύνδεση με το λειτουργικό σύστημα - φτιάχνουμε ημερολόγια

w7 Αντικειμενοστρεφής προγραμματισμός - παίζουμε χαρτιά

w8 Γραφική διεπαφή χρήστη - φτιάχνουμε ένα παιχνίδι

w9 Ψηφιακή αριθμητική - ακρίβεια πράξεων

w10 Αρχιτεκτονική υπολογιστή - προγραμματιζουμε την pycpu

w11 Λειτουργικά συστήματα - προγραμματισμός διεργασιών

w12 Δίκτυα υπολογιστών – επικοινωνία με TCP/IP

w13 Διαδικτυακός προγραμματισμός – τι καιρό θα κάνει σήμερα;

Ομ

αδ

ικές

ερ

γασ

ίες

Page 7: Avouris teaching python

Τα πλεονεκτήματα της προσέγγισης Python first

● Σύντομος χρόνος για το πρώτο πρόγραμμα● Εύκολη σύνταξη● Δυνατότητα εμβάθυνσης σε επί μέρους

περιοχές προβλημάτων● Μεγάλη κοινότητα υποστήριξης● “πραγματική γλώσσα” που μπορεί να συνεχίσει

να χρησιμοποιείται και να αναπτύσσεται

Page 8: Avouris teaching python

Η κοινότητα της Python

Page 9: Avouris teaching python

Ένα παράδειγμα της διδακτικής προσέγγισης με βάση προβλήματα

1.Εισάγουμε βασικές εντολές της βιβλιοθήκης turtle

2.Ζωγραφίζουμε απλά σχήματα γραμμές, τετράγωνα, τρίγωνα, κλπ

3.Πώς θα ζωγραφίσουμε τυχαίους κύκλους - τρίγωνα;

4.Πώς θα φτιάξουμε τη γραφική παράσταση μιας εξίσωσης; πχ 0.0001*x3+0.015*x2-1.14*x-2.8;

5.Πώς θα φτιάξουμε ένα διαδραστικό πρόγραμμα που ανάλογα με την περιοχή της οθόνης ζωγραφίζει διαφορετικά σχήματα;

Ενότητα Δομημένος προγραμματισμός: ζωγραφίζω με την turtle

Page 10: Avouris teaching python

from turtle import *from math import *

reset()

def draw_axes():.............def f(x):.............def scaled_sin(x):..............

def plot(f, plot_color):..............############################# plot f(x)############################input("Σχεδιάζω την καμπύλη f(x)")draw_axes()plot(f, 'red')############################## plot sin#############################print("Σχεδιάζω την καμπύλη sin(x) με κλίμακα")scale = int(input("κλίμακα = "))#draw_axes()plot(scaled_sin, 'green')input("ok")

Γραφική παράσταση εξίσωσης y=f(x)

Page 11: Avouris teaching python

Αρχιτεκτονική υπολογιστών: Μοντέλο της ΚΜΕ στην Python: PyCPU

# 0000 load address // load D0 with data from MEM[address]# 0001 store address // store D0 to MEM[address]# 0010 add address // D0 = D0 + MEM[address]# 0011 sub address // D0 = D0 - MEM[address] two's complement operation# 0100 loadd data // D0 = immediate data from instruction# 0101 halt# 0110 addd data // D0 = D0 + immediate data from instruction# 0111 subd data // D0 = D0 - immediate data from instruction# 1000 jmp address // Unconditional jump# 1001 jmp_N address // jump if last generated ALU result is negative# 1010 jmp_Z address // jump if zero# 1011 jmp_O address // jump if Overflow# 1100 jmp_C address // jump if Carry

Ο επεξεργαστης περιλαμβάνει: καταχωρητή δεδομένων γενικού σκοπού (συσσωρευτή), λέξεις δεδομένων 16 bit και διευθύνσεις 12 bit. Συνεπώς μπορεί να χειριστεί μνήμη των 4096 λέξεων. Οι εντολές του επεξεργαστή αυτού είναι λέξεις των 16 bit, οργανωμένες σε δύο πεδία, ένα των τεσσάρων δυαδικών ψηφίων που είναι το opcode και ένα πεδίο των 12 bit τα ( διεύθυνση δεδομένων) ή είναι απευθείας δεδομένα (immediate addressing).

PyCPU έχει δημιουργηθεί από Σ. Καξίρα κ.α.

Page 12: Avouris teaching python

Προβλήματα της Python

Page 13: Avouris teaching python

Πολλαπλά notations : τελεστές

>>> a = [1,2,3]

>>> a = a + [4,5,6]

>>> a

[1, 2, 3, 4, 5, 6]

Page 14: Avouris teaching python

Πολλαπλά notations : μέθοδοι

>>> a = [1,2,3]

>>> a.extend([4,5,6])

>>> a

[1, 2, 3, 4, 5, 6]

Page 15: Avouris teaching python

Πολλαπλά notations : συναρτήσεις

>>> a =[6,5,4,3]

>>> b=sorted(a)

>>> b

[3, 4, 5, 6]

Page 16: Avouris teaching python

>>> L=[1,2,3,4]

>>> M=L

>>> print (L,M)

[1, 2, 3, 4]

>>> M.reverse()

>>> print (L,M)

[4, 3, 2, 1] [4, 3, 2, 1]

οι μεταβλητές της Python είναι ετικέτες σε αντικείμενα

Page 17: Avouris teaching python

Tι συνέβη;

Με χρήση: http://pythontutor.com/visualize.html#mode=display

Page 18: Avouris teaching python

Eκχώρηση τιμής σε μεταβλητή /β

>>> L=[1,2,3,4]

>>> M=L[:]

>>> print L,M

[1, 2, 3, 4] [1, 2, 3, 4]

>>> M.reverse()

>>> print L,M

[1, 2, 3, 4] [4, 3, 2, 1]

Page 19: Avouris teaching python

a = 5

b = a

a += 1

print (a,b)

Τι γίνεται στην παρακάτω περίπτωση:

Page 20: Avouris teaching python

Είναι για παιδιά αυτή η γλώσσα;

Python for Kids: A Playful Introduction to Programming by Jason R. Briggs

Page 21: Avouris teaching python

ομαδικές εργασίες

Page 22: Avouris teaching python

●Εργασία 6 εβδομάδων●Ομάδες 4-5 φοιτητών●Παραδοτέο:

●Έκθεση●Παρουσίαση●Κώδικας Python●Οδηγίες εγκατάστασης●Εκτελέσιμο αρχείο (αν είναι δυνατόν)

Page 23: Avouris teaching python

mywindmap

Χρησιμοποιείστε το openweathermap api για να παρουσιασετε σε πραγματικό χρόνο την κατάσταση των Ελληνικών θαλασσών

Φοιτητική εργασία 2015-2016 / ομάδα Ο7

Βιβλιοθήκες:

urllib2

Json

Tkinter

Load

Page 24: Avouris teaching python

My referencesΝα κατασκευάσετε μια εφαρμογή που εισάγει τα βαθμολόγια του progress.upatras.gr σε μιά βάση δεδομένων και συντάσσει συστατικές επιστολές

(εργασία Ο22/2015-16, βιβλιοθήκες: Βιβλιοθήκες: Tkinter, tkFileDialog, csv, sqlite3, os, operator

Page 25: Avouris teaching python

mycitationsΝα γράψετε εφαρμογή που ανακτά τους βιβλιομετρικούς δείκτες των καθηγητών του Τμήματος από το google.scholar.com και δημιουργεί στατιστικούς πίνακες και διαγράμματα

● Ομάδα Ο27/2015-2016 ( Βιβλιοθήκες: urllib2, datetime beautifulsoup4(bs4), Tkinter, matplotlib, numpy

Page 26: Avouris teaching python

Να ξανασχεδιάσετε την Ιστοσελίδα του Τμήματος με το django web framework

Ομάδα 32/ 2015-2016 / django web framework

Page 27: Avouris teaching python

Επικοινωνία διεργασιών Να δημιουργήσετε μια κατανεμημένη εφαρμογή με χρήστη της Pyro4 (ομάδα 09/2014-2015)

Page 28: Avouris teaching python

mydrawΝα δημιουργήσετε μια εφαρμογή ελεύθερης σχεδίασης (Ομάδα 38/ 2015-16 - βιβλιοθήκη tkinter )

Page 29: Avouris teaching python

Το παιχνίδι με τα μπαλόνιαΝα κατασκευάσετε το “παιχνίδι με τα μπαλόνια” και να υπολογίσετε τις παραμέτρους του νόμου του Fitts για τη δεικτική σου συσκευή

Ομάδα 58/2015-16

(Tkinter, winsound)

Page 30: Avouris teaching python

Εφαρμογές multiprocessing

Ομάδα 55/2015-16, βιβλιοθήκη mulitprocessing, pool, map,lock, queue, pipe

Page 31: Avouris teaching python

Παίζουμε “ξερή” με pygameΟμάδα 13/2015-2016

Page 32: Avouris teaching python

Βιβλιοθήκες για ομαδικές εργασίες● Pygame (παιχνίδια 2D)● Tkinter (γραφική διεπαφή)● WxPython ( γραφική διεπαφή)● sqlite3 (βάσεις δεδομένων)● Multiprocessing (πολυ-προγραμματισμός)● BeautifulSoup (web scraping)● urlib2 (http client)● pydub (επεξεργασία ήχου)● Vpython (3D γραφικά)

κλπ

Page 33: Avouris teaching python

συμπεράσματα

● Η python μας βοηθάει να ακολουθήσουμε μια problem-first προσέγγιση στη μάθηση

● Υποστηρίζει τη δημιουργικότητα και την συνεργατικότητα

● Χρήσιμο εργαλείο για hands-on εμβάθυνση σε έννοιες της επιστήμης των υπολογιστών

● Η συνθετότητα της γλώσσας πρέπει να κρυφτεί για να αποφευχθεί σύγχυση στους φοιτητές

Page 34: Avouris teaching python

Κάποιες πηγές για την παιδαγωγική προσέγγιση

● Avouris N., Kaxiras S., Koufopavlou O., Sgarbas K., Stathopoulou P., (2010). Teaching Introduction to Computing through a project-based collaborative learning approach, Proc. PCI 2010, IEEE Publ., Tripolis, September 2010.

● Resnick, M., Myers, B., Nakakoji, K., Shneiderman, B., Pausch, R., Selker, T., & Eisenberg, M. (2005). Design principles for tools to support creative thinking

Page 35: Avouris teaching python

Ευχαριστώ

[Διδακτική Προγραμματισμού με την Python]

Ν Αβούρης

http://hci.ece.upatras.gr/avouris

Ανοικτό μάθημα:https://eclass.upatras.gr/courses/EE759/

Βιβλίο:

http://www.politeianet.gr/books/9789605301545-abouris-nikolaos-panepistimio-patron-eisagogi-stous-upologistes-me-tin-glossa-python-220284