Ελεύθερος χρόνος --- Αξιόλογα βιβλία

Ξεκίνησε από Loukritia, 18 Απρ 2010, 11:20:43 ΜΜ

« προηγούμενο - επόμενο »

gpapargi

Μια που σε βρήκαμε...  :) τι μαθηματικά χρειάζονται για να έχει κάποιος υπόβαθρο να διαβάσει θεωρία παιγνίων χωρίς κουσούρι; (όταν λέω χωρίς κουσούρι εννοώ την ώρα που διαβάζει θεωρία παιγνίων να διαβάζει θεωρία παιγνίων και όχι να ανατρέχει σε μαθηματικά βιβλία για να καλύψει κενά). Θέλει πχ εύρεση ακροτάτων σε συναρτήσεις πολλών μεταβλητών; Θέλει πιθανότητες; Θέλει μερικές διαφορικές;
Πχ έτσι όπως έβλεπα τον Dawkins να μιλάει για σημεία σταθερής ισορροπίας (και δυνάμεις επαναφοράς σε περίπτωση εκτροπής από αυτά) και σημεία ασταθούς ισορροπίας υποπτεύθηκα ότι μάλλον πρέπει να έχει κάπου ελαχιστοποίηση συναρτήσεων σε 3 διαστάσεις.

sstergou

Για όποιον ενδιαφέρεται υπάρχει και αυτό το μάθημα https://www.coursera.org/course/gametheory .
Δεν το έχω πάρει αλλά σκέφτομαι από Οκτώβρη που ξεκινάει ξανά να το πάρω.

skinlikesand

#32
Βασικά, το επίπεδο των μαθηματικών εξαρτάται από τον κλάδο ή από την εφαρμογή της θεωρίας παιγνίων που μελετάς. Για να μελετήσει κανείς τα (μάλλον εισαγωγικά) βιβλία που πρότεινα, δε νομίζω πως χρειάζεται κάτι παραπάνω από βασική θεωρία πιθανοτήτων (π.χ. τον ορισμό της κατανομής πιθανότητας), βασική γραμμική άλγεβρα (π.χ. πράξεις διανυσμάτων και κατανόηση της θεωρίας των διανυσματικών χώρων), ίσως και λίγη βελτιστοποίηση (π.χ. γραμμικό προγραμματισμό).

Τα σημεία σταθερής ισορροπίας (έννοιες λύσης στη θεωρία παιγνίων), όπως η ισορροπία Nash, θεμελιώνονται πάνω σε θεωρήματα σταθερού σημείου, αλλά η μελέτη της σχετικής θεωρίας (που είναι θέμα ενός κλάδου των μαθηματικών που λέγεται συναρτησιακή ανάλυση) δεν είναι απαραίτητη για να κατανοήσεις αυτές τις έννοιες λύσης, όπως και το πως φτάνουμε σε αυτές. Τα πρακτικά παραδείγματα φτάνουν και περισσεύουν.

Ο Dawkins αναφέρεται σε έννοιες της εξελικτικής θεωρίας παιγνίων (ενδεικτικά, δείτε το κεφάλαιο 5, "επιθετικότητα: σταθερότητα και η γονιδιακή μηχανή" του βιβλίου του "το εγωιστικό γονίδιο"), που χρησιμοποιείται στη Βιολογία για την μοντελοποίηση και τη μελέτη του πως εξελίσσονται οι συμπεριφορές (στρατηγικές) των ατόμων ενός πλυθησμού μέσα από καταστάσεις Δαρβινικού ανταγωνισμού (π.χ. ποιά είναι η πιο προσοδοφόρα στρατηγική, συγκριτικά με τις υπόλοιπες, για τη διεκδίκηση ταιριού για ζευγάρωμα) στο χρόνο (αν η στρατηγική που εφαρμόζει ο πράκτορας-παίκτης δεν αποδώσει την καλύτερη αναμενόμενη ωφέλεια, είναι λιγότερο πιθανό να τη χρησιμοποιήσει ξανά σε μια μελλοντική ανάλογη κατάσταση γιατί δεν αφήνει εξελικτικό πλεονέκτημα). Ένα σχετικό παιχνίδι είναι το Hawk-Dove.

(Όταν έγραψα το ποστ μου, δεν ήμουν καταρτισμένος στην Εξελικτική Θεωρία  Παιγνίων και σήμερα μου ήρθε φλασιά ότι έχω γράψει κάτι σχετικό σ' αυτό το φόρουμ, που πιθανότατα έχει λαθάκια.)

pgrontas

Παράθεση από: sstergou στις 01 Οκτ 2013, 11:47:53 ΠΜ
Για όποιον ενδιαφέρεται υπάρχει και αυτό το μάθημα https://www.coursera.org/course/gametheory .
Δεν το έχω πάρει αλλά σκέφτομαι από Οκτώβρη που ξεκινάει ξανά να το πάρω.

Εγώ το ξεκίνησα, αλλά μου φάνηκε πολύ προσανατολισμένο στα οικονομικά και το παράτησα μετά την τρίτη εβδομάδα. Απλά να επισημάνω, ότι πέρα από την κλασική θεωρία παιγνίων υπάρχει και η αλγοριθμική/υπολογιστική θεωρία παιγνίων, όπου εκεί παίζουν τα πρόσφατα αποτελέσματα των (Κουτσουπιά-(Παπαδημητρίου)-Δασκαλάκη).

Ένα ενδιαφέρον σχετικό course (όχι σε MOOC) που ξεκίνησε αυτή την εβδομάδα είναι από τον Tim Roughgarden (από τους γκουρού της περιοχής) εδώ: http://theory.stanford.edu/~tim/f13/f13.html

Για όποιον έχει χρόνο.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

itt

Kρίμα πάντως που το Standford δεν προσφέρει το μάθημα στο coursera, ο Roughgarden ήταν αρκετά ευχάριστος στα Algorithms: Design and Analysis.

mhtsos_25

Γεια σας ειμαι καινουργιος στο forum και στον κοσμο της πληροφορικης γενικα!!!Θα ηθελα λοιπον να κανω μια ερωτηση οσον αφορα τον τομεα του προγραμματισμου σε γλωσσα java!Επειδη ειμαι μαθητης λυκειου ακομη και εχω λιγο ελευθερο χρονο θα ηθελα να φτασω σε ενα υψηλο επιπεδο γνωσης της java , ωστε να μπορω ακομη και να φτιαχνω δικα μου προγραμματα, οποτε αν εχετε να προτεινετε καποιο καλο βιβλιο εκμαθησης της θα το εκτιμουσα ιδιαιτερα!!!!!! :D 



ευχαριστω εκ των προτερων!!!!!! :)

evry

Λοιπόν το καλύτερο Online βιβλίο κατά τη γνώμη μου είναι το Thinking in Java του Bruce Eckel, το οποίο μπορείς να κατεβάσεις από το παρακάτω link
Thinking in Java, 4th Edition

Ένα εξαιρετικό περιβάλλον για προγραμματισμό σε Java είναι το Eclipse, το κατεβάζεις από εδώ
http://www.eclipse.org/downloads/

Δύο πολύ καλά Online courses είναι του audacity και του MIT, με τα οποία πραγματικά αξίζει να ασχοληθείς. ειδικά με αυτό του MIT που είναι πιο ... ορθολογικό
Introduction to Programming in java
https://www.udacity.com/course/cs046

άλλα βιβλία και πηγές για μάθηση
Introduction to Programming Using Java
http://docs.oracle.com/javase/tutorial/
Σημειώσεις στα ελληνικά από το ΕΜΠ
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

mhtsos_25

Σε ευχαριστω πολυ για τις προτασεις σου και πιστευω πως πραγματι με βοηθουν να κανω μια αρχη στον προγραμματισμο με την πρωτη μου γλωσσα,java!!!!!!!! ;D ευχαριστω και παλι!!!!!!!! ;)

dski

Αν πάντως μου επιτρέπεις μια συμβουλή, αφού δεν έχεις προηγούμενη εμπειρία με προγραμματισμό θα έλεγα, πριν αρχίσεις να γράφεις κώδικα σε μια object oriented γλώσσα όπως η Java, να μελετήσεις λίγο γενικότερα τις κλασσικές αλγοριθμικές δομές και τις βασικές προγραμματιστικές τεχνικές. Κατά την άποψή μου, δεν έχει ιδιαίτερο όφελος, ή τέλος πάντων δεν είναι καλή πρακτική, να προσπαθήσεις να εμβαθύνεις στα τερτίπια μιας γλώσσας (ειδικά μιας γλώσσας σαν τη Java) αν δεν γνωρίζεις τα βασικά. Δε μπορείς να φτάσεις στο 'Γ' αν δεν περάσεις από το 'Α' και το 'Β'  :).  Για το σκοπό αυτό, ακόμη και το βιβλίο της ΑΕΠΠ για τη Γ' Λυκείου είναι μια καλή εισαγωγή ώστε να πάρεις μια ιδέα.

Καλές Γιορτές!

dpa2006

Παράθεση από: dski στις 22 Δεκ 2013, 10:25:22 ΠΜ
Αν πάντως μου επιτρέπεις μια συμβουλή, αφού δεν έχεις προηγούμενη εμπειρία με προγραμματισμό θα έλεγα, πριν αρχίσεις να γράφεις κώδικα σε μια object oriented γλώσσα όπως η Java, να μελετήσεις λίγο γενικότερα τις κλασσικές αλγοριθμικές δομές και τις βασικές προγραμματιστικές τεχνικές. Κατά την άποψή μου, δεν έχει ιδιαίτερο όφελος, ή τέλος πάντων δεν είναι καλή πρακτική, να προσπαθήσεις να εμβαθύνεις στα τερτίπια μιας γλώσσας (ειδικά μιας γλώσσας σαν τη Java) αν δεν γνωρίζεις τα βασικά. Δε μπορείς να φτάσεις στο 'Γ' αν δεν περάσεις από το 'Α' και το 'Β'  :) .  Για το σκοπό αυτό, ακόμη και το βιβλίο της ΑΕΠΠ για τη Γ' Λυκείου είναι μια καλή εισαγωγή ώστε να πάρεις μια ιδέα.

Καλές Γιορτές!

+1 για την συμβουλή να μελετήσεις λίγο γενικότερα τις κλασσικές αλγοριθμικές δομές και τις βασικές προγραμματιστικές τεχνικές.
και μερικά ακόμη λινκ:
java σημειωσεις
Computer science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical processes (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded in bits and bytes in a computer memory or transcribed engines and protein structures in a human cell.source:http://en.wikipedia.org/wiki/Computer_science

mhtsos_25

Ευχαριστω για τις συμβουλες σας και τις ευχες σας !!!!! ;)Οσον αφορα την επισημανση σας στην γενικευμενη γνωση που πρεπει να εχω πρωτα ωστε να ειδικευτω στην συνεχεια με καποια συγκεκριμενη γλωσσα οπως η java που ανεφερα, την θεωρω σωστη και μαλιστα ασχοληθηκα αρκετα με τον προγραμματισμο στην ΓΛΩΣΣΑ αλλα και σχεδιαζω να ξεκινησω προτου μελητησω java  με το ακολουθο βιβλιο http://www.public.gr/product/books/greek-books/computer-science/programming/basikes-arhes-glosson-programmatismoy/prod253620/ ή κατι αντιστοιχο!!!Επισης οσον αφορα την java που ανεφερα οτι θα ασχοληθω, ισως τελικα να την παραμελησω οσπου πρωτα να μαθω c ως πρωτη γλωσσα με ενα ιδιατερα καλο βιβλιο απο οτι εχω δει και ακουσει απο κριτικες που σε εισαγει ομαλα στην C και στους αλγοριθμους http://www.public.gr/product/books/greek-books/computer-science/programming/i-tehni-kai-epistimi-tis-c/prod260247/!!!!!! ;D

Περιμενω λοιπον την γνωμη σας που με ενδιαφερει ιδιατερα!!(να σημειωθει επισης οτι ειμαι 16 χρονων!)

itt

#41
Παράθεση από: mhtsos_25 στις 24 Δεκ 2013, 08:04:53 ΜΜ
Ευχαριστω για τις συμβουλες σας και τις ευχες σας !!!!! ;)Οσον αφορα την επισημανση σας στην γενικευμενη γνωση που πρεπει να εχω πρωτα ωστε να ειδικευτω στην συνεχεια με καποια συγκεκριμενη γλωσσα οπως η java που ανεφερα, την θεωρω σωστη και μαλιστα ασχοληθηκα αρκετα με τον προγραμματισμο στην ΓΛΩΣΣΑ αλλα και σχεδιαζω να ξεκινησω προτου μελητησω java  με το ακολουθο βιβλιο http://www.public.gr/product/books/greek-books/computer-science/programming/basikes-arhes-glosson-programmatismoy/prod253620/ ή κατι αντιστοιχο!!!Επισης οσον αφορα την java που ανεφερα οτι θα ασχοληθω, ισως τελικα να την παραμελησω οσπου πρωτα να μαθω c ως πρωτη γλωσσα με ενα ιδιατερα καλο βιβλιο απο οτι εχω δει και ακουσει απο κριτικες που σε εισαγει ομαλα στην C και στους αλγοριθμους http://www.public.gr/product/books/greek-books/computer-science/programming/i-tehni-kai-epistimi-tis-c/prod260247/!!!!!! ;D

Περιμενω λοιπον την γνωμη σας που με ενδιαφερει ιδιατερα!!(να σημειωθει επισης οτι ειμαι 16 χρονων!)


H γνώμη μου είναι ότι η C πλέον δεν είναι καλή επιλογή για να προσεγγίσεις τον προγραμματισμό ως αρχάριος(Δεδομένου των πολλών και καλύτερων εναλλακτικών). Το ίδιο ισχύει και για την Java, ειδικά πλέον με τις καταπληκτικές εναλλακτικές  στο οικοσύστημα του jvm. To ότι  είναι  ( η Java ) object-orientated μην σε απασχολεί, δεν σε αναγκάζει κανείς να μοντελοποιείς τα πάντα ως κλάσεις. Θεωρώ ότι μπορείς να ξεκινήσεις είτε με javascript είτε με python. Εγώ θα πρότεινα την javascript αν και η python έχει μια εξαιρετική επιστημονική βιβλιοθήκη, που μπορείς να χρησιμοποιήσεις για να λύσεις διαφόρων ειδών προβλήματα.

Τώρα στο θέμα των δομών και των προγραμματιστικών τεχνικών( μάλλον το αλγοριθμικές θα ταίριαζε καλύτερα imo). Η καλύτερη εισαγωγή για μένα είναι το Αλγόριθμοι του Παπαδημητρίου, που έχει πολύ compact περιεχόμενο και δεν σε πνίγει με βαθιές μαθηματικές λεπτομέρειες. Mπορείς μετά να κοιτάξεις και αυτό  που έχει πιο τεχνική ανάλυση των αλγορίθμων και των δομών που παρουσιάζονται.  Θα ήθελα να σου προτείνω να διαβάσεις το SICP γιατί κάπου είχα δει ότι στο course χρησιμοποιούν python πλέον, αλλα δεν έχω βρει το βιβλίο με κάτι πέρα απο Scheme. Γενικά πάντως αξίζει να το διαβάσεις αφου έχεις δουλέψει λίγο την γλώσσα που θα επιλέξεις.

mhtsos_25

Δεν ειμαι απολυτα σιγουρος αν πραγματικα ειναι τοσο δυσκολο μετα απο μια γενικη εισαγωγη που εχω ηδη κανει στον προγραμματισμο να κατανοησω εστω και σε αρχαριο επιπεδο μια γλωσσα σαν την java ή την C οποτε ειλικρινα με βαζεις σε σκεψη!!! :( Οσον αφορα τωρα την επισημανση σου για την javascript ομολογω οτι την "εχω μαθει" απο το παρακατω site http://www.codecademy.com/ αλλα παραλληλα δεν εχω καταλαβει την χρηση της και τον συσχετισμο της με την java οσο και αν το εχω ψαξει οποτε λιγες πληροφοριες απο ακποιον γνωστη θα μου ηταν χρησιμες!!Τωρα για την εκμαθηση της (javascript) δεν ειμαι σιγουρος αν εχω εντοπισει καποιο καλο βιβλιο οπως αυτο http://www.papasotiriou.gr/product/ma8ete-html-5-css-ke-javascript-ola-se  που καλυπτει και την html και css ετσι καποια προταση θα ηταν καλη.

εχω μπερδευτει!!!! :-\

itt

Παράθεση από: mhtsos_25 στις 25 Δεκ 2013, 03:58:22 ΜΜ
Δεν ειμαι απολυτα σιγουρος αν πραγματικα ειναι τοσο δυσκολο μετα απο μια γενικη εισαγωγη που εχω ηδη κανει στον προγραμματισμο να κατανοησω εστω και σε αρχαριο επιπεδο μια γλωσσα σαν την java ή την C οποτε ειλικρινα με βαζεις σε σκεψη!!! :(

Δεν μίλησα για κατανόηση. Ένα ας πούμε πρόβλημα με τη C είναι η απουσία standard βιβλιοθήκης με container/collections. Δεν είναι πρόβλημα για αυτούς που χρησιμοποιούν τη C σε αυτό που προορίζεται, αλλά θα ήταν εξαιρετικό να έχεις μια δομή γενικής χρήσης για να κάνεις τη δουλειά σου καθώς μαθαίνεις. Επίσης κάτι που είναι απίστευτα handy όταν μαθαίνεις, είναι η ύπαρξη REPL. H javascript έχει standalone όπως και η python και θα σε βοηθήσει πάρα πολύ. Η C δεν έχει τέτοια ούτε και η java.

Η java είναι σαφώς καλύτερη επιλογή από την C, απλά δεν είναι κάτι που θα σου συνιστούσα, για διάφορους λόγους που μπορώ να στους αναλύσω άμα είσαι αναποφάσιστος.

Παράθεση από: mhtsos_25 στις 25 Δεκ 2013, 03:58:22 ΜΜ
Οσον αφορα τωρα την επισημανση σου για την javascript ομολογω οτι την "εχω μαθει" απο το παρακατω site http://www.codecademy.com/ αλλα παραλληλα δεν εχω καταλαβει την χρηση της και τον συσχετισμο της με την java οσο και αν το εχω ψαξει οποτε λιγες πληροφοριες απο ακποιον γνωστη θα μου ηταν χρησιμες!!Τωρα για την εκμαθηση της (javascript) δεν ειμαι σιγουρος αν εχω εντοπισει καποιο καλο βιβλιο οπως αυτο http://www.papasotiriou.gr/product/ma8ete-html-5-css-ke-javascript-ola-se  που καλυπτει και την html και css ετσι καποια προταση θα ηταν καλη.
εχω μπερδευτει!!!! :-\

Η χρήση της είναι από client-side scripts σε browsers σε scripting παιχνιδιών( Στο Unity  μπορείς χρησιμοποήσεις javascript πχ) σε PDFs, widgets ακόμα και server-side web apps με το Node.js

Δεν έχεις καταλάβει το συσχετισμό με την java επειδή δεν υπάρχει, απλώς χρησιμοποιεί names και naming conventions της java. Υπάρχει συσχετισμός με την Scheme ας πούμε. Δεν εννοούσα να δεις τη javascript από την σκοπιά του web programming, απλώς πιστεύω ότι είναι πιο εύκολο σε πρώτη φάση στη χρήσης της, για να προσεγγίσεις τον προγραμματισμό. Mπορείς να κάνεις το ίδιο ( και argueably καλύτερα) με την python.

Θα προσπαθήσω να σου απαντήσω με περισσότερες λεπτομέρειες το βράδυ, οπότε αγνόησε για λίγο την προχειρότητα των posts μου.

evry

H C είναι μια γλώσσα η οποία θα σου δώσει τη δυνατότητα να μάθεις πως υλοποιούνται αρκετά πράγματα ακόμα και σε σχετικά χαμηλό επίπεδο.
Δεν θα σου κρύψει τίποτα. Η Java θα στα κρύψει όλα  ;D και η Python θα σου κρύψει και αυτή πράγματα αφού είναι αρκετά πιο high-level από τη C.
Δεν χρειάζεται να ξεκινήσεις με pure C. Μπορείς να ξεκινήσεις με το C υποσύνολο της C++, οπότε θα έχεις στα χέρια σου και την STL, που είναι μια εξαιρετική βιβλιοθήκη με containers/collections.
Έτσι ακριβώς δουλεύουν στους διαγωνισμούς πληροφορικής.

Ουσιαστικά δηλαδής ξεκινάς με C++, αλλά δεν μπλέκεις με το αντικειμενοστρεφές κομμάτι, γιατί η C++ δεν είναι καθαρή αντικειμενοστρεφής γλώσσα σε αντίθεση με τη Java που είναι και θα χρειαστεί να μπλέξεις και με αντικείμενα την ίδια στιγμή που θα μαθαίνεις τα βασικά του προγραμματισμού και των αλγορίθμων. Αυτό έχει σαν αποτέλεσμα να χάσεις τη μπάλα.
Για αυτό άλλωστε και στην συντριπτική πλειψηφία τους τα τμήματα πληροφορικής στην Ελλάδα ξεκινάνε με C/C++, με ελάχιστες εξαιρέσεις (οι οποίες έχουν καταστροφικά αποτελέσματα για την μετέπειτα πορεία των φοιτητών στον προγραμματισμό).
Σίγουρα τα τελευταία χρόνια υπάρχει μια στροφή προς Python γιατί πράγματι είναι μια καλή γλώσσα προγραμματισμού για να ξεκινήσεις, αλλά κατά τη γνώμη μου η C δεν έχει φάει ακόμα τα ψωμιά της.  ;)

Το μεγάλο θετικό που έχει η Python σε σύγκριση με τις άλλες γλώσσες είναι ότι θα μάθεις πολύ πιο γρήγορα προγραμματισμό. Είναι πολύ πιο εύκολη και πιο φιλική. Με τη C θα σου πάρει περισσότερο χρόνο. (Έχει μακρύτερο learning curve όπως λένε)
Όπως όμως είχε πει και ο Ευκλείδης "Δεν υπάρχει βασιλική οδός για τη Γεωμετρία". Το ίδιο ακριβώς ισχύει με τον προγραμματισμό. Θα πρέπει να λερώσεις τα χέρια σου και να πέσεις στα βαθιά κάποια στιγμή, και όσο το καθυστερείς τόσο χειρότερα είναι.

Το course structure and interpretation of computer programs με python είναι εδώ
http://www-inst.eecs.berkeley.edu/~cs61a/sp12/

και το αντίστοιχο βιβλίο είναι παρακάτω
http://www-inst.eecs.berkeley.edu/~cs61a/sp12/book/index.html

Αν πάντως έχεις πολύ χρόνο, δεν είναι κακή ιδέα να ξεκινήσεις παράλληλα και με τις 2 και να μας πεις τις εμπειρίες σου :D

Παραθέτω και κάποια Links που επιχειρηματολογούν για το αν πρέπει να μάθεις πρώτα C ή Python.
Καλό να τους ρίξεις μια ματιά. Έχουν ενδιαφέρον.

http://www.softintegration.com/academic/why-learn-c-as-first-programming-language.html

http://mcsp.wartburg.edu/zelle/python/python-first.html
http://www.thehelloworldprogram.com/why-python-should-be-the-first-programming-language-you-learn/
http://programmers.stackexchange.com/questions/124783/why-is-python-recommended-as-an-entry-level-programming-language

http://stackoverflow.com/questions/2399471/is-it-a-good-idea-for-me-to-learn-python-before-c-or-some-other-compiler-languag
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr