Thiết kế và phân tích thuật toán là một trong những trụ cột học thuật của khoa học máy tính, nghiên cứu cách thức hình thành các thuật toán nhằm giải quyết bài toán một cách đúng đắn, hiệu quả và có thể đánh giá được về mặt tính toán. Khác với cách tiếp cận thuần túy lập trình, lĩnh vực này tập trung vào việc trừu tượng hóa bài toán, lựa chọn chiến lược giải phù hợp và phân tích chi phí của thuật toán dưới các ràng buộc về thời gian và bộ nhớ.