Chuyển đến nội dung chính

Các môn chuyên ngành cần học bù khi chuyển sang CS

Gần đây có một số bạn nhắn tin hỏi tôi về chuyện chuyển ngành sang CS và tìm thực tập. Tôi nhận thấy ngành đại học của các bạn thường là Toán, Thống kê, EE, v.v., và muốn chuyển sang CS khi học thạc sĩ, tốt nhất là lấy được một bằng CS (MSCS, MCS, v.v.).

Bài viết này sẽ bàn về những môn chuyên ngành cần học bù, từ góc độ chuyển ngành để nộp hồ sơ MSCS (lấy chương trình đại học của UIUC làm ví dụ).

Ngôn ngữ lập trình​

Như mọi người đều biết, sinh viên ngành máy tính về cơ bản đều biết ít nhất một ngôn ngữ mà máy có thể thực thi, như C++, C, Java, v.v. Vì vậy khi chuyển ngành, bạn có thể bắt đầu bằng một môn C++/Java. Môn Java: CS 125 - Intro to Computer Science

Các môn chuyên ngành​

Ngành máy tính có rất nhiều môn chuyên ngành như cơ sở dữ liệu, mạng máy tính, hệ điều hành, kiến trúc máy tính, cấu trúc dữ liệu, tính toán song song, kỹ thuật phần mềm, học máy, v.v. Dưới đây tôi sẽ nói từ góc độ nộp hồ sơ xem những môn nào bắt buộc phải học và thật sự hữu ích.

Tóm tắt một câu: cơ sở dữ liệu + mạng máy tính + hệ điều hành + cấu trúc dữ liệu/thuật toán

Cấu trúc dữ liệu: CS 225 - Data Structures (học xong có thể giải bài thuật toán thành thạo) Cơ sở dữ liệu: CS 411 - Database Systems (học xong có thể dùng MySQL thành thạo và nắm rõ các kiến thức như index của MySQL, hoặc tự xây dựng một cơ sở dữ liệu từ con số 0) Mạng máy tính: CS 438 - Communication Networks (học xong có thể hiểu điều gì xảy ra phía sau khi bạn truy cập một địa chỉ web trên trình duyệt) Hệ điều hành: CS 423 - Operating Systems Design (học xong nắm được sự khác nhau giữa tiến trình và luồng, và có thể xử lý thành thạo các lỗi liên quan đến C++ và bộ nhớ)

Nếu còn dư sức: (các môn dưới đây là tùy chọn, có thời gian thì học, không có thì thôi) Kiến trúc máy tính: CS 233 - Computer Architecture (học xong hiểu được CPU và các bộ phận khác của máy tính tương tác với nhau như thế nào) Kỹ thuật phần mềm: CS 427 - Software Engineering I (có thể xây dựng một dự án thật sự đưa vào vận hành) Trình biên dịch: CS 426 - Compiler Construction (tự làm một trình biên dịch đơn giản) CS 425 - Distributed Systems (hiện thực một hệ lưu trữ key-value phân tán)