Algoritme
Algoritme bisa diklasifikasikan berdasarkan jumlah waktu yang dibutuhkan untuk selesai dibandingkan dengan ukuran inputnya. Ada berbagai varietas: beberapa algoritme selesai dalam waktu linear relatif terhadap ukuran input, beberapa selesai dalam jumlah waktu yang eksponensial atau lebih buruh, dan beberapa berhenti. Sebagai tambahan, beberapa masalah bisa memiliki berbagai algoritme dengan kompleksitas yang berbeda, sementara permasalahan yang lain bisa saja tidak memiliki algoritme atau tidak diketahui algoritmanya yang efisien. Ada juga pemetaan dari beberapa algoritme terhadap permasalahan lain. Karena itu, lebih cocok untuk mengklasifikasikan permasalahan itu sendiri bukannya algoritme menjadi kelas-kelas yang sama berdasarkan kompleksitas dari kemungkinan algoritme terbaik baginya.
Kunci (kriptografi)
Algoritme enkripsi yang menggunakan kunci yang sama untuk enkripsi dan dekripsi disebut algoritme kunci simetrik. Sedangkan algoritme kunci asimetrik, yang baru ditemukan pada 1970an, menggunakan sepasang kunci. Kunci publik ("public key"), yang digunakan untuk enkripsi, diumumkan kepada publik sedangkan kunci pribadi ("private key") yang digunakan untuk dekripsi hanya disimpan di satu tempat. Kunci pribadi harus dibuat sedemikian rupa sehingga tidak dapat ditebak sekalipun kunci publik diketahui.