Ο κυρτός προγραμματισμός, μια υποκατηγορία μη γραμμικού προγραμματισμού, είναι ένα είδος προγραμματισμού που γενικεύει και ενοποιεί άλλα είδη, συμπεριλαμβανομένου του γραμμικού προγραμματισμού, των ελαχίστων τετραγώνων και του τετραγωνικού προγραμματισμού. Η έννοια του κυρτού προγραμματισμού προσφέρει υποστήριξη σε μεγάλο αριθμό θεωρητικών και πρακτικών εφαρμογών. Διαθέτει αποτελεσματικούς αλγόριθμους που καθιστούν ωφέλιμο για έναν προγραμματιστή να χρησιμοποιεί και να αναπτύσσει αυτόν τον τύπο προγραμματισμού. Ο κυρτός προγραμματισμός απαιτεί μεγάλη εμπειρία και εξειδίκευση από την πλευρά του προγραμματιστή, καθώς και μια πειθαρχημένη διαδικασία μάθησης. Αν και δεν είναι μια νέα έννοια, εξακολουθεί να χρησιμοποιείται σε πολλούς κλάδους και εφαρμογές που απαιτούν πολύπλοκα και τεχνικά μαθηματικά.
Τρεις αρχές είναι σημαντικές για την εφαρμογή του κυρτού προγραμματισμού: η βελτιστοποίηση, ο αριθμητικός υπολογισμός και η κυρτή ανάλυση. Η βελτιωμένη υπολογιστική ισχύς και οι ανακαλύψεις σε πολύπλοκους αλγόριθμους επέτρεψαν σε επιστήμονες και μαθηματικούς να αναπτύξουν αυτόν τον τύπο προγραμματισμού και να τον χρησιμοποιήσουν για την επίλυση προβλημάτων. Ο κυρτός προγραμματισμός έχει προσφέρει στους χρήστες του ευεργετικά υπολογιστικά εργαλεία που βοηθούν στην επίλυση προβλημάτων ανώτερης κατηγορίας στους τομείς του γραμμικού προγραμματισμού και των ελαχίστων τετραγώνων. Οι μηχανικοί βρήκαν αυτό το είδος προγραμματισμού χρήσιμο για λειτουργίες όπως η επεξεργασία σήματος, ο έλεγχος, ο σχεδιασμός κυκλωμάτων, τα δίκτυα, η επικοινωνία κ.λπ.
Η χρήση κυρτού προγραμματισμού απαιτεί κατανόηση της γραμμικής άλγεβρας, της βελτιστοποίησης και του διανυσματικού λογισμού. Τα κυρτά σύνολα είναι αρκετά κοινά και χρησιμοποιούνται σε αυτού του είδους τον προγραμματισμό. Οι προγραμματιστές χρησιμοποιούν αυτά τα κυρτά σύνολα για να λύσουν ορισμένα προβλήματα βελτιστοποίησης με διανύσματα. Ένα άλλο κοινό στοιχείο αυτού του τύπου προγραμματισμού είναι μια κυρτή συνάρτηση.
Οι εφαρμογές του κυρτού προγραμματισμού είναι κοινές στον τομέα της μικροοικονομίας, ειδικά στον προσδιορισμό του μεγιστοποιημένου κέρδους και της μεγιστοποιημένης προτίμησης των καταναλωτών. Αυτή είναι μια μορφή βελτιστοποίησης και απαιτεί τα πολύπλοκα μαθηματικά που βρίσκονται στον κυρτό προγραμματισμό. Ένα κοινό πρόβλημα που εξετάζεται και λύνεται σε αυτόν τον κλάδο είναι αυτό που ονομάζεται πρόβλημα μαθηματικής βελτιστοποίησης. Ένα τέτοιο πρόβλημα χρησιμοποιεί ένα διάνυσμα για να αναπαραστήσει και να αφαιρέσει τη λήψη της βέλτιστης επιλογής από ένα συγκεκριμένο σύνολο επιλογών.
Ένα άλλο παράδειγμα αυτού του τύπου αφηρημένου προβλήματος που εμφανίζεται σε διαφορετικό κλάδο περιλαμβάνει τη βελτιστοποίηση χαρτοφυλακίου, όπου η καλύτερη επιλογή επένδυσης κεφαλαίου αναζητείται από ένα συγκεκριμένο σύνολο περιουσιακών στοιχείων. Στους υπολογιστές και τον ηλεκτρονικό σχεδιασμό, το μέγεθος της συσκευής είναι ένα άλλο πρόβλημα βελτιστοποίησης, όπου πρέπει να καθοριστεί το καλύτερο μήκος και πλάτος για μια συσκευή, όπως ένα κύκλωμα. Η προσαρμογή δεδομένων, μια άλλη πτυχή που σχετίζεται με τους υπολογιστές και τις ηλεκτρονικές συσκευές, επιδιώκει να βρει το μοντέλο από μια ομάδα πιθανών υποψήφιων μοντέλων που ταιριάζει καλύτερα σε κάποιο είδος παρατηρηθέντων δεδομένων ή πληροφοριών που αποκτήθηκαν προηγουμένως.