Τι εννοιών της Πληροφορικής πρέπει να γνωρίζω;

ψήφοι
86

Ποιες έννοιες στην Επιστήμη των Υπολογιστών νομίζετε ότι έχετε μια καλύτερη προγραμματιστή γίνει;

πτυχίο μου ήταν Μηχανολόγου Μηχανικού, ώστε να έχει καταλήξει ως προγραμματιστής, είμαι λίγο λείπει από τα βασικά. Υπάρχουν μερικά τυποποιημένων εννοιών CS που έχω μάθει πρόσφατα που μου έχουν δώσει μια πολύ βαθύτερη κατανόηση του τι κάνω, και συγκεκριμένα:

Γλώσσα Λειτουργίες

  • Δείκτες & Αναδρομή (Χάρη Joel!)

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

  • Συνδεδεμένες Λίστες
  • hashtables

αλγόριθμοι

  • Ταξινομεί φούσκα

Προφανώς, η λίστα είναι λίγο μικρό αυτή τη στιγμή και έτσι ήλπιζα για τις προτάσεις σχετικά με:

  1. Τι έννοιες που πρέπει να καταλάβουν,
  2. Κάθε καλό πόρων για την ορθή κατανόηση τους (όπως η Wikipedia μπορεί να είναι λίγο πυκνή και ακαδημαϊκά μερικές φορές).
Δημοσιεύθηκε 14/04/2009 στις 11:27
πηγή χρήστη
Σε άλλες γλώσσες...                            


33 απαντήσεις

ψήφοι
5

Θεωρώ γραφήματα και κάποια εφαρμογή αλγορίθμων, όπως το βάθος πρώτη, την αναπνοή πρώτη αναζήτηση, συντομότερα μονοπάτια κ.α. πολύ χρήσιμη. προσανατολισμό αντικειμένου είναι επίσης μια πραγματικά κοινή αντίληψη.

Απαντήθηκε 14/04/2009 στις 11:30
πηγή χρήστη

ψήφοι
57

Ρίξτε μια ματιά σε αυτό το blog από τον Steve Yegge (πρώην της Amazon, τώρα στο Google):

Δεν πηγαίνει σε κάποιες λεπτομέρειες σχετικά με τις πέντε πιο σημαντικές έννοιες που οι προγραμματιστές θα πρέπει να υποχρεούνται να γνωρίζουμε:

  1. Ο βασικός προγραμματισμός (συμπεριλαμβανομένης της αναδρομής, το αρχείο I / O, μορφοποιημένη έξοδο, loops κλπ)
  2. προσανατολισμό το σχεδιασμό αντικειμένων (συμπεριλαμβανομένων των προτύπων σχεδιασμού κ.λπ.). Θα πρέπει να είναι σε θέση να παράγει λογική σχέδια OO, καθώς και την κατανόηση των εννοιών.
  3. Scripting και regexes.
  4. Δομές δεδομένων - λίστες, σύνολα, hashtables, τα δέντρα, τα γραφήματα, και ούτω καθεξής - καθώς και Big O συμβολισμός και η αλγοριθμική πολυπλοκότητα.
  5. Bits, bytes και δυαδικούς αριθμούς - πώς οι αριθμοί αντιπροσωπεύονται στο εσωτερικό του υπολογιστή, και πώς να τα χειριστούν.
Απαντήθηκε 14/04/2009 στις 11:31
πηγή χρήστη

ψήφοι
35

Σίγουρα θα πρέπει να κατανοήσουν τις Big-O συμβολισμός και Big-O εκτιμήσεις των αλγορίθμων - τι είναι, πώς χρησιμοποιείται, γιατί είναι σημαντικό, πώς θα συγκρίνουμε δύο αλγορίθμων δίνεται Big-O εκτιμήσεις τους, πώς θα οικοδομήσουμε εκτιμήσεις Big-O για τους απλούς αλγορίθμους.

Απαντήθηκε 14/04/2009 στις 11:31
πηγή χρήστη

ψήφοι
10

Θα έλεγα ότι σήμερα η κατανόηση του αντικειμένου με γνώμονα τα προγραμματισμός είναι απαραίτητη, ακόμα και αν δεν χρειαστεί να το χρησιμοποιήσετε μέρα σε μέρα.

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

Απαντήθηκε 14/04/2009 στις 11:32
πηγή χρήστη

ψήφοι
2

Μερικές από τις έννοιες OS

 ( memory, IO, Scheduling, process\Threads, multithreading )

[ένα καλό βιβλίο " Λειτουργικά Συστήματα Modern , 2η Έκδοση, Andrew S. Tanenbaum"]

Βασικές γνώσεις δικτύων υπολογιστών

[ένα καλό βιβλίο από Tanenbaum

OOPS έννοιες

πεπερασμένων autometa

Μια γλώσσα προγραμματισμού (έμαθα C πρώτα, στη συνέχεια, C ++)

Αλγόριθμοι (Ώρα \ χώρο πολυπλοκότητα, το είδος, αναζήτηση, δέντρα, συνδεδεμένη λίστα, στοίβα, ουρά)

[ένα καλό βιβλίο Εισαγωγή στην Αλγόριθμοι ]

Απαντήθηκε 14/04/2009 στις 11:33
πηγή χρήστη

ψήφοι
1

Προσπαθήστε να πάρετε μια κατανόηση όλων των επιπέδων προγραμματισμού. Από το χαμηλότερο επίπεδο (συναρμολόγησης) στο υψηλότερο επίπεδο.

Πάρτε αναδρομή για παράδειγμα, που είναι ένας εύκολος χαρακτηριστικό :) Προσπαθήστε να μάθετε συνέλευση και να δημιουργήσει ένα πρόγραμμα που θα χρησιμοποιήσετε αναδρομή στη συναρμολόγηση.

Απαντήθηκε 14/04/2009 στις 11:34
πηγή χρήστη

ψήφοι
3

Για μένα Πήρα πολλά από τα παρακάτω μαθημάτων στο πανεπιστήμιο

  • Διαχείριση έργου
  • Αλληλεπίδραση Ανθρώπου Υπολογιστή (βοηθά μας σπασίκλες κάνουμε πιο φιλική προς το χρήστη οθόνη)
  • Σχεδίαση Βάσεων Δεδομένων (Συμπεριλαμβανομένων πώς λειτουργούν οι βάσεις δεδομένων, αρχεία καταγραφής συναλλαγών, κλείδωμα κλπ)
  • αποθήκευση δεδομένων
  • Graphics (OpenGL)
  • Σύνθετη Αλγόριθμοι
  • ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Τα πράγματα Μακάρι να είχα γίνει στο πανεπιστήμιο

  • compiler Κατασκευή
  • Σχεδιαστικά πρότυπα
  • θεωρία αυτομάτων
Απαντήθηκε 14/04/2009 στις 11:34
πηγή χρήστη

ψήφοι
1

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

Αν κοιτάξετε SOA, ή DDD, όλοι τελικά να πέσει πίσω σε κάποια μορφή των εννοιών OOP.

Θα ήθελα να σας συστήσει να πάρετε κάποια καλά βιβλία OOP και αλός πάρει μια πλούσια γλώσσα όπως η C # ή Java για να αρχίσει με

OOP από Grady Booch

(PHP, Ruby παιδιά σας παρακαλούμε να δεν κάτω ψηφίζουν μου, είμαι απλά δίνοντας μερικά παραδείγματα γι 'αυτόν για να αρχίσει με, μπορείτε να παρέχουν τις δικές σας απαντήσεις και προτάσεις εδώ)

Απαντήθηκε 14/04/2009 στις 11:37
πηγή χρήστη

ψήφοι
29

Θεωρώ ότι είναι λίγο αστείο που ψάχνετε επιστήμης των υπολογιστών θέματα, αλλά βρείτε wikipedia υπερβολικά ακαδημαϊκή: D

Τέλος πάντων, εδώ πηγαίνει, χωρίς συγκεκριμένη σειρά:

Απαντήθηκε 14/04/2009 στις 11:38
πηγή χρήστη

ψήφοι
4

Κανόνας 1: Λογισμικό Capture Γνώσης . Λογισμικό σημαίνει κάτι. Αν δεν είστε σίγουροι για το νόημα, περνούν περισσότερο χρόνο μιλώντας για τους χρήστες να κατανοήσουν τι κάνουν.

Αλγόριθμοι και Δομές Δεδομένων είναι οι δύο όψεις του ίδιου νομίσματος. Αλγόριθμος εξαρτάται από τη δομή των δεδομένων, τη δομή των δεδομένων εξαρτάται από τον αλγόριθμο.

Ξεμάθουμε φούσκα είδος όσο το δυνατόν γρηγορότερα. Σοβαρά. Όλες οι σύγχρονες γλώσσες (Java, Python, κλπ) έχουν τάξεις συλλογή που εφαρμόζουν ένα καλύτερο είδος από το είδος φούσκα. Δεν υπάρχει απολύτως καμία περίπτωση κάτω από τις οποίες θα πρέπει να χρησιμοποιείτε ποτέ το είδος φούσκα για τίποτα. Θα πρέπει να ψάχνει για μια κατηγορία συλλογή που περιλαμβάνει μια μέθοδο ταξινόμησης. Καλύτερα, θα πρέπει να ψάχνει για έναν αλγόριθμο που αποφεύγει τη διαλογή εξ ολοκλήρου.

Θα πρέπει να μάθουν πολλές γλώσσες.

  • γλώσσα προγραμματισμού (Java, Python, κλπ)

  • Shell γλώσσα.

  • γλώσσα βάσεων δεδομένων (SQL)

  • γλώσσες Παρουσίαση (HTML και CSS)

  • Άλλες γλώσσες αναπαράστασης δεδομένων (XML, JSON)

Θα πρέπει να μάθουν διάφορες δομές δεδομένων.

  • Ακολουθίες (λίστες, πλειάδες, αρχεία)

  • Ιεραρχική (όπως XML και HTML έγγραφα, καθώς και το βασικό σύστημα αρχείων)

  • Σχεσιακές (όπως βάσεις δεδομένων, και το σύστημα αρχείων με σκληρό και μαλακό συνδέσεις που ρίχνονται μέσα)

  • Χάρτες (ή δείκτες ή πίνακας συσχέτισης), συμπεριλαμβανομένων Hash Χάρτες και Δέντρο Χάρτες

  • Σκηνικά

Συν κάποια αλγοριθμική ανάλυση πολυπλοκότητας. Μερικές φορές ονομάζεται "Big O". Γιατί μια ταξινόμηση φυσαλίδας είναι κακό είναι ότι είναι O ( n ^ 2), όπου quicksort είναι O ( n log n ).

Απαντήθηκε 14/04/2009 στις 11:38
πηγή χρήστη

ψήφοι
1

Αλγόριθμοι.

Μαθαίνοντας να χρησιμοποιούν μια γλώσσα προγραμματισμού με έναν τρόπο καθόδου είναι κάτι που μπορείτε να μάθετε καθώς πηγαίνετε, αλλά είναι σχεδόν αδύνατο να εφεύρει όλα τα ευρέως χρησιμοποιούμενα Αλγόριθμοι από τον εαυτό σας .. Ένα πραγματικά θα πρέπει τουλάχιστον να γνωρίζει τι μπορεί και τι δεν μπορεί να γίνει με κάποια προβλήματα.

Για παράδειγμα, ένα απλά δεν μπορεί να γράψει κάποια προγράμματα με φούσκα-ταξινόμησης και αναμένουμε να μπορεί να θεωρηθεί καλή, δεν έχει σημασία πόσο λεπτή ο κωδικός είναι.

Για να συνοψίσω - ρίξτε μια ματιά στο Εισαγωγή στους Αλγόριθμους

Δεν χρειάζεται να έχει τον έλεγχο, απλά ξέρω τι συμβαίνει ...

Απαντήθηκε 14/04/2009 στις 11:44
πηγή χρήστη

ψήφοι
1

Ως μια πρόσφατη απόφοιτος από έναν βαθμό επιστήμης των υπολογιστών θα ήθελα να συστήσει τα εξής:

  • Όπως αναφέρεται σε διάφορες θέσεις Big O συμβολισμός

    OO Σχεδιασμός

    Δομές Δεδομένων και Αλγόριθμοι (δεν θυμάμαι τον ακριβή τίτλο του βιβλίου που χρησιμοποιείται θα ενημερώσει αν θυμάμαι)

    Λειτουργικά Συστήματα http://www.amazon.com/Modern-Operating-Systems-2nd-GOAL/dp/0130313580

    NP προβλήματα

Απαντήθηκε 14/04/2009 στις 11:49
πηγή χρήστη

ψήφοι
0

Νομίζω ότι είναι σημαντικό να κατανοήσουμε τη βασική θεωρία πίσω από multi-threading, χωρίς αυτό μπορεί να είναι δύσκολο ακόμη και να δούμε ότι μπορεί να υπάρχει κάποιο πρόβλημα, μέχρι να είστε εντοπισμό σφαλμάτων σε ένα ζωντανό διακομιστή στις 4 η ώρα το πρωί της Κυριακής.

Σηματοφορείς, κρίσιμα τμήματα και εκδηλώσεις.

Απαντήθηκε 14/04/2009 στις 11:53
πηγή χρήστη


ψήφοι
0

Όχι, δεν είναι φούσκα του είδους, quicksort. Είναι το μεγάλο-O πράγμα, φούσκα μέσους όρους ταξινόμησης O (n ^ 2), quicksort είναι O (n * log (n)).

Απαντήθηκε 14/04/2009 στις 11:55
πηγή χρήστη

ψήφοι
1

Δομή και ερμηνεία των προγραμμάτων ηλεκτρονικών υπολογιστών . Εάν έχετε κατανοήσει αυτό το βιβλίο, ό, τι άλλο μπορεί να κατασκευαστεί εύκολα σε αυτά τα θεμέλια. Αν έχετε πρόβλημα με τις έννοιες στο βιβλίο, που μπορεί να είναι ένας προγραμματιστής λογισμικού, αλλά όχι ένας επιστήμονας υπολογιστών.

Απαντήθηκε 14/04/2009 στις 12:08
πηγή χρήστη

ψήφοι
0

Θα ήθελα να πω παρακάτω είναι τα πιο σημαντικά πράγματα

  • Αντικειμενοστραφής προγραμματισμός
  • έννοιες Λειτουργικό Σύστημα
    • Διαδικασία και Νήμα
    • Προγραμματισμός Αλγόριθμοι
  • Δομή δεδομένων
    • Τύπος της αποθήκευσης δεδομένων και συλλογής, τύπους (LinkedList, hash, συστοιχία κλπ)
    • Ταξινόμηση Αλγορίθμων
    • Η πολυπλοκότητα των αλγορίθμων

Στη συνέχεια Πηγαίνετε σε συγκεκριμένα πράγματα που σχετίζονται με τη γλώσσα. Ελπίζω ότι αυτό είναι χρήσιμο!!

Απαντήθηκε 14/04/2009 στις 12:15
πηγή χρήστη

ψήφοι
0

Θα ήθελα να ξεκινήσω με το απόσπασμα:

«Αν το μόνο εργαλείο που έχεις είναι ένα σφυρί, που αντιμετωπίζουν πάντα σαν ένα καρφί». (Abraham Maslow)

Η πιο σημαντική αρχή, ΙΜΟ, είναι να γνωρίζουμε πολλά διαφορετικά προγραμματισμό παραδείγματα, γλώσσες και να ενημερώσει τον εαυτό σας αλλά και για τα εργαλεία στη διάθεσή σας. Οποιοδήποτε πρόβλημα μπορεί να λυθεί σχεδόν σε κάθε γλώσσα που θα επιλέξετε, είτε πρόκειται για πλήρη άνθηση κύρια γλώσσα με τεράστια προεπιλεγμένη βιβλιοθήκη ή μικρή εξειδικευμένη γλώσσα, όπως AutoHotkey. Η πρώτη δουλειά του προγραμματιστή είναι να καθορίσει τι στη χρήση σύμφωνα με τις προδιαγραφές του προβλήματος. Ορισμένες έννοιες παρέχουν καλύτερη προσέγγιση για το θέμα, ό, τι ο κύριος στόχος σας μπορεί να είναι - εκλέπτυνση, συσκότιση, τις επιδόσεις, φορητότητα, Συντήρηση, μικρό μέγεθος κώδικα ...

Διαφορετικά θα τελειώσει όπως μερικοί από τους προγραμματιστές που προσπαθούν απεγνωσμένα να κάνουν κάτι σε 1 γλώσσα που εξειδικεύεται, ενώ το πρόβλημα θα μπορούσε να είναι ασήμαντο για να λύσει το διαφορετικό πλαίσιο προγραμματισμού.

Αυτή η συμβουλή πηγαίνει μαζί με την σημερινή τάση για πολλές γλώσσες έργων (πάρτε web εφαρμογές, για παράδειγμα, η οποία μπορεί να περιλαμβάνει πολλές γλώσσες στην ενιαία αίτηση, όπως η C #, JS, CSS, XPath, SQL, XML, HMTL, RegExp .... και ακόμη διαφορετικά παραδείγματα προγραμματισμού (για παράδειγμα, C # εισήγαγε πρόσφατα μερικές έννοιες από το λειτουργικό πρότυπα προγραμματισμού, λάμδα).

Έτσι, το βασικό πράγμα είναι συνεχής μάθηση, για πάντα :)

Απαντήθηκε 14/04/2009 στις 12:15
πηγή χρήστη

ψήφοι
0

Νομίζω 3D-γραφικά είναι κάτι που όλοι πρέπει να μάθουν. Ή τουλάχιστον πώς να χρησιμοποιούν σωστά ομοιογενή φορείς και μήτρα-μετασχηματισμών.

Μπορεί να είναι χρήσιμο όχι μόνο για τη δημιουργία 3D-εφαρμογές, αλλά και σε μηχανικό τομείς όπως η αντίστροφη κινηματική σε ρομπότ, τον υπολογισμό στιγμές και πολλά άλλα πράγματα.

Δεν κατάλαβα πλήρως γραμμική άλγεβρα μέχρι το είχα διαβάσει 3D-γραφικά, ένα από τα καλύτερα μαθήματα που έχω λάβει ποτέ, ακόμη και αν ο δάσκαλός μας ήταν κακή.

Απαντήθηκε 14/04/2009 στις 12:16
πηγή χρήστη

ψήφοι
0

Από μηχανές με πολλαπλούς πυρήνες (και τα δύο CPU και GPU) γίνονται το πρότυπο, θα έλεγα να περιλαμβάνουν Κατανεμημένα Αλγόριθμοι (από πολλαπλά νήματα σε πολλαπλές μηχανές). Είναι κρίσιμο να κατανοήσουμε multi-threading και κατανεμημένη επεξεργασία. Δυστυχώς η σχέση αυτή δεν παρέχει πραγματικά πολλή βοήθεια.

Απαντήθηκε 14/04/2009 στις 12:17
πηγή χρήστη

ψήφοι
10

Βλέπω πολλές καλές ιδέες CS εντοπιστεί, αλλά λίγο μιλάμε για Μαθηματικά.

Προτείνω να εξετάσουμε διακριτά μαθηματικά . Διαθέτει ένα ευρύ φάσμα χρήσιμων προβλήματα ξεκινώντας με λογικές αποδείξεις που θα σας βοηθήσουν να γράψετε συνθήκες στον κώδικα. Θεωρία γραφημάτων και Συνδυαστική επίσης να βοηθήσει με πολύπλοκες επίλυση προβλημάτων και τη βελτιστοποίηση αλγορίθμου.

Ενώ είμαστε σχετικά με το θέμα των μαθηματικών, γραμμική άλγεβρα είναι συνήθως μια προϋπόθεση για μαθήματα γραφικών εκ των προτέρων υπολογιστή.

Απαντήθηκε 14/04/2009 στις 12:21
πηγή χρήστη

ψήφοι
14

Μερικές ιδέες που βοήθησαν την ανάπτυξή μου (διάνοια και κωδικό):

  • Lexing, Parsing, String ταιριάζουν, Regex
  • Memoization
    • ενθυλάκωση / οριοθέτησης / κλεισίματα
    • caching
  • Αναδρομή
  • Iterators / Γεννήτριες
  • Λειτουργική προγραμματισμού - John Hughes' καταπληκτικό άρθρο μου είχε στο “γιατί”

Αυτά είναι ολόκληρη τομείς των διακριτών μαθηματικών, αλλά μια σοβαρή εισαγωγή απαιτείται για CS:

  • Matrix / Γραμμική Άλγεβρα
  • Θεωρία γράφημα

Αν διαλέξεις και άρθρα του Mark Jason-Dominus συχνά απευθύνονται σε Perl χάκερ, νομίζω ότι οποιοσδήποτε προγραμματιστής θα ωφεληθούν από σαφή παρουσίασή του και σε πραγματικό κώδικα, ειδικά σε Ανώτερης Τάξης Perl .

Απαντήθηκε 14/04/2009 στις 12:25
πηγή χρήστη

ψήφοι
2

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

Μετά από 15 χρόνια μετά την φοιτητής ανάπτυξης επαγγελματικού λογισμικού, θεωρώ ότι χρησιμοποιούν τακτικά κάποια από τις ακόλουθες έννοιες από το σχολείο:

  • Γενικές έννοιες OO, και σύγχρονα χαρακτηριστικά γλώσσα προγραμματισμού (κλάσεις, απόκρυψη δεδομένων, κλπ).
  • μετρήσεις απόδοσης Αλγόριθμος (Big O συμβολισμός). Κατά το σχεδιασμό ενός αλγορίθμου, που εκτελεί μια μεγάλη ανάλυση O για τον προσδιορισμό του κόστους του αλγόριθμος, και κοιτάζοντας πιο αποτελεσματικές εναλλακτικές λύσεις σε περιοχές συμφόρησης.
  • Συνδεδεμένες λίστες και άλλες σύνθετες δομές δεδομένων.
  • Γρήγορη ταξινόμηση και διαφορετικές έννοιες ταξινόμησης.
  • Δέντρα και γρήγορη χειραγώγηση δέντρο.

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

Απαντήθηκε 14/04/2009 στις 12:48
πηγή χρήστη

ψήφοι
0

Ανάπτυξη Λογισμικού Κύκλου Ζωής - Οι απαιτήσεις συλλογής, το σχεδιασμό και την ανάλυση, την υλοποίηση, τον έλεγχο και την υποστήριξη και την ακολουθία συντήρησης. Αυτό μαζί με μεθοδολογίες, όπως καταρράκτη και ευκίνητη, όπου αυτά τα βήματα εφαρμοστούν στην πράξη είναι επίσης ένα σημαντικό πράγμα που πρέπει να μάθουν.

Απαντήθηκε 14/04/2009 στις 13:05
πηγή χρήστη

ψήφοι
0

Οτιδήποτε όμως φούσκα ταξινόμησης:

  • heap είδος
  • Γρήγορη ταξινόμηση

Και το πιο σημαντικό: Big O συμβολισμός έτσι ξέρετε γιατί θα πρέπει να χρησιμοποιήσετε ένα από αυτά αντί για ένα είδος φούσκα.

Απαντήθηκε 14/04/2009 στις 13:48
πηγή χρήστη

ψήφοι
1

Δεν πρόκειται να σας πω συγκεκριμένες έννοιες για τη μελέτη, αλλά θα πρότεινα, αντί να το κάνετε πολύ φως ανάγνωσης σε ένα ευρύ φάσμα θεμάτων. Μην ανησυχείτε για να πάρει μια σε βάθος κατανόηση του κάθε θέματος μπορείτε να διαβάσετε σχετικά με - σε αυτό το σημείο, είναι πιο σημαντικό να είστε σε θέση να αναγνωρίσει τι είδους πρόβλημα που ψάχνετε σε, έτσι ώστε να μπορείτε να κάνετε κάποια just- σε χρόνο μελετώντας όταν είστε πραγματικά αντιμέτωποι με αυτό. Με άλλα λόγια, είναι εντάξει, αν δεν ξέρετε πώς να λύσει ένα πρόβλημα Συνδυαστική, εφ 'όσον ξέρετε αρκετά για να αναζητήσετε «Συνδυαστική», όταν θα πρέπει να δούμε πόσους τρόπους μπορείτε να κανονίσετε ένα σύνολο αντικειμένων ή να επιλέξετε ένα υποσύνολο .

Η Wikipedia είναι μια πολύ καλή πηγή για αυτό το είδος της ευρείας περιήγηση, ειδικά αν είστε ακριβώς αποκορύφωση για να αρχίσει με. Μια ακόμα καλύτερη, ειδικά αν βρείτε τη Βικιπαίδεια πολύ ακαδημαϊκή ή απρόσιτες, είναι το wiki C2 . (Αυτό είναι, περιέργως, το αρχικό wiki που εφευρέθηκε από τον Ward Cunningham).

Απαντήθηκε 14/04/2009 στις 13:51
πηγή χρήστη

ψήφοι
5

Προγραμματιστής Competency Matrix καλύπτεται αυτό με λεπτομέρειες, αλλά θα επισημάνω μερικά:

  • ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ
    • Σύνθετη δομές δεδομένων, όπως Β-δέντρα, διωνυμική και Fibonacci σωρούς, AVL / Κόκκινο Μαύρο δέντρα, Splay Δέντρα, Μεταφορά λίστες, προσπαθεί κ.λπ.
  • αλγόριθμοι
    • Δέντρο, γράφημα, απλά άπληστοι και διαίρει και βασίλευε, είναι σε θέση να κατανοήσουν τη σημασία των επιπέδων της μήτρας.
  • προγραμματισμού συστημάτων
    • Κατανοεί ολόκληρη τη στοίβα προγραμματισμό, hardware (CPU + Memory + Cache + Διακοπές + μικροκώδικα), δυαδικό κώδικα, συναρμολόγηση, στατική και δυναμική σύνδεση, συλλογή, ερμηνεία, συλλογή ΚΟΕ, συλλογή των απορριμμάτων, σωρού, η καπνοδόχος, μνήμη αντιμετώπιση ...
  • Έλεγχος πηγαίου κώδικα Έκδοση
    • Η γνώση των κατανεμημένων συστημάτων VCS. Έχει δοκιμάσει bzr / Mercurial / darcs / Git
  • Κατασκευάστηκε αυτοματισμού
    • Μπορεί να στήσετε ένα σενάριο για την κατασκευή του συστήματος, αλλά και την τεκμηρίωση, εγκαταστάτες, δημιουργούν σημειώσεις έκδοσης και επισημάνετε τον κώδικα ελέγχου προέλευσης
  • αυτοματοποιημένη δοκιμή
    • Κατανοεί και είναι σε θέση να στήσετε αυτοματοποιημένο λειτουργικό, το φορτίο / επιδόσεων και τη δοκιμή UI
  • πρόβλημα αποσύνθεσης
    • Η χρήση των κατάλληλων δομών δεδομένων και αλγορίθμων και έρχεται με γενικό / κωδικό object-oriented που συμπυκνώνουν τις πτυχές του προβλήματος που υπόκεινται σε αλλαγές.
  • συστήματα αποσύνθεσης
    • Ικανός να απεικονίσει και να σχεδιάσουν σύνθετα συστήματα με πολλαπλές σειρές προϊόντων και ολοκληρώσεις με εξωτερικά συστήματα. Επίσης, θα πρέπει να είναι σε θέση να σχεδιάσει συστήματα υποστήριξης λειτουργιών, όπως η παρακολούθηση, την υποβολή εκθέσεων, δεν εξαγορές κ.λπ.
Απαντήθηκε 14/04/2009 στις 13:53
πηγή χρήστη

ψήφοι
2

Θα Ψήφος Διακριτά μαθηματικά. Η επιστήμη των υπολογιστών είναι αφαίρεση. μαθαίνουν να σκέφτονται σαν ένας μαθηματικός είναι πολύ χρήσιμη.

Ήθελα επίσης να προσθέσω σε αυτά που είπε S.Lott για τις γλώσσες. Μαθαίνοντας ένα σωρό είδη των γλωσσών είναι πάρα πολύ σημαντικό. Όχι μόνο καταρτίζονται vs scripting. Αλλά λειτουργική (ML, Lisp, Haskell) λογική (Prolog) αντικειμενοστρεφούς (C ++, Java, Smalltalk) επιτακτική (C, Pascal, FORTRAN ακόμη).

Τα περισσότερα παραδείγματα προγραμματισμού γνωρίζετε, τόσο πιο εύκολο είναι να πάρει νέες γλώσσες, όταν η καυτή νέα γλώσσα έρχεται!

Απαντήθηκε 14/04/2009 στις 13:59
πηγή χρήστη

ψήφοι
3

LOGIC - Απλά υπερεκτιμούν τη σημασία της λογικής στον προγραμματισμό. Είπατε ότι έκανε Μηχανολόγων Μηχανικών, έτσι ώστε να πρέπει να ξέρετε πόσο τα μαθηματικά μπορούν να κάνουν τη ζωή σας πιο εύκολη.

Προτασιακή λογική , First-Order Logic , δεύτερης τάξης Logic : αυτά είναι πολύ ισχυρά εργαλεία. Πιθανώς οι περισσότεροι (και μόνο) σημαντικά πράγματα που έχω μάθει στο πανεπιστήμιο. Η λογική είναι σαν το βαρύ πυροβολικό του προγραμματιστή - πολλά πολύ πολύπλοκα προβλήματα (καθώς και οι λιγότερο σύνθετες) γίνει πολύ πιο απλή, αφού έχετε τα βάλει σε μια οργανωμένη, λογική μορφή. Είναι σαν αυτό που Γραμμική Άλγεβρα είναι Μηχανολόγοι Μηχανικοί.

Απαντήθηκε 14/04/2009 στις 15:03
πηγή χρήστη

ψήφοι
3

Νομίζω ότι μια καλή κατανόηση του πώς λειτουργεί ένα compiler είναι καλό να γνωρίζουμε. Aho έχει το κλασικό βιβλίο για έννοιες που χρησιμοποιούνται για τη δημιουργία ενός compiler. Ο τίτλος είναι Μεταγλωττιστές: Αρχές, Τεχνικές και Εργαλεία. ψευδώνυμο του είναι ο Δράκος βιβλίο. Για να κατανοήσουμε πραγματικά αυτό το βιβλίο, θα πρέπει να έχετε μια κατανόηση των τυπικών γλωσσών. Hopcroft έχει ένα καλό βιβλίο για αυτό - Εισαγωγή στη Θεωρία Αυτομάτων, Γλώσσες, και Υπολογισμού.

Απαντήθηκε 14/04/2009 στις 15:19
πηγή χρήστη

ψήφοι
2

Καλά το κουτί της Πανδώρας είναι ανοικτό τώρα! :)
Ξεκίνησα Ηλεκτρολόγου Μηχανικού.

Σχεδιασμός Σχεσιακών Βάσεων Δεδομένων: Η παρακολούθηση των δεδομένων είναι σαν τον Arnold σε «Νηπιαγωγείο Cop».
Μπορεί να είναι απόλυτο χάος. Πρέπει να ελεγχθεί.
Πώς να διατηρήσετε τα δεδομένα σας, με τις λιγότερες θέσεις, με τις λιγότερες επαναλήψεις των πληροφοριών. Πώς να διατηρήσετε το φως των δεδομένων σας, και εύκολα προσβάσιμο. Πώς να ελέγξει την ανάπτυξη και την ακεραιότητά τους.

User Interface (UI) Σχεδιασμός: Αυτό είναι το πώς ο χρήστης πρέπει να έχει πρόσβαση στα δεδομένα είμαστε παρακολούθηση της.
Οι περισσότεροι περιβάλλον εργασίας χρήστη που σχεδιάστηκε από τους προγραμματιστές. Έτσι, οι περισσότεροι περιβάλλον εργασίας χρήστη, δυστυχώς, παράλληλα το σχεδιασμό της βάσης δεδομένων. Οι χρήστες δεν ενδιαφέρονται για το σχεδιασμό των δεδομένων σε όλα. Θέλουν απλά, αυτό που θέλουν. Θέλουν να το πάρει εύκολα. Συνήθως αυτό απαιτεί μεγάλη διαχωρισμό από το σχεδιασμό των δεδομένων και της διεπαφής χρήστη. Μάθετε για το διαχωρισμό του «μηχανικού» που από το «νότιο-φιλοξενία» σας.

Αντικειμενοστρεφής Προγραμματισμός: Πολλές γλώσσες βράζει κάτω σε αυτή τη μορφή.

Παράλληλη Επεξεργασία - Multi-Threading: Πολλοί επεξεργαστές κάνουν τη δουλειά γρήγορα!
Οι παράλληλοι υπολογιστές έχουν εδώ και δεκαετίες. Θα έχουμε την οθόνη του υπολογιστή μας, εδώ και αρκετό καιρό. Με την εκδήλωση του «υπολογιστικού νέφους», μαζική παράλληλη επεξεργασία δεν είναι μόνο manditory αλλά και προτιμότερη. Είναι απίστευτα ισχυρό! Υπάρχουν πολλές δυνατότητες απασχόλησης για παράλληλη προγραμματιστές.

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

Εκδηλώσεις Επιβλέπει ... Μέθοδοι κάνει τη δουλειά:
Κρατήστε τα πράγματα διαχωρίζουν τον κωδικό σας. Θα είναι πιο εύκολο για τους άλλους να κάνουν ενημερώσεις στο μέλλον. Είναι επίσης παραλληλίζεται κάπως το πλαίσιο Model / View / Controller (MVC).

PJ

Απαντήθηκε 14/04/2009 στις 16:01
πηγή χρήστη

ψήφοι
0

Αν πρόκειται να διδάξουν μεγάλη O τουλάχιστον να εξηγήσει ότι περιγράφει πώς ο χρόνος για έναν αλγόριθμο ζυγαριά με μεγαλύτερες εισροές - αυτό δεν σημαίνει ότι ένας αλγόριθμος θα χρειαστεί λιγότερο χρόνο.
Ως παράδειγμα, κτίριο πυραμίδες είναι O (n), ενώ διαλογή φωτογραφίες από αυτούς είναι O (n ln n) στην καλύτερη περίπτωση. Έτσι είναι πιο γρήγορο να χτίσει ένα άλλο πυραμίδα από τακτοποιήσετε ασφαλίσει τις διακοπές σας.

Οι φοιτητές πρέπει να έχουν μια ιδέα για το πόσο καιρό μια λειτουργία σε μητρώο, στη μνήμη cache, στην κύρια μνήμη, στο δίσκο, για το καθαρό παίρνει. Πολλοί διδάσκονται μόνο στις γλώσσες πολύ υψηλό επίπεδο δεν έχουν καμία έννοια.

(Αυτό ήταν ένα σχόλιο που κάποιος ήθελε να συζητήσει)

Απαντήθηκε 14/04/2009 στις 18:16
πηγή χρήστη

ψήφοι
1

Προσπάθεια για χαμηλή σύζευξη, υψηλή συνοχή .

χαμηλή σύζευξη, υψηλή συνοχή http://www.codeodor.com/images/from_spaghetti_code_to_better_code.jpg

(Έκλεψα αυτή την εικόνα από την ιστοσελίδα συνδέονται παραπάνω)

Απαντήθηκε 25/08/2009 στις 19:08
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more