Κατά τη γνώμη μου θα πρέπει να χωρίσεις τον χρόνο σου τόσο στο να μάθεις συγκεκριμένα εργαλεία προγραμματισμού όπως PHP, Javascript κτλ. όσο και στο να μάθεις γενικά περί αλγορίθμων, και αποτελεσματικών τεχνικών επίλυσης προβλημάτων.
Μιας και είσαι φοιτητής σου προτείνω να ρίξεις μια ματιά σε συναρτησιακό προγραμματισμό (είναι κάτι που θέλω να το κάνω κι εγώ σύντομα) με το how to design programs (scheme) http://www.htdp.org/ και μετά δες το How to Design classes (όταν βγει, είναι ακόμη σε draft). http://www.ccs.neu.edu/home/vkp/HtDCH/index.html . Το ξέρω από ένα σεμινάριο που παρακολούθησα το καλοκαίρι με βάση αυτό, το οποίο με "γοήτευσε" αν κάποιος μπορεί να πει κάτι τέτοιο για τον προγραμματισμό 
Συμφωνώ με τον Στάθη στο τελευταίο. Για πολλούς ο συναρτησιακός προγραμματισμός είναι το μέλλον τόσο στον τρόπο σκέψης όσο και στην επιρροή στις γλώσσες προγραμματισμού. Η βίβλος στο συγκεκριμένο κομμάτι, που καλύπτει μάλιστα και τα δύο σκέλη που προανέφερα είναι για μένα το SICP (
http://mitpress.mit.edu/sicp/). Εκεί είναι διαθέσιμο τόσο ένα βιβλίο όσο και διαλέξεις σε video. (Μακάρι να το ήξερα όταν ήμουν και εγώ φοιτητής).
Αντί για την γλώσσα scheme, όμως που χρησιμοποείται εκεί, θα σου πρότεινα να ασχοληθείς με Haskell. Πολύ υλικό για αυτήν υπάρχει στο
www.haskell.org.