Ngoài mấy cái mọi người đã đề cập, bên phần mềm còn học:
1. Kiến trúc phần mềm, mô hình hóa bằng các sơ đồ UML, document.
2. Mẫu thiết kế.
Nói chung học về cả quá trình xây dựng phần mềm: phân tích yêu cầu, thiết kế, xây dựng, kiểm thử, vận hành, bảo trì, quản lý ... Hướng tới xây dựng phần mềm có kiến trúc phù hợp và có khả năng bảo trì, mở rộng, ...
Style code của người theo AI và code của kỹ sư phần mềm thường khác 1 trời 1 vực vì 2 yêu cầu khác nhau

. Những model AI thường được người làm AI làm ra trước, kỹ sư phần mềm mới dựa vào triển khai đó làm lại sao cho phù hợp với nhu cầu.
Còn muốn làm AI thì học toán phải mạnh vào, code làm quen thì cứ mấy cái app có quy trình như: cào dữ liệu từ web abcd, xử lý dữ liệu, train model với dữ liệu đó, trực quan hóa dữ liệu, viết 1 cái giao diện chứa tất cả quy trình đó. Vừa nắm được mấy cái cơ bản của code, vừa liên quan tới AI.
Còn competitive programming, nếu tới giai đoạn đi làm rồi, thì chủ yếu học để phỏng vấn, hoặc nếu có đam mê thì cày. Còn không thì đừng đâm đầu vô nhiều, học cp nhiều mà không có hứng thú, mục tiêu rõ ràng thì thành ra hại người