2. Διδασκαλία εισαγωγικού μαθήματος
στους υπολογιστές και προγραμματισμό
● Στόχος η εισαγωγή στους υπολογιστές με μια
γλώσσα προγραμματισμού ως εργαλείο
● Πρώτο μέρος : Εισαγωγή στην Python
● Δεύτερο μέρος : Εισαγωγή στην επιστήμη των
υπολογιστών (αριθμητικά συστήματα,
αρχιτεκτονική, λειτουργικά, δίκτυα)
● Ομαδικές εργασίες 6 εβδομάδων με αντικείμενο
επίλυση προβλημάτων και υλοποίηση λύσης
στην Python
3. Μάθημα: Εισαγωγή στους Υπολογιστές
Μάθημα 1ου εξαμήνου (7 ects)
5 ώρες / εβδομάδα * 13 εβδομάδες
3 ώρες στο αμφιθέατρο + 2 εργαστήριο
250 φοιτητές κάθε χρόνο / 2 ομάδες θ. / 6 ομάδες εργ.
Υλικό μαθήματος: eclass.upatras.gr
Πλατφόρμα διόρθωσης ασκήσεων : astraia.upatras.gr
Επικουρικό προσωπικό: 4 διδάσκοντες
Νίκος Αβούρης, Κυριάκος Σγάρμπας,
Βασίλης Παλιουράς, Μιχάλης Κουκιάς
4. Ν. Αβούρης, Κ. Σγάρμπας, Β. Παλιουράς, Μ. Κουκιάς:
Εισαγωγή στην επιστήμη των υπολογιστών με τη
γλώσσα python (3η έκδοση, Σεπτέμβριος 2016)
3η έκδοση:
Νέα κεφάλαια για Βάσεις
δεδομένων (sqlite3),
γραφική διεπαφή χρήστη
(tkinter), διαδικτυακό
προγραμματισμό (urllib),
περισσότερα
παραδείγματα
5. Διδακτικοί στόχοι
Ο φοιτητής θα πρέπει να είναι σε θέση:
1. να αντιλαμβάνεται και να περιγράφει τις βασικές
αρχές και τον τρόπο λειτουργίας σύγχρονων
υπολογιστικών διατάξεων και συστημάτων,
2. να διατυπώνει τρόπους επίλυσης απλών
αλγοριθμικών προβλημάτων,
3. να έχει λειτουργική χρήση μιας γλώσσας
προγραμματισμού υψηλού επιπέδου (Python),
4. να επιλύσει σύνθετα προβλήματα στο πλαίσιο μιας
ομάδας (κατά τη φάση εκπόνησης ομαδικών εργασιών)
6. Ημερολόγιο μαθήματος (13 εβδομάδες)
w1 Ορισμοί - κωδικοποίηση πληροφορίας - αριθμητικές εκφράσεις στην Python
w2 Μεταβλητές, βασικές δομές δεδομένων
w3 Δομές ελέγχου, λύνουμε τη δευτεροβάθμια εξίσωση
w4 Ακολουθιακές δομές και δομές επανάληψης - μουσική με τον υπολογιστή
w5 Δομημένος προγραμματισμός - ζωγραφική με την turtle
w6 Αρχεία - σύνδεση με το λειτουργικό σύστημα - φτιάχνουμε ημερολόγια
w7 Αντικειμενοστρεφής προγραμματισμός - παίζουμε χαρτιά
w8 Γραφική διεπαφή χρήστη - φτιάχνουμε ένα παιχνίδι
w9 Ψηφιακή αριθμητική - ακρίβεια πράξεων
w10 Αρχιτεκτονική υπολογιστή - προγραμματιζουμε την pycpu
w11 Λειτουργικά συστήματα - προγραμματισμός διεργασιών
w12 Δίκτυα υπολογιστών – επικοινωνία με TCP/IP
w13 Διαδικτυακός προγραμματισμός – τι καιρό θα κάνει σήμερα;
Ομαδικέςεργασίες
7. Τα πλεονεκτήματα της προσέγγισης
Python first
● Σύντομος χρόνος για το πρώτο πρόγραμμα
● Εύκολη σύνταξη
● Δυνατότητα εμβάθυνσης σε επί μέρους
περιοχές προβλημάτων
● Μεγάλη κοινότητα υποστήριξης
● “πραγματική γλώσσα” που μπορεί να συνεχίσει
να χρησιμοποιείται και να αναπτύσσεται
9. Ένα παράδειγμα της διδακτικής προσέγγισης με βάση προβλήματα
1.Εισάγουμε βασικές εντολές της βιβλιοθήκης turtle
2.Ζωγραφίζουμε απλά σχήματα γραμμές,
τετράγωνα, τρίγωνα, κλπ
3.Πώς θα ζωγραφίσουμε τυχαίους κύκλους -
τρίγωνα;
4.Πώς θα φτιάξουμε τη γραφική παράσταση μιας
εξίσωσης; πχ 0.0001*x3+0.015*x2-1.14*x-2.8;
5.Πώς θα φτιάξουμε ένα διαδραστικό πρόγραμμα
που ανάλογα με την περιοχή της οθόνης
ζωγραφίζει διαφορετικά σχήματα;
Ενότητα Δομημένος προγραμματισμός:
ζωγραφίζω με την turtle
10. 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)
11. Αρχιτεκτονική υπολογιστών: Μοντέλο της
ΚΜΕ στην 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 έχει δημιουργηθεί από Σ. Καξίρα κ.α.
23. mywindmap
Χρησιμοποιείστε το
openweathermap api για
να παρουσιασετε σε
πραγματικό χρόνο την
κατάσταση των
Ελληνικών θαλασσών
Φοιτητική εργασία 2015-
2016 / ομάδα Ο7
Βιβλιοθήκες:
urllib2
Json
Tkinter
Load
24. My references
Να κατασκευάσετε μια εφαρμογή που εισάγει τα
βαθμολόγια του progress.upatras.gr σε μιά βάση
δεδομένων και συντάσσει συστατικές επιστολές
(εργασία Ο22/2015-16, βιβλιοθήκες: Βιβλιοθήκες:
Tkinter, tkFileDialog, csv, sqlite3, os, operator
25. mycitations
Να γράψετε εφαρμογή που ανακτά τους βιβλιομετρικούς δείκτες
των καθηγητών του Τμήματος από το google.scholar.com και
δημιουργεί στατιστικούς πίνακες και διαγράμματα
● Ομάδα Ο27/2015-2016 ( Βιβλιοθήκες: urllib2, datetime
beautifulsoup4(bs4), Tkinter, matplotlib, numpy
26. Να ξανασχεδιάσετε την Ιστοσελίδα του
Τμήματος με το django web framework
Ομάδα 32/ 2015-2016 / django web framework
29. Το παιχνίδι με τα μπαλόνια
Να κατασκευάσετε το “παιχνίδι με τα μπαλόνια” και
να υπολογίσετε τις παραμέτρους του νόμου του
Fitts για τη δεικτική σου συσκευή
Ομάδα 58/2015-16
(Tkinter, winsound)
33. συμπεράσματα
● Η python μας βοηθάει να ακολουθήσουμε μια
problem-first προσέγγιση στη μάθηση
● Υποστηρίζει τη δημιουργικότητα και την
συνεργατικότητα
● Χρήσιμο εργαλείο για hands-on εμβάθυνση σε
έννοιες της επιστήμης των υπολογιστών
● Η συνθετότητα της γλώσσας πρέπει να κρυφτεί
για να αποφευχθεί σύγχυση στους φοιτητές
34. Κάποιες πηγές για την παιδαγωγική
προσέγγιση
● 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
35. Ευχαριστώ
[Διδακτική Προγραμματισμού με την
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