Lập trình hệ thống là công việc viết những phần mềm cho hệ thống (máy tính). Điểm khác biệt chủ yếu của lập trình hệ thống đối với lập trình ứng dụng là lập trình ứng dụng nhằm viết những phần mềm phục vụ cho người dùng máy tính (ví dụ: chương trình xử lý văn bản), trong khi đó, lập trình hệ thống nhằm xây dựng những phần mềm phục vụ cho phần cứng (hệ thống) máy tính (ví dụ chương trình chống phân mảnh đĩa cứng). Nó cũng đòi hỏi phải có những hiểu biết sâu hơn về phần cứng máy tính.
Cụ thể hơn, trong lập trình hệ thống: