Nên học chuyên ngành nào: kỹ thuật phần mềm vs khoa học máy tính

0
106
computer-science-software-engineering
computer-science-software-engineering
Nên học chuyên ngành nào: kỹ thuật phần mềm vs khoa học máy tính
Đánh giá bài viết này

Xin chào mọi người! Tên tôi là YK, hiện đang quản lí CS Dojo, một kênh YouTube giáo dục lập trình với hơn 200.000 người đăng ký. Tôi cũng từng là một nhà phát triển phần mềm tại Google.

Trong quá trình làm ra các video, tôi thường được hỏi hai câu hỏi phổ biến:

“Sự khác biệt giữa khoa học máy tính và phần mềm kỹ thuật phần mềm là gì?”

Và …

“Tôi có nên chọn khoa học máy tính hay kỹ thuật phần mềm để trở thành một kỹ sư phần mềm?”

Trong bài viết này, tôi sẽ trả lời các câu hỏi trên và đưa cho bạn phân tích nhanh về những chuyên ngành này.

Tổng quan nhanh về hai chuyên ngành này

Khoa học máy tính là nghiên cứu về cách các máy tính hoạt động, chủ yếu từ quan điểm lý thuyết và toán học.

Bạn nên chọn Khoa học máy tính nếu bạn thích toán học, logic hoặc nếu bạn muốn tham gia vào một lĩnh vực chuyên biệt trong CS chẳng hạn như trí tuệ nhân tạo, học máy, an ninh, hoặc đồ họa.

Kỹ thuật phần mềm là nghiên cứu về cách thức các hệ thống phần mềm được xây dựng, bao gồm các chủ đề như quản lý dự án, đảm bảo chất lượng và kiểm tra phần mềm.

Bạn nên chọn kỹ thuật phần mềm nếu bạn quan tâm nhiều hơn đến cách thực hành và nếu bạn muốn tìm hiểu chu kỳ sống chung của phần mềm được xây dựng và duy trì như thế nào.

Cả Khoa học máy tính và kỹ thuật phần mềm đều dạy các nguyên tắc cơ bản của lập trình và khoa học máy tính, vì vậy bạn vẫn có thể chọn một trong hai để trở thành một nhà phát triển phần mềm.

Để hiểu được sự khác biệt giữa khoa học máy tính và kỹ thuật phần mềm, chúng ta hãy cùng xem chương trình giảng dạy của họ tại Đại học Waterloo ở Canada.

Tôi đã chọn Đại học Waterloo vì nó có một trong những chương trình khoa học máy tính tốt nhất ở Bắc Mỹ

Triển vọng nghề nghiệp

Đầu tiên chúng ta hãy so sánh các loại công việc và thực tập mà bạn có thể có được thông qua mỗi chương trình.

Rất may, trang web của Đại học Waterloo có cung cấp một số ví dụ cụ thể.

Khoa học máy tính

  • Nhà phát triển Web / Kiến trúc sư
  • Lập trình viên
  • Nhà phát triển điện thoại di động / đám mây
  • Kỹ thuật Phần mềm
  • Kỹ thuật phát triển phần mềm
  • Kỹ sư Agile
  • Chuyên viên Phân tích Kinh doanh
  • Quản lý sản phẩm
  • Kỹ thuật phần mềm
  • Nhà phát triển phần mềm
  • Quản lý Phần mềm
  • Kỹ sư phần mềm
  • Quản lý Sản phẩm Kỹ thuật
  • Tư vấn, Giải pháp Tài chính
  • Tư vấn thực hiện

Như bạn thấy, không có sự khác biệt lớn giữa các loại công việc mà bạn có thể có được.

Đa phần các sinh viên sau khi tốt nghiệp đều làm Software Developer hoặc Software Engineer

Cũng có những lựa chọn liên quan khác như quản lý sản phẩm, nhà phân tích QA và tư vấn công nghệ. Nó hoàn toàn tùy thuộc vào khả năng của bạn.

Các khóa học năm thứ nhất:

Bây giờ, chúng ta hãy xem các khóa học bắt buộc của mỗi chương trình. Trước tiên chúng ta hãy so sánh một số các khóa học bạn cần phải thực hiện trong năm đầu tiên của bạn.

  • Khoa học máy tính

CS 135 – Thiết kế các chương trình chức năng

CS 136 – Thuật toán và khai thác dữ liệu

MATH 135 – Đại số

MATH 136 – Đại số tuyến tính 1

MATH 137 – Calculus 1

MATH 138 – Calculus 2

Cộng thêm một vài môn phụ

  • Kỹ thuật phần mềm

CS 137 – Nguyên tắc lập trình

CS 138 – Thu thập và thực hiện dữ liệu

MATH 115 – Đại số tuyến tính cho kỹ thuật

MATH 117 – Calculus 1 cho Kỹ thuật

MATH 119 – Calculus 2 cho Kỹ thuật

ECE 105 – Vật lý Kỹ thuật Điện 1

ECE 106 – Điện và Từ

ECE 124 – Các mạch và hệ thống số

ECE 140 – Mạch tuyến tính

SE 101 – Phương pháp kỹ thuật Phần mềm

 

Như bạn thấy, các khóa học năm đầu cũng tương tự như vậy. Cả hai đều bao gồm một vài khóa học về khoa học máy tính cơ bản, và một vài môn toán trong đại số tuyến tính và tính toán.

Sự khác biệt lớn duy nhất là phần mềm Kỹ thuật có thêm vật lý và các thành phần kỹ thuật điện, trong khi Khoa học Máy tính có thêm một số môn tự chọn.

Các khoá học sau năm đầu tiên:

Các khóa học bắt buộc và tự chọn sau năm đầu tiên như thế nào? Chúng ta hãy xem xét một số ví dụ ở đây:

Khoa học máy tính:

MATH 239 Giới thiệu tổng hợp

STAT 230 Xác suất

STAT 231 Thống kê

CS 240 Cấu trúc dữ liệu và Quản lý dữ liệu

CS 241 Các cơ sở của các chương trình tuần tự

CS 245 Logic và Tính toán

CS 246 Phát triển phần mềm hướng đối tượng <- không bắt buộc đối với các chuyên ngành Kỹ thuật phần mềm

CS 251 Tổ chức và thiết kế Máy tính

Thuật toán CS 341

CS 350 Hệ điều hành

Thêm vào đó, một số môn Khoa học máy tính

Kỹ thuật phần mềm:

CHE 102 Hóa học cho kỹ sư

ECE 222 Máy vi tính số (bao gồm ngôn ngữ lắp ráp)

ECE 358 Mạng máy tính

MATH 213 Toán cao cấp cho kỹ sư phần mềm

MATH 239 Giới thiệu tổng hợp

STAT 206 Thống kê cho Kỹ thuật Phần mềm

MSCI 261 Kinh tế Kỹ thuật: Quản lý Tài chính cho Kỹ sư

CS 241 Các cơ sở của các chương trình tuần tự

CS 240 Cấu trúc dữ liệu và Quản lý dữ liệu

CS 247 Nguyên tắc Kỹ thuật Phần mềm <- không bắt buộc đối với các chuyên ngành Khoa học máy tính

Thuật toán CS 341

Giao diện Người dùng CS 349 <- không bắt buộc đối với các chuyên ngành Khoa học máy tính

CS 343 Lập trình song song và song song <- không bắt buộc đối với các chuyên ngành Khoa học máy tính

CS 348 Giới thiệu về Quản lý Cơ sở dữ liệu

SE 212 Logic và Tính toán

SE 350 Hệ điều hành

SE 465 Kiểm thử phần mềm và đảm bảo chất lượng

SE 464 Thiết kế và Kiến trúc phần mềm

SE 463 Yêu cầu phần mềm Yêu cầu kỹ thuật và phân tích

Dự án Thiết kế SE 490

Thêm vào đó, một vài môn khoa học máy tính và các môn kỹ thuật điện

Tôi đã cung cấp cho bạn rất nhiều thông tin để tiêu hóa ở đây. Nhưng ngắn gọn thì:

Khi nói đến các yêu cầu trong toán học và thống kê, Khoa học máy tính và Kỹ thuật phần mềm gần như giống hệt nhau. Chúng bao gồm tổ hợp, xác suất và thống kê.

Các yêu cầu về khoa học máy tính cốt lõi cũng tương tự nhau, bao gồm các thuật toán, cấu trúc dữ liệu và các hệ điều hành.

Sự khác biệt chính là:

  • Kỹ thuật phần mềm có nhiều yêu cầu hơn về kỹ thuật điện và các nguyên tắc cơ bản về phần mềm, chẳng hạn như kiểm tra phần mềm, thiết kế và yêu cầu phần mềm.
  • Khoa học Máy tính cho phép nhiều môn tự chọn trong các khóa học khoa học máy tính cấp cao hơn. Bạn có thể chọn từ một loạt các chủ đề như an ninh, nguyên tắc cơ bản về công nghệ phần mềm, tầm nhìn máy tính, học máy và quản lý cơ sở dữ liệu.

Vậy, bạn nên chọn loại nào?

Tôi nghĩ rằng nó chủ yếu phụ thuộc vào sở thích của bạn. Nói ngắn gọn:

Bạn nên chọn Khoa học máy tính nếu bạn thích toán học, logic, hoặc nếu bạn muốn tham gia vào một lĩnh vực chuyên biệt trong CS chẳng hạn như trí tuệ nhân tạo, học máy, an ninh hoặc đồ họa.

Bạn nên chọn Kỹ thuật phần mềm nếu bạn quan tâm nhiều hơn đến cách tiếp cận thực hành và nếu bạn muốn tìm hiểu chu kỳ sống chung của phần mềm được xây dựng và duy trì như thế nào.

Nhưng ngành nào thì thích hợp cho software engineer?

Thông thường, các công ty thường tìm kiếm trong một ứng cử viên kỹ sư phần mềm là khả năng viết code tốt và xây dựng các dự án thú vị, cũng như những nguyên tắc cơ bản về khoa học máy tính bao gồm các cấu trúc dữ liệu và thuật toán.

Tôi nghĩ cách tốt nhất để trau dồi kỹ năng này là nhanh chóng học thật vững về nguyên tắc cơ bản về máy tính, và dành thời gian riêng của mình để thực hành viết code.

Dựa trên chương trình học cho kỹ thuật phần mềm và mức độ bận rộn của sinh viên, tôi nghĩ rằng sẽ khó thực hiện việc này nếu bạn theo học kỹ thuật phần mềm hơn là khoa học máy tính.

Một lợi ích khác của chương trình khoa học máy tính này là nó cho phép nhiều môn tự chọn hơn. Điều này khá tuyệt vời vì tùy thuộc vào nhu cầu thị trường lao động, bạn có thể điều chỉnh các khóa học của mình. Ví dụ: nếu phát triển ứng dụng di động, bạn có thể tìm hiểu điều đó. Và nếu tính toán song song là nhu cầu, bạn có thể tập trung vào nó thay cho những khóa khác.

Tôi chắc chắn rằng có một số lợi ích để học các nguyên tắc cơ bản về công nghệ phần mềm (quản lý dự án, thiết kế, thử nghiệm, v.v.). Nhưng tôi cá nhân sẽ linh hoạt hơn đối với các kỹ năng được xác định trước. Đó là lý do tại sao tôi nghĩ rằng khoa học máy tính là một lựa chọn tốt hơn để trở thành một kỹ sư phần mềm.

Tất nhiên, đó chỉ là ý kiến ​​của tôi, và đây nó dựa trên chương trình từ một trường đại học cụ thể. Tôi rất muốn nghe ý kiến ​​của bạn và kinh nghiệm của bạn về hướng chọn chuyên ngành này.

Techtalk via Medium

 

CS 135 – Thiết kế các chương trình chức năng

CS 136 – Thuật toán và khai thác dữ liệu

MATH 135 – Đại số

MATH 136 – Đại số tuyến tính 1

MATH 137 – Calculus 1

MATH 138 – Calculus 2

Cộng thêm một vài môn phụ

 

Kỹ thuật phần mềm

 

CS 137 – Nguyên tắc lập trình

CS 138 – Thu thập và thực hiện dữ liệu

MATH 115 – Đại số tuyến tính cho kỹ thuật

MATH 117 – Calculus 1 cho Kỹ thuật

MATH 119 – Calculus 2 cho Kỹ thuật

ECE 105 – Vật lý Kỹ thuật Điện 1

ECE 106 – Điện và Từ

ECE 124 – Các mạch và hệ thống số

ECE 140 – Mạch tuyến tính

SE 101 – Phương pháp kỹ thuật Phần mềm

 

Như bạn thấy, các khóa học năm đầu cũng tương tự như vậy. Cả hai đều bao gồm một vài khóa học về khoa học máy tính cơ bản, và một vài môn toán trong đại số tuyến tính và tính toán.

 

Sự khác biệt lớn duy nhất là phần mềm Kỹ thuật có thêm vật lý và các thành phần kỹ thuật điện, trong khi Khoa học Máy tính có thêm một số môn tự chọn.

 

Các khoá học sau năm đầu tiên:

 

Các khóa học bắt buộc và tự chọn sau năm đầu tiên như thế nào? Chúng ta hãy xem xét một số ví dụ ở đây:

Khoa học máy tính:

 

MATH 239 Giới thiệu tổng hợp

STAT 230 Xác suất

STAT 231 Thống kê

CS 240 Cấu trúc dữ liệu và Quản lý dữ liệu

CS 241 Các cơ sở của các chương trình tuần tự

CS 245 Logic và Tính toán

CS 246 Phát triển phần mềm hướng đối tượng <- không bắt buộc đối với các chuyên ngành Kỹ thuật phần mềm

CS 251 Tổ chức và thiết kế Máy tính

Thuật toán CS 341

CS 350 Hệ điều hành

Thêm vào đó, một số môn Khoa học máy tính

 

Kỹ thuật phần mềm:

 

CHE 102 Hóa học cho kỹ sư

ECE 222 Máy vi tính số (bao gồm ngôn ngữ lắp ráp)

ECE 358 Mạng máy tính

MATH 213 Toán cao cấp cho kỹ sư phần mềm

MATH 239 Giới thiệu tổng hợp

STAT 206 Thống kê cho Kỹ thuật Phần mềm

MSCI 261 Kinh tế Kỹ thuật: Quản lý Tài chính cho Kỹ sư

CS 241 Các cơ sở của các chương trình tuần tự

CS 240 Cấu trúc dữ liệu và Quản lý dữ liệu

CS 247 Nguyên tắc Kỹ thuật Phần mềm <- không bắt buộc đối với các chuyên ngành Khoa học máy tính

Thuật toán CS 341

Giao diện Người dùng CS 349 <- không bắt buộc đối với các chuyên ngành Khoa học máy tính

CS 343 Lập trình song song và song song <- không bắt buộc đối với các chuyên ngành Khoa học máy tính

CS 348 Giới thiệu về Quản lý Cơ sở dữ liệu

SE 212 Logic và Tính toán

SE 350 Hệ điều hành

SE 465 Kiểm thử phần mềm và đảm bảo chất lượng

SE 464 Thiết kế và Kiến trúc phần mềm

SE 463 Yêu cầu phần mềm Yêu cầu kỹ thuật và phân tích

Dự án Thiết kế SE 490

Thêm vào đó, một vài môn khoa học máy tính và các môn kỹ thuật điện

Tôi đã cung cấp cho bạn rất nhiều thông tin để tiêu hóa ở đây. Nhưng ngắn gọn thì:

Khi nói đến các yêu cầu trong toán học và thống kê, Khoa học máy tính và Kỹ thuật phần mềm gần như giống hệt nhau. Chúng bao gồm tổ hợp, xác suất và thống kê.

Các yêu cầu về khoa học máy tính cốt lõi cũng tương tự nhau, bao gồm các thuật toán, cấu trúc dữ liệu và các hệ điều hành.

Sự khác biệt chính là:

Kỹ thuật phần mềm có nhiều yêu cầu hơn về kỹ thuật điện và các nguyên tắc cơ bản về phần mềm, chẳng hạn như kiểm tra phần mềm, thiết kế và yêu cầu phần mềm.

Khoa học Máy tính cho phép nhiều môn tự chọn trong các khóa học khoa học máy tính cấp cao hơn. Bạn có thể chọn từ một loạt các chủ đề như an ninh, nguyên tắc cơ bản về công nghệ phần mềm, tầm nhìn máy tính, học máy và quản lý cơ sở dữ liệu.

Vậy, bạn nên chọn loại nào?

Tôi nghĩ rằng nó chủ yếu phụ thuộc vào sở thích của bạn. Nói ngắn gọn:

Bạn nên chọn Khoa học máy tính nếu bạn thích toán học, logic, hoặc nếu bạn muốn tham gia vào một lĩnh vực chuyên biệt trong CS chẳng hạn như trí tuệ nhân tạo, học máy, an ninh hoặc đồ họa.

Bạn nên chọn Kỹ thuật phần mềm nếu bạn quan tâm nhiều hơn đến cách tiếp cận thực hành và nếu bạn muốn tìm hiểu chu kỳ sống chung của phần mềm được xây dựng và duy trì như thế nào.

Nhưng ngành nào thì thích hợp cho software engineer?

Thông thường, các công ty thường tìm kiếm trong một ứng cử viên kỹ sư phần mềm là khả năng viết code tốt và xây dựng các dự án thú vị, cũng như những nguyên tắc cơ bản về khoa học máy tính bao gồm các cấu trúc dữ liệu và thuật toán.

Tôi nghĩ cách tốt nhất để trau dồi kỹ năng này là nhanh chóng học thật vững về nguyên tắc cơ bản về máy tính, và dành thời gian riêng của mình để thực hành viết code.

Dựa trên chương trình học cho kỹ thuật phần mềm và mức độ bận rộn của sinh viên, tôi nghĩ rằng sẽ khó thực hiện việc này nếu bạn theo học kỹ thuật phần mềm hơn là khoa học máy tính.

Một lợi ích khác của chương trình khoa học máy tính này là nó cho phép nhiều môn tự chọn hơn. Điều này khá tuyệt vời vì tùy thuộc vào nhu cầu thị trường lao động, bạn có thể điều chỉnh các khóa học của mình. Ví dụ: nếu phát triển ứng dụng di động, bạn có thể tìm hiểu điều đó. Và nếu tính toán song song là nhu cầu, bạn có thể tập trung vào nó thay cho những khóa khác.

Tôi chắc chắn rằng có một số lợi ích để học các nguyên tắc cơ bản về công nghệ phần mềm (quản lý dự án, thiết kế, thử nghiệm, v.v.). Nhưng tôi cá nhân sẽ linh hoạt hơn đối với các kỹ năng được xác định trước. Đó là lý do tại sao tôi nghĩ rằng khoa học máy tính là một lựa chọn tốt hơn để trở thành một kỹ sư phần mềm.

Tất nhiên, đó chỉ là ý kiến ​​của tôi, và đây nó dựa trên chương trình từ một trường đại học cụ thể. Tôi rất muốn nghe ý kiến ​​của bạn và kinh nghiệm của bạn về hướng chọn chuyên ngành này.

Source : aduka via techtalk

LEAVE A REPLY

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.