Στο πρώτο τμήμα (4 εβδομάδες) θα γίνει μια επισκόπηση της ιστορίας του Διαδικτύου, του πρωτοκόλλου HTTP, καθώς και θεμάτων διαδικτυακής ασφάλειας. Οι φοιτητές θα πρέπει να εξοικειωθούν με τη χρήση front-end τεχνολογιών συγκεκριμένα με τη γλώσσα σήμανσης HTML5, καθώς και τη γλώσσα φύλλων στυλ CSS3. Έπειτα θα διδαχτεί η γλώσσα προγραμματισμού JavaScript, που αποτελεί και την κύρια γλώσσα αλληλεπίδρασης με τους φυλλομετρητές (web browsers). Στη συνέχεια το μάθημα θα ασχοληθεί με ζητήματα που αφορούν την υλοποίηση των λειτουργιών εισόδου και εξόδου επί της διαδικτυακής πλατφόρμας (π.χ. φόρμες) και θα αναλυθεί η δημιουργία ασύγχρονων διαδικτυακών εφαρμογών μέσω AJAX. Τέλος θα περιγράφουν ευρέως χρησιμοποιούμενες front-end βιβλιοθήκες (π.χ. jQuery, bootstrap) μέθοδοι για μεταφορά δεδομένων (JSON), αλλά και χρήση βιβλιοθηκών για χάρτες, παιχνίδια κλπ.
Το δεύτερο μέρος του μαθήματος (4.5 εβδομάδες) θα επικεντρωθεί κυρίως στην πλευρά του διακομιστή (back-end) και στον τρόπο επικοινωνίας του με το front-end κομμάτι. Συγκεκριμένα θα δοθεί έμφαση στις Java EE τεχνολογίες των Servlets και JSP (με μικρή αναφορά σε άλλες τεχνολογίες, όπως η Node.js). Θα γίνει επίσης αναφορά σε μεθοδολογίες και τεχνολογίες για τη διαχείριση συνεδριών καθώς και για την ευέλικτη και γρήγορη ανάπτυξη εφαρμογών (π.χ. Cookies, Sessions). Θα γίνει και μια εισαγωγή σε κάποιο από τα frameworks για backend όπως το Node.js ενώ θα παρουσιαστούν και κάποια security issues.
Στο τελευταίο μέρος του μαθήματος (4.5 εβδομάδες) θα διδαχθούν διαδικτυακές υπηρεσίες με έμφαση στην αρχιτεκτονική REST, στην GRAPHQL ενώ θα γίνουν διαλέξεις για τον προγραμματισμό διαδικτυακών εφαρμογών για Android καθώς και σε τεχνολογίες XML και RDF.
Μαθησιακά Αποτελέσματα:
Η σχεδόν απανταχούσα δυνατότητα σύνδεσης στο διαδίκτυο και χρήσης φυλλομετρητών του Ιστού έχει καταστήσει επωφελή (αν όχι απαραίτητη) τη χρήση πληροφοριακών συστημάτων μέσω του διαδικτύου. H διαφορά των διαδικτυακών εφαρμογών σε σχέση με τις παραδοσιακές εφαρμογές βρίσκεται στο γεγονός ότι η πλατφόρμα εγκατάστασης και λειτουργίας είναι το διαδίκτυο. Το διαδίκτυο ως πλατφόρμα υποδομής έχει ιδιαίτερα χαρακτηριστικά τα οποία καθιστούν και την ανάπτυξη διαδικτυακών εφαρμογών διαφορετική και ιδιαίτερη. Για παράδειγμα, οι λειτουργίες εισόδου και εξόδου του συστήματος θα πρέπει να υποστηριχθούν μέσω των δυνατοτήτων και των τεχνολογιών που προσφέρουν οι φυλλομετρητές (front-end), ενώ η επιχειρησιακή λογική του συστήματος (που ενδεχομένως να είναι ήδη υλοποιημένη), πρέπει να ενθυλακωθεί ώστε να είναι εκτελέσιμη μέσω των διακομιστών του Ιστού και του state-less πρωτοκόλλου HTTP (back-end). Γενικά, ο διαδικτυακός προγραμματισμός ασχολείται με την ανάπτυξη εφαρμογών στο ανώτερο επίπεδο του TCP/IP πρωτοκόλλου (application layer).
Το μάθημα αυτό αποτελεί μια εισαγωγή στις τεχνολογίες που είναι απαραίτητες για την ανάπτυξη διαδικτυακών εφαρμογών και χωρίζεται σε τρία τμήματα.
Στόχοι Μαθήματος
Κατανόηση της σημασίας των διαδικτυακών εφαρμογών στις μέρες μας
Κατανόηση του ρόλου του διαδικτύου σαν πλατφόρμα ανάπτυξης λογισμικού ανεξαρτήτου πλατφόρμας
Κατανόηση και γνώση των διαφορών ανάμεσα στο λογισμικό για το διαδίκτυο και το συμβατικό λογισμικό
Εξοικείωση με τις τεχνολογίες λογισμικού στο διαδίκτυο τόσο από την πλευρά του πελάτη (φυλλομετρητές, Javascript, JQuery, JSON, HTML, CSS) όσο και από την πλευρά του διακομιστή (Servlets, JSP)
Απόκτηση ικανότητας ανάπτυξης μιας ολοκληρωμένης και σύνθετης ιστο-εφαρμογής μέσω ενός καθημερινού σεναρίου χρήσης που θα αξιοποιεί στο έπακρο τις δυνατότητες και των δύο άκρων (πελάτη και διακομιστή) και του πρωτοκόλλου HTTP με τη χρήση βάσεων δεδομένων για ανάκτηση/αποθήκευση δεδομένων
Εξοικείωση με νέες τεχνολογίες όπως ANDROID, REST, GRAPHQL και κατανόηση χρήσης τους σε πραγματικά προβλήματα της καθημερινότητας.
Κατανόηση του ρόλου του διαδικτύου σαν πλατφόρμα ανάπτυξης λογισμικού ανεξαρτήτου πλατφόρμας
Κατανόηση και γνώση των διαφορών ανάμεσα στο λογισμικό για το διαδίκτυο και το συμβατικό λογισμικό
Εξοικείωση με τις τεχνολογίες λογισμικού στο διαδίκτυο τόσο από την πλευρά του πελάτη (φυλλομετρητές, Javascript) όσο και από την πλευρά του διακομιστή (Servlets, JSP)
Απόκτηση ικανότητας ανάπτυξης μιας ολοκληρωμένης και σύνθετης ιστο-εφαρμογής που αξιοποιεί στο έπακρο τις δυνατότητες και των δύο άκρων (πελάτη και διακομιστή) και του πρωτοκόλλου HTTP.
Αξιολόγηση:
Λεπτομέρειες για την βαθμολόγηση του μαθήματος περιέχονται στην ιστοσελίδα του μαθήματος
Τα μαθήματα του Τμήματος Επιστήμης Υπολογιστών κωδικοποιούνται με τα γράμματα "ΗΥ" και με τρία ψηφία. Το πρώτο ψηφίο δηλώνει το έτος κατά το οποίο συνήθως παρακολουθείται το μάθημα, το δε δεύτερο την επιστημονική περιοχή του μαθήματος:
Πρώτο Ψηφίο
Κανονικό Έτος Παρακολούθησης
1,2,3,4
Πρώτο, Δεύτερο, Τρίτο, Τέταρτο
5,6
Μεταπτυχιακά μαθήματα
7,8,9
Ειδικά θέματα
Δεύτερο Ψηφίο
Επιστημονική Περιοχή
0
Εισαγωγικά - Γενικά
1
Υπόβαθρο (Μαθηματικά, Φυσική)
2
Υλικό και Συστήματα Υπολογιστών
3
Τηλεπικοινωνίες και Δίκτυα
4,5
Συστήματα Λογισμικού και Εφαρμογές
6
Πληροφοριακά Συστήματα
7
Υπολογιστική Όραση και Ρομποτική
8
Αλγοριθμική και Θεωρία Υπολογισμού
9
Ειδικές Εργασίες
Ακολουθούν συνοπτικοί κατάλογοι κατά κατηγορίες των μαθημάτων του προγράμματος βασικών σπουδών του Τμήματος Επιστήμης Υπολογιστών του Πανεπιστημίου Κρήτης. Μαθήματα των οποίων οι κωδικοί αρχίζουν με "ΜΕΜ" ή "ΦΥΣ" διδάσκονται από το Τμήμα Μαθηματικών Εφαρμοσμένων Μαθηματικών ή το Φυσικό αντιστοίχως και αναφέρονται με τους οικείους κωδικούς. Τα προαπαιτούμενα που αναφέρονται μέσα σε παρενθέσεις συνιστώνται έντονα, αλλά δεν είναι υποχρεωτικά.