progintro @ dit
Εισαγωγή στον Προγραμματισμό
Πρόγραμμα
- Διαλέξεις: Δευτέρα και Παρασκευή 09:00-11:00 @ Αμφιθέατρο
- Ώρες Γραφείου:
- Δευτέρα 11:00-13:00 @ Α40
- Παρασκευή 11:00-13:00 @ Α3
- Πρόσθεσε το πρόγραμμα του μαθήματος στο google calendar εδώ
Συμμετοχή
Για την ενεργή συμμετοχή σου στο μάθημα, θα χρειαστείς:
- Λογαριασμό Gmail - άνοιξε εδώ αν δεν έχεις ήδη.
- Λογαριασμό GitHub - άνοιξε εδώ αν δεν έχεις ήδη.
Στην συνέχεια συμπλήρωσε τα στοιχεία σου σε αυτήν την φόρμα - απαιτεί λογαριασμό Gmail.
Επικοινωνία
Ερωτήσεις για διαδικαστικά, το μάθημα και τις ασκήσεις αποκλειστικά στο Piazza - απαιτεί di.uoa.gr email. Δεν έχεις ακόμα di.uoa.gr email; Βεβαιώσου ότι συμπλήρωσες την φόρμα στην Συμμετοχή παραπάνω και θα σου στείλουμε πρόσκληση
Φυλλάδια Εργαστηρίων
Υλικό Μαθήματος
-
Διαλέξεις
Ημερομηνία |
Περιεχόμενο Μαθήματος |
Αρχείο |
02/10 |
Διάλεξη 0: Καλημέρα Κόσμε! |
pdf |
06/10 |
Διάλεξη 1: Γραμμή Εντολών, Πρόγραμματα και Μεταγλώττιση |
pdf |
13/10 |
Διάλεξη 2: Συναρτήσεις και Version Control |
pdf |
18/10 |
Διάλεξη 3: Μνήμη και Μεταβλητές |
pdf |
20/10 |
Διάλεξη 4: Τελεστές |
pdf |
23/10 |
Διάλεξη 5: Εντολές και Ροή Ελέγχου |
pdf |
27/10 |
Διάλεξη 6: Επίλυση Προβλημάτων |
pdf |
30/10 |
Διάλεξη 7: Δομές Ελέγχου #2 |
pdf |
03/11 |
Διάλεξη 8: Πίνακες |
pdf |
06/11 |
Διάλεξη 9: Δείκτες |
pdf |
10/11 |
Διάλεξη 10: Πίνακες και Δείκτες |
pdf |
13/11 |
Διάλεξη 11: Δεδομένα Εισόδου |
pdf |
13/11 |
Guest Lecture on Collatz |
pdf |
13/11 |
Guest Lecture on Forums Q&A |
pdf |
20/11 |
Διάλεξη 12: Μνήμη |
pdf |
22/11 |
Διάλεξη 13: Επίλυση Προβλημάτων |
|
24/11 |
Διάλεξη 14: Πολυπλοκότητα και Προεπεξεργαστής |
pdf |
27/11 |
Διάλεξη 15: Εμβέλεια, Μνήμη και Συμβολοσειρές |
pdf |
01/12 |
Διάλεξη 16: Δεδομένα Εισόδου #2 - Αρχεία |
pdf |
04/12 |
Διάλεξη 17: Δυαδική Αναζήτηση και Ταξινόμηση |
pdf |
08/12 |
Διάλεξη 18: Ταξινόμηση #2 |
pdf |
11/12 |
Διάλεξη 19: Δομές |
pdf |
15/12 |
Διάλεξη 20: Προχωρημένες Δομές |
pdf |
18/12 |
Διάλεξη 21: Λίστες |
pdf |
22/12 |
Διάλεξη 22: Δέντρα |
pdf |
08/01 |
Διάλεξη 23: Προχωρημένα Θέματα |
pdf |
- Προηγούμενα έτη
- Σημειώσεις από τον καθηγητή Παναγιώτη Σταματόπουλο
Εργασίες
- Εργασία 0. Προθεσμία: 08/11/2023, 23:59.
- Εργασία 1. Προθεσμία: 06/12/2023, 23:59.
- Εργασία 2. Προθεσμία: 14/01/2024, 23:59.
- Εργασία 3. Προθεσμία: 13/02/2024, 23:59.
Πρώτες Θέσεις σε Διαγωνισμούς (Αλφαβητική Σειρά)
- Γεώργιος Κρανιδιώτης (zoomba)
- Γεώργιος Σιαφαρίκας (zoomba)
- Δημήτριος Αλεξανδρής (collatz)
- Δημήτριος Νικολαΐδης (coop, zoomba)
- Δημοσθένης Θεοδοσίου (zoomba)
- Ευστάθιος Κωνσταντίνου (zoomba)
- Ιωάννης-Παναγιώτης Μπαλωμένος (coop)
- Λάζαρος Χαβατζόγλου (coop)
- Νικόλαος Τσούλος (coop, zoomba)
Άλλα Project

Τμήματα Εργαστηρίων
Γραφτείτε στο τμήμα εργαστηρίου που ταιριάζει στο πρόγραμμά σας μέσω eclass - απαιτεί di.uoa.gr email. Δεν έχεις ακόμα di.uoa.gr email; Βεβαιώσου ότι συμπλήρωσες την φόρμα στην Συμμετοχή παραπάνω και θα προσπαθήσουμε να σε συμπεριλάβουμε στην λίστα.
Το εργαστήριο είναι υποχρεωτικό για τους πρωτοετείς. Το ακόλουθο πρόγραμμα θα ξεκινήσει την Δευτέρα 09/10/2023:
- Δευτέρα 13:00-15:00 @ Εργαστήριο Windows PC1, υπεύθυνος: Μίλτος Κυριακάκος, βοηθοί: Έλενα Φίλη, Γιώργος Νικολαΐδης, Νιόβη Κουμπαράκη, Γεώργιος-Αλέξανδρος Κώστας
- Δευτέρα 15:00-17:00 @ Εργαστήριο Windows PC1, υπεύθυνος: Μίλτος Κυριακάκος, βοηθοί: Δημήτρης Σκόνδρας-Μέξης, Ζωή Κουκουβέ
- Δευτέρα 17:00-19:00 @ Εργαστήριο Windows PC1, υπεύθυνός: Γιάννης Χαμόδρακας, βοηθοί: Δημήτρης-Στέφανος Πορίχης, Παύλος Νταής
- Τετάρτη 15:00-17:00 @ Εργαστήριο Windows PC1, υπεύθυνη: Άννα Καββαδά, βοηθοί: Γιώργος Νικολάου, Ευάγγελος Αργυρόπουλος
- Τετάρτη 17:00-19:00 @ Εργαστήριο Windows PC1, υπεύθυνος: Γιάννης Χαμόδρακας, βοηθοί: Ηλίας Κωνσταντινίδης, Κωνσταντίνος Λεοντιάδης
- Παρασκευή 13:00-15:00 @ Εργαστήριο Windows PC1, υπεύθυνος: Νίκος Περδικοπάνης, βοηθοί: Νικόλαος Δάλκος, Απόστολος-Παναγιώτης Γραμματόπουλος, Βαγγέλης Κόκκινος, Αθανασία Κανελλοπούλου
- Παρασκευή 15:00-17:00 @ Εργαστήριο Windows PC1, υπεύθυνος: Στέφανος Σταματης, βοηθοί: Κωνσταντίνος Χούσος, Αναστάσιος-Φαίδων Σεϊτανίδης, Ιωάννης Ξηρός, Ζήσιμος Βακράς, Ιωάννης Βογιατζής, Γεώργιος-Αλέξανδρος Κώστας
- Παρασκευή 17:00-19:00 @ Εργαστήριο Windows PC1, υπεύθυνος: Νίκος Περδικοπάνης, βοηθοί: Βύρων-Γεώργιος Ανεμογιάννης
- Τμήμα Β+: Τρίτη 18:00-20:00 @ Εργαστήριο Linux, υπεύθυνος: Δημήτρης Βερλέκης, βοηθοί: Κωνσταντίνος Κορδολαίμης, Κυριακή Καραπλιού
Συγγράμματα
- C: Από τη Θεωρία στην Εφαρμογή, Γ. Σ. Τσελίκης - Ν. Δ. Τσελίκας [Link]
- Η Γλώσσα C Σε Βάθος, Νίκος Μ. Χατζηγιαννάκης [Link]
- Εισαγωγή στον Προγραμματισμό με την C, Μισυρλής ΝΙκόλαος [Link]
- Η Γλώσσα Προγραμματισμού C, Brian W. Kerninghan, Dennis M. Ritchie [Link]
- Αρχές και τεχνικές προγραμματισμού με τη γλώσσα C, Hanly Jeri R., Koffman Elliot B. (Συγγρ.) - Καρα
Βράκας Δημήτρης, Κυριαζής Δημοσθένης (Επιμ.) [Link]
- Μαθαίνετε εύκολα C, Καρολίδης Δημήτριος Α. [Link]
Άλλοι Σύνδεσμοι
Βαθμολογία
- Πρωτοετείς: 50% τελικό διαγώνισμα + 30% ασκήσεις + 20% εργαστήριο
- Υπόλοιπα έτη: 70% τελικό διαγώνισμα + 30% ασκήσεις
Η Ομάδα του Μαθήματος
Διδάσκων
- Θανάσης Αυγερινός (thanassis)
Υπεύθυνοι Εργαστηρίων
- Γιάννης Χαμόδρακας (ihamod)
- Μίλτος Κυριακάκος (miltos)
- Νίκος Περδικοπάνης (nikosp)
Ειδικοί (Special Ops) Συνεργάτες
Μεταπτυχιακοί Συνεργάτες
- Άννα Καββαδά (cs2210009)
- Δημήτρης Βερλέκης (cs22200007)
Προπτυχιακοί Συνεργάτες
- Βύρων-Γεώργιος Ανεμογιάννης (sdi2000008)
- Ζήσιμος Βακράς (sdi2200014)
- Ιωάννης Ξηρός (sdi2200122)
- Ιωάννης Βογιατζής (sdi2200021)
- Γεώργιος-Αλέξανδρος Κώστας (sdi2100080)
- Ευάγγελος Αργυρόπουλος (sdi2200010)
- Κωνσταντίνος Λεοντιάδης (sdi2100085)
- Βαγγέλης Κόκκινος (sdi2000084)
- Κωνσταντίνος Χούσος (sdi2000215)
- Γεώργιος Νικολάου (sdi2000154)
- Ελένη Φίλη (sdi2100203)
- Αναστάσιος-Φαίδων Σεϊτανίδης (sdi2000179)
- Νικόλαος-Παναγιώτης Δάλκος (sdi2000043)
- Κωνσταντίνος Κορδολαίμης (sdi2000091)
- Δημήτρης Σκόνδρας-Μέξης (sdi2200161)
- Νιόβη Κουμπαράκη (sdi2100072)
- Απόστολος-Παναγιώτης Γραμματόπουλος (sdi2000041)
- Ζωή Κουκουβέ (sdi2000097)
- Γεώργιος Νικολαΐδης (sdi2100118)
- Αθανασία Κανελλοπούλου (sdi2000065)
- Ηλίας Κωνσταντινίδης (sdi2000109)
- Δημήτρης-Στέφανος Πορίχης (sdi2100159)
- Παύλος Νταής (sdi2100122)
- Κυριακή Καραπλιού (sdi2000069)
Ευχαριστίες
Θερμές ευχαριστίες στον Παναγιώτη Σταματόπουλο και τον Στέφανο Σταμάτη χωρίς τους οποίους το μάθημα θα ήταν αδύνατο να στηθεί.
Βιβλιοθήκη Προγραμμάτων
- Hello World (printf)
/* File: helloworld.c */
#include <stdio.h>
int main() {
printf("Hello world\n");
return 0;
}
- Υπολογισμός βαθμολογίας (argc, argv)
#include <stdio.h>
#include <stdlib.h>
// Compute grades using the class formula
int grade(int final_exam, int homework, int lab) {
return final_exam * 50 / 100 + homework * 30 / 100 + lab * 20 / 100;
}
int main(int argc, char **argv) {
if (argc != 4) {
printf("Program needs to be called as `./prog final_exam homework lab`\n");
return 1;
}
int final_exam = atoi(argv[1]);
int homework = atoi(argv[2]);
int lab = atoi(argv[3]);
printf("Grade: %d\n", grade(final_exam, homework, lab));
return 0;
}
- Παραγοντικό/Factorial (αναδρομή/recursion)
#include <stdio.h>
#include <stdlib.h>
// Compute the factorial of a number using the recursive
// formula.
int factorial(int number) {
if (number == 0) {
return 1;
} else {
return number * factorial(number - 1);
}
}
int main(int argc, char **argv) {
if (argc != 2) {
printf("Program needs to be called as `./prog number`\n");
return 1;
}
int number = atoi(argv[1]);
printf("%d! = %d\n", number, factorial(number));
return 0;
}