วิทยาการคอมพิวเตอร์ VS วิศวกรรมซอฟต์แวร์ - สาขาไหนดีที่สุดสำหรับคุณ?

เฮ้ทุกคน! ฉันชื่อ YK ปัจจุบันใช้งาน CS Dojo ซึ่งเป็นช่อง YouTube เพื่อการศึกษาด้านการเขียนโปรแกรมที่มีผู้ติดตาม 200,000 คน ฉันเคยเป็นนักพัฒนาซอฟต์แวร์ของ Google มาก่อน

คำถามที่พบบ่อยที่สุดสองข้อที่ผู้ชมถามฉันคือ:

“ สาขาวิชาวิทยาศาสตร์คอมพิวเตอร์และวิศวกรรมซอฟต์แวร์แตกต่างกันอย่างไร”

และ…

“ ฉันควรเลือกวิทยาศาสตร์คอมพิวเตอร์หรือวิศวกรรมซอฟต์แวร์ถ้าฉันต้องการเป็นวิศวกรซอฟต์แวร์”

ในบทความนี้ฉันจะตอบคำถามนี้และให้การวิเคราะห์อย่างรวดเร็วเกี่ยวกับสาขาวิชาเหล่านี้

ภาพรวมโดยย่อของสองวิชาเอกนี้

  • วิทยาการคอมพิวเตอร์เป็นการศึกษาว่าคอมพิวเตอร์ทำงานอย่างไรโดยส่วนใหญ่มาจากมุมมองทางทฤษฎีและทางคณิตศาสตร์
  • คุณควรเลือกวิทยาการคอมพิวเตอร์หากคุณชอบคณิตศาสตร์ตรรกะหรือหากคุณต้องการเข้าสู่สาขาเฉพาะทางด้าน CS เช่นปัญญาประดิษฐ์การเรียนรู้ของเครื่องความปลอดภัยหรือกราฟิก
  • วิศวกรรมซอฟต์แวร์คือการศึกษาวิธีสร้างระบบซอฟต์แวร์รวมถึงหัวข้อต่างๆเช่นการจัดการโครงการการประกันคุณภาพและการทดสอบซอฟต์แวร์
  • คุณควรเลือกวิศวกรรมซอฟต์แวร์หากคุณสนใจแนวทางปฏิบัติจริงและหากคุณต้องการเรียนรู้วงจรชีวิตโดยรวมของการสร้างและบำรุงรักษาซอฟต์แวร์
  • ทั้งวิทยาศาสตร์คอมพิวเตอร์และวิศวกรรมซอฟต์แวร์สอนพื้นฐานของการเขียนโปรแกรมและวิทยาศาสตร์คอมพิวเตอร์ดังนั้นคุณสามารถเลือกคนใดคนหนึ่งเพื่อเป็นนักพัฒนาซอฟต์แวร์

เพื่อให้เข้าใจถึงความแตกต่างระหว่างสาขาวิชาวิทยาศาสตร์คอมพิวเตอร์และวิศวกรรมซอฟต์แวร์ลองมาดูหลักสูตรของพวกเขาที่ University of Waterloo ในแคนาดา

ฉันเลือกมหาวิทยาลัยวอเตอร์ลูเพราะเป็นหนึ่งในโปรแกรมวิทยาศาสตร์คอมพิวเตอร์ที่ดีที่สุดในอเมริกาเหนือ

โอกาสในการทำงาน

ก่อนอื่นเรามาเปรียบเทียบประเภทของงานและการฝึกงานที่คุณจะได้รับจากแต่ละโปรแกรม

โชคดีที่เว็บไซต์ของ University of Waterloo มีตัวอย่างมากมาย

สำหรับแต่ละวิชาเอกนี่คือบางส่วนของชื่อเรื่องศิษย์เก่าและสถานที่ทำงาน:

วิทยาศาสตร์คอมพิวเตอร์

  • นักพัฒนาเว็บ / สถาปนิก The Steele Group
  • โปรแกรมเมอร์ Harry Rosen Inc.
  • นักพัฒนามือถือ / คลาวด์ Clearbridge Associates Limited
  • วิศวกรรมซอฟต์แวร์ General Dynamics Canada
  • วิศวกรรมการพัฒนาซอฟต์แวร์ไมโครซอฟต์
  • Agile Engineer, Pivotal Labs
  • นักวิเคราะห์ธุรกิจ Canadian Tyre Corporation
  • นักพัฒนา Advocate, Google
  • ผู้จัดการผลิตภัณฑ์ Dropbox

วิศวกรรมซอฟต์แวร์

  • นักพัฒนาซอฟต์แวร์ Tagged Inc.
  • นักพัฒนาซอฟต์แวร์ IBM Canada
  • ผู้จัดการซอฟต์แวร์ Arius Software Corporation
  • วิศวกรซอฟต์แวร์ VistaPrint USA
  • วิศวกรซอฟต์แวร์ Harris Corporation
  • นักพัฒนาซอฟต์แวร์ Accenture Inc.
  • ผู้จัดการผลิตภัณฑ์ด้านเทคนิค - การออกแบบและพัฒนาซอฟต์แวร์ NexJ Systems Inc.
  • ที่ปรึกษา PureFacts Financial Solutions
  • ที่ปรึกษาด้านการนำไปใช้งาน Desire2Learn

อย่างที่คุณเห็นไม่มีความแตกต่างกันมากระหว่างประเภทของงานที่คุณจะได้รับ

ผู้สำเร็จการศึกษาจากงานที่พบมากที่สุดหลังจากได้รับปริญญาวิทยาศาสตร์คอมพิวเตอร์หรือวิศวกรรมซอฟต์แวร์คือ Software Developer หรือ Software Engineer

ยังมีตัวเลือกอื่น ๆ ที่เกี่ยวข้องเช่น Product Manager, QA Analyst และ Technology Consultant ตัวเลือกของคุณจะขึ้นอยู่กับชุดทักษะเฉพาะของคุณ

หลักสูตรปีแรก:

ตอนนี้เรามาดูหลักสูตรที่จำเป็นของแต่ละโปรแกรม ก่อนอื่นเรามาเปรียบเทียบหลักสูตรบางส่วนที่คุณต้องใช้ในปีแรกของคุณ

วิทยาศาสตร์คอมพิวเตอร์

  • CS 135 - การออกแบบโปรแกรมการทำงาน
  • CS 136 - การออกแบบอัลกอริทึมและนามธรรมของข้อมูล
  • MATH 135 - พีชคณิต
  • MATH 136 - พีชคณิตเชิงเส้น 1
  • MATH 137 - แคลคูลัส 1
  • MATH 138 - แคลคูลัส 2
  • บวกวิชาเลือกสองสามอย่าง

วิศวกรรมซอฟต์แวร์

  • CS 137 - หลักการเขียนโปรแกรม
  • CS 138 - การลบล้างข้อมูลและการนำไปใช้งาน
  • MATH 115 - พีชคณิตเชิงเส้นสำหรับวิศวกรรม
  • MATH 117 - แคลคูลัส 1 สำหรับวิศวกรรม
  • MATH 119 - แคลคูลัส 2 สำหรับวิศวกรรม
  • MATH 135 - พีชคณิตสำหรับคณิตศาสตร์เกียรตินิยม
  • ECE 105 - ฟิสิกส์ของวิศวกรรมไฟฟ้า 1
  • ECE 106 - ไฟฟ้าและแม่เหล็ก
  • ECE 124 - วงจรและระบบดิจิทัล
  • ECE 140 - วงจรเชิงเส้น
  • SE 101 - วิธีการทางวิศวกรรมซอฟต์แวร์

อย่างที่คุณเห็นหลักสูตรปีแรกก็ค่อนข้างคล้ายกันเช่นกัน ทั้งสองหลักสูตรครอบคลุมหลักสูตรวิทยาศาสตร์คอมพิวเตอร์ขั้นพื้นฐานบางหลักสูตรและหลักสูตรคณิตศาสตร์สองสามหลักสูตรในพีชคณิตเชิงเส้นและแคลคูลัส

ข้อแตกต่างที่สำคัญประการเดียวคือวิศวกรรมซอฟต์แวร์มีองค์ประกอบทางฟิสิกส์และวิศวกรรมไฟฟ้าเพิ่มเติมในขณะที่วิทยาการคอมพิวเตอร์มีวิชาเลือกเพิ่มเติม

หลักสูตรหลังจากปีแรก:

วิชาบังคับและวิชาเลือกหลังจากปีแรกเป็นอย่างไรบ้าง? ลองดูตัวอย่างต่างๆที่นี่:

วิทยาศาสตร์คอมพิวเตอร์:

  • MATH 239 Introduction to Combinatorics
  • ความน่าจะเป็น STAT 230
  • สถิติ 231
  • CS 240 โครงสร้างข้อมูลและการจัดการข้อมูล
  • CS 241 รากฐานของโปรแกรมตามลำดับ
  • CS 245 ลอจิกและการคำนวณ
  • CS 246 การพัฒนาซอฟต์แวร์เชิงวัตถุ <- ไม่จำเป็นสำหรับสาขาวิชาวิศวกรรมซอฟต์แวร์
  • CS 251 Computer Organization and Design
  • CS 341 อัลกอริทึม
  • ระบบปฏิบัติการ CS 350
  • นอกจากนี้วิชาเลือกวิทยาศาสตร์คอมพิวเตอร์หลายวิชา

วิศวกรรมซอฟต์แวร์:

  • CHE 102 เคมีสำหรับวิศวกร
  • คอมพิวเตอร์ดิจิทัล ECE 222 (รวมภาษาแอสเซมบลี)
  • เครือข่ายคอมพิวเตอร์ ECE 358
  • MATH 213 คณิตศาสตร์ขั้นสูงสำหรับวิศวกรซอฟต์แวร์
  • MATH 239 Introduction to Combinatorics
  • STAT 206 สถิติสำหรับวิศวกรรมซอฟต์แวร์
  • MSCI 261 เศรษฐศาสตร์วิศวกรรม: การจัดการทางการเงินสำหรับวิศวกร
  • CS 241 รากฐานของโปรแกรมตามลำดับ
  • CS 240 โครงสร้างข้อมูลและการจัดการข้อมูล
  • CS 247 หลักการวิศวกรรมซอฟต์แวร์ <- ไม่จำเป็นสำหรับวิชาเอกวิทยาศาสตร์คอมพิวเตอร์
  • CS 341 อัลกอริทึม
  • CS 349 User Interface <- ไม่จำเป็นสำหรับวิชาเอกวิทยาการคอมพิวเตอร์
  • CS 343 การเขียนโปรแกรมพร้อมกันและแบบขนาน <- ไม่จำเป็นสำหรับวิชาเอกวิทยาการคอมพิวเตอร์
  • CS 348 ความรู้เบื้องต้นเกี่ยวกับการจัดการฐานข้อมูล
  • SE 212 ลอจิกและการคำนวณ
  • ระบบปฏิบัติการ SE 350
  • การทดสอบซอฟต์แวร์ SE 465 และการประกันคุณภาพ
  • SE 464 การออกแบบซอฟต์แวร์และสถาปัตยกรรม
  • ข้อกำหนดและการวิเคราะห์ข้อกำหนดของซอฟต์แวร์ SE 463
  • โครงการออกแบบ SE 490
  • นอกจากนี้วิชาเลือกวิทยาศาสตร์คอมพิวเตอร์และวิศวกรรมไฟฟ้าอีกสองสามอย่าง

ฉันให้ข้อมูลมากมายที่จะสรุปที่นี่ แต่นี่คือบทสรุปของฉัน:

เมื่อพูดถึงข้อกำหนดทางคณิตศาสตร์และสถิติวิทยาศาสตร์คอมพิวเตอร์และวิศวกรรมซอฟต์แวร์แทบจะเหมือนกัน ครอบคลุมการคำนวณความน่าจะเป็นและสถิติ

ข้อกำหนดหลักของวิทยาการคอมพิวเตอร์มีความคล้ายคลึงกันเช่นกันโดยครอบคลุมตั้งแต่อัลกอริทึมโครงสร้างข้อมูลและระบบปฏิบัติการ

ความแตกต่างที่สำคัญคือ:

  • วิศวกรรมซอฟต์แวร์มีข้อกำหนดเพิ่มเติมในด้านวิศวกรรมไฟฟ้าและพื้นฐานวิศวกรรมซอฟต์แวร์เช่นการทดสอบซอฟต์แวร์การออกแบบและข้อกำหนดข้อกำหนดซอฟต์แวร์
  • วิทยาการคอมพิวเตอร์เปิดโอกาสให้มีวิชาเลือกมากขึ้นในหลักสูตรวิทยาการคอมพิวเตอร์ระดับสูงขึ้น คุณสามารถเลือกหัวข้อได้หลากหลายเช่นความปลอดภัยพื้นฐานวิศวกรรมซอฟต์แวร์วิสัยทัศน์ของคอมพิวเตอร์การเรียนรู้ของเครื่องและการจัดการฐานข้อมูล

คุณควรเลือกสาขาวิชาใด

ฉันคิดว่าส่วนใหญ่ขึ้นอยู่กับความชอบของคุณ ในระยะสั้น:

  • คุณควรเลือกวิทยาการคอมพิวเตอร์หากคุณชอบคณิตศาสตร์ตรรกะหรือหากคุณต้องการเข้าสู่สาขาเฉพาะทางด้าน CS เช่นปัญญาประดิษฐ์การเรียนรู้ของเครื่องความปลอดภัยหรือกราฟิก
  • คุณควรเลือกวิศวกรรมซอฟต์แวร์หากคุณสนใจแนวทางปฏิบัติจริงและหากคุณต้องการเรียนรู้วงจรชีวิตโดยรวมของวิธีการสร้างและบำรุงรักษาซอฟต์แวร์

แต่เดี๋ยวก่อน - ไหนแล้ว? วิชาเอกไหนดีกว่าถ้าคุณต้องการเป็นวิศวกรซอฟต์แวร์?

นี่คือความคิดเห็นของฉัน ที่มหาวิทยาลัยแห่งนี้โดยเฉพาะ (University of Waterloo) ด้วยชุดข้อกำหนดเฉพาะของโปรแกรมนี้วิทยาการคอมพิวเตอร์เป็นวิชาเอกที่ดีกว่าหากคุณต้องการเป็นวิศวกรซอฟต์แวร์

เพื่อความเรียบง่ายสมมติว่าคุณหวังว่าจะได้งานที่มีรายได้สูงสุด (ประมาณ $ 100,000 USD / ปี) ในฐานะวิศวกรซอฟต์แวร์ในอเมริกาเหนือ โดยทั่วไปงานเหล่านี้จะอยู่ที่ บริษัท ซอฟต์แวร์ขนาดใหญ่ (เช่น Microsoft, Google, Amazon เป็นต้น) หรือใน บริษัท ขนาดกลางที่มีการเติบโตสูง (เช่น Dropbox, Lyft, Snapchat, Pinterest เป็นต้น)

โดยทั่วไปสิ่งที่พวกเขามองหาในผู้สมัครวิศวกรซอฟต์แวร์คือความสามารถในการเขียนโค้ดที่เป็นของแข็งและสร้างโครงการที่น่าสนใจตลอดจนพื้นฐานด้านวิทยาศาสตร์คอมพิวเตอร์รวมถึงโครงสร้างข้อมูลและอัลกอริทึม

ฉันคิดว่าวิธีที่ดีที่สุดในการฝึกฝนชุดทักษะนี้คือการเรียนรู้พื้นฐานวิทยาศาสตร์คอมพิวเตอร์อย่างรวดเร็วและใช้เวลาของคุณเองฝึกฝนการแก้ปัญหาและเขียนโค้ด

จากหลักสูตรสำหรับวิศวกรรมซอฟต์แวร์และพิจารณาจากความยุ่งของนักศึกษาวิศวกรรมโดยทั่วไปฉันคิดว่าการทำเช่นนี้กับวิศวกรรมซอฟต์แวร์จะยากกว่าวิทยาศาสตร์คอมพิวเตอร์

ข้อดีอีกประการหนึ่งของโปรแกรมวิทยาศาสตร์คอมพิวเตอร์โดยเฉพาะนี้คือช่วยให้สามารถเลือกวิชาเลือกวิทยาศาสตร์คอมพิวเตอร์ได้มากขึ้น นี่เป็นสิ่งที่ยอดเยี่ยมเช่นกันเพราะขึ้นอยู่กับความต้องการของตลาดงานคุณจะสามารถปรับหลักสูตรของคุณได้ ตัวอย่างเช่นหากการพัฒนาแอปบนอุปกรณ์เคลื่อนที่เป็นที่ต้องการคุณสามารถเรียนรู้สิ่งนั้นได้ และหากต้องการการประมวลผลแบบขนานคุณสามารถมุ่งเน้นไปที่สิ่งนั้นแทน

ฉันแน่ใจว่ามีประโยชน์ในการเรียนรู้พื้นฐานวิศวกรรมซอฟต์แวร์ (การจัดการโครงการการออกแบบการทดสอบ ฯลฯ ) แต่โดยส่วนตัวแล้วฉันค่อนข้างจะใช้ความยืดหยุ่นมากกว่าชุดทักษะที่กำหนดไว้ล่วงหน้า นั่นเป็นเหตุผลที่ฉันคิดว่าวิทยาการคอมพิวเตอร์เป็นวิชาเอกที่ดีกว่าในการเป็นวิศวกรซอฟต์แวร์ด้วยหลักสูตรเฉพาะนี้

แน่นอนนั่นเป็นเพียงความเห็นของฉันและนี่เป็นเพียงมหาวิทยาลัยแห่งหนึ่งเท่านั้น ฉันชอบที่จะได้ยินเกี่ยวกับความคิดเห็นของคุณและประสบการณ์ของคุณเป็นอย่างไรหากคุณเรียนวิชาเอกวิทยาศาสตร์คอมพิวเตอร์หรือวิศวกรรมซอฟต์แวร์ โปรดแจ้งให้เราทราบในความคิดเห็นด้านล่าง

หมายเหตุเล็กน้อย

หมายเหตุ 1:มหาวิทยาลัยต่างๆมีข้อกำหนดที่แตกต่างกันสำหรับสองสาขาวิชานี้ บทความนี้น่าจะเป็นจุดเริ่มต้นที่ดี แต่คุณยังควรดูข้อกำหนดของโปรแกรมของมหาวิทยาลัยที่คุณสนใจจะเข้าร่วม

หมายเหตุ 2:มหาวิทยาลัยบางแห่งไม่มีวิชาเอกวิศวกรรมซอฟต์แวร์ด้วยซ้ำ ตัวอย่างเช่นมหาวิทยาลัยบริติชโคลัมเบียในแวนคูเวอร์มีปริญญาวิทยาศาสตร์คอมพิวเตอร์และวิศวกรรมคอมพิวเตอร์ แต่ไม่ใช่วิศวกรรมซอฟต์แวร์ แต่พวกเขามีความเข้มข้นทางวิศวกรรมซอฟต์แวร์ในโปรแกรมวิทยาศาสตร์คอมพิวเตอร์ของพวกเขาเช่นเดียวกับในวิศวกรรมคอมพิวเตอร์

ถ้ามหาวิทยาลัยที่คุณสนใจจะไปไม่มีวิชาเอกวิศวกรรมซอฟต์แวร์ฉันจะไปเรียนต่อด้านวิทยาการคอมพิวเตอร์หากคุณต้องการเป็นนักพัฒนาซอฟต์แวร์ วิศวกรรมคอมพิวเตอร์ให้ความสำคัญกับฮาร์ดแวร์มากกว่าวิทยาศาสตร์คอมพิวเตอร์หรือวิศวกรรมซอฟต์แวร์ดังนั้นจึงไม่เกี่ยวข้องโดยตรงกับงานของนักพัฒนาซอฟต์แวร์ทั่วไป

และนี่คือแหล่งข้อมูลหลักที่ฉันใช้:

  • วิทยาการคอมพิวเตอร์ที่วอเตอร์ลู
  • วิศวกรรมซอฟต์แวร์ที่ Waterloo

ขอขอบคุณที่อ่านและขอให้โชคดีในการเลือกมหาวิทยาลัยและสาขาวิชาของคุณ! เหรอ?