컴퓨터 과학 대 소프트웨어 공학-당신에게 가장 적합한 전공은 무엇입니까?

안녕 모두들! 제 이름은 YK이고 현재 구독자 20 만 명 이상을 보유한 프로그래밍 교육 유튜브 채널 인 CS Dojo를 운영하고 있습니다. 저는 또한 이전에 Google에서 소프트웨어 개발자였습니다.

내 청중이 내게 묻는 가장 일반적인 두 가지 질문은 다음과 같습니다.

"컴퓨터 과학과 소프트웨어 공학 전공의 차이점은 무엇입니까?"

과…

"소프트웨어 엔지니어가 되려면 컴퓨터 과학 또는 소프트웨어 엔지니어링을 선택해야합니까?"

이 기사에서 나는 이것에 답하고 이러한 전공에 대한 내 자신의 빠른 분석을 제공 할 것입니다.

이 두 가지 전공에 대한 간략한 개요

  • 컴퓨터 과학은 주로 이론 및 수학적 관점에서 컴퓨터가 작동하는 방식에 대한 연구입니다.
  • 수학, 논리를 좋아하거나 인공 지능, 기계 학습, 보안 또는 그래픽과 같은 CS의 전문 분야에 들어가고 싶다면 컴퓨터 과학을 선택해야합니다.
  • 소프트웨어 엔지니어링은 프로젝트 관리, 품질 보증 및 소프트웨어 테스트와 같은 주제를 포함하여 소프트웨어 시스템이 구축되는 방법에 대한 연구입니다.
  • 실습 방식에 더 관심이 있고 소프트웨어를 구축하고 유지하는 방법의 전체 수명주기를 배우고 싶다면 소프트웨어 엔지니어링을 선택해야합니다.
  • 컴퓨터 과학과 소프트웨어 엔지니어링 모두 프로그래밍과 컴퓨터 과학의 기초를 가르치므로 둘 중 하나를 선택하여 소프트웨어 개발자가 될 수 있습니다.

컴퓨터 과학과 소프트웨어 공학 전공의 차이점을 이해하기 위해 캐나다 워털루 대학교에서 각각의 커리큘럼을 살펴 보겠습니다.

저는이를 위해 University of Waterloo를 선택했습니다. 북미 최고의 컴퓨터 과학 프로그램 중 하나이기 때문입니다.

취업 전망

먼저 각 프로그램을 통해 얻을 수있는 직업과 인턴십의 종류를 비교해 봅시다.

고맙게도 University of Waterloo의 웹 사이트는 몇 가지 예를 제공합니다.

각 전공에 대해 졸업생이 보유한 일부 직함과 그들이 일하는 곳은 다음과 같습니다.

컴퓨터 과학

  • 웹 개발자 / 아키텍트, The Steele Group
  • 프로그래머, Harry Rosen Inc.
  • 모바일 / 클라우드 개발자, Clearbridge Associates Limited
  • 소프트웨어 공학, General Dynamics Canada
  • 소프트웨어 개발 엔지니어링, Microsoft
  • 애자일 엔지니어, Pivotal Labs
  • Canadian Tire Corporation 비즈니스 분석가
  • Google Developer Advocate
  • Dropbox 제품 관리자

소프트웨어 공학

  • 소프트웨어 개발자, Tagged Inc
  • 소프트웨어 개발자, IBM 캐나다
  • Arius Software Corporation 소프트웨어 관리자
  • 소프트웨어 엔지니어, VistaPrint USA
  • Harris Corporation 소프트웨어 엔지니어
  • Accenture Inc. 소프트웨어 개발자
  • 기술 제품 관리자 — 소프트웨어 설계 및 개발, NexJ Systems Inc
  • 컨설턴트, PureFacts 금융 솔루션
  • 구현 컨설턴트, Desire2Learn

보시다시피, 얻을 수있는 직업 유형에는 큰 차이가 없습니다.

컴퓨터 과학 또는 소프트웨어 공학 학위를 취득한 후 가장 일반적인 직업 졸업생은 소프트웨어 개발자 또는 소프트웨어 엔지니어입니다.

제품 관리자, QA 분석가 및 기술 컨설턴트와 같은 기타 관련 옵션도 있습니다. 옵션은 특정 기술 세트에 따라 다릅니다.

1 학년 과정 :

이제 각 프로그램에 필요한 과정을 살펴 보겠습니다. 먼저 첫해에 수강해야하는 몇 가지 과정을 비교해 보겠습니다.

컴퓨터 과학

  • CS 135 — 기능적 프로그램 설계
  • CS 136 — 알고리즘 설계 및 데이터 추상화
  • MATH 135 — 대수
  • 수학 136 — 선형 대수 1
  • 수학 137 — 미적분 1
  • 수학 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 조합론 입문
  • STAT 230 확률
  • STAT 231 통계
  • CS 240 데이터 구조 및 데이터 관리
  • CS 241 순차 프로그램의 기초
  • CS 245 논리 및 계산
  • CS 246 객체 지향 소프트웨어 개발 <-소프트웨어 엔지니어링 전공에는 필요하지 않음
  • CS 251 컴퓨터 구성 및 디자인
  • CS 341 알고리즘
  • CS 350 운영 체제
  • 또한 여러 컴퓨터 과학 선택 과목

소프트웨어 공학:

  • 엔지니어를위한 CHE 102 화학
  • ECE 222 디지털 컴퓨터 (조립 언어 포함)
  • ECE 358 컴퓨터 네트워크
  • MATH 213 소프트웨어 엔지니어를위한 고급 수학
  • MATH 239 조합론 입문
  • STAT 206 소프트웨어 엔지니어링 통계
  • MSCI 261 공학 경제학 : 엔지니어를위한 재무 관리
  • CS 241 순차 프로그램의 기초
  • CS 240 데이터 구조 및 데이터 관리
  • CS 247 소프트웨어 엔지니어링 원칙 <-컴퓨터 과학 전공자에게는 필요하지 않음
  • CS 341 알고리즘
  • CS 349 사용자 인터페이스 <-컴퓨터 과학 전공자에게는 필요하지 않음
  • CS 343 동시 및 병렬 프로그래밍 <-컴퓨터 과학 전공에는 필요하지 않음
  • CS 348 데이터베이스 관리 소개
  • SE 212 논리 및 계산
  • SE 350 운영 체제
  • SE 465 소프트웨어 테스트 및 품질 보증
  • SE 464 소프트웨어 설계 및 아키텍처
  • SE 463 소프트웨어 요구 사항 사양 및 분석
  • SE 490 디자인 프로젝트
  • 또한 몇 가지 컴퓨터 과학 및 전기 공학 선택 과목

여기서 소화 할 정보를 많이주었습니다. 그러나 여기에 내 요약이 있습니다.

수학 및 통계의 요구 사항과 관련하여 컴퓨터 과학과 소프트웨어 공학은 거의 동일합니다. 조합론, 확률 및 통계를 다룹니다.

핵심 컴퓨터 과학 요구 사항은 알고리즘, 데이터 구조 및 운영 체제에 이르기까지 유사합니다.

주요 차이점은 다음과 같습니다.

  • 소프트웨어 엔지니어링 에는 소프트웨어 테스트, 설계 및 소프트웨어 요구 사항 사양과 같은 전기 엔지니어링 및 소프트웨어 엔지니어링 기초에 더 많은 요구 사항이 있습니다.
  • 컴퓨터 과학 은 고급 컴퓨터 과학 과정에서 더 많은 선택 과목을 허용합니다. 보안, 소프트웨어 엔지니어링 기초, 컴퓨터 비전, 기계 학습 및 데이터베이스 관리와 같은 광범위한 주제에서 선택할 수 있습니다.

그렇다면 어떤 전공을 선택해야합니까?

나는 그것이 주로 당신의 선호에 달려 있다고 생각합니다. 요컨대 :

  • 수학, 논리를 좋아하거나 인공 지능, 기계 학습, 보안 또는 그래픽과 같은 CS의 전문 분야에 들어가고 싶다면 컴퓨터 과학을 선택해야합니다.
  • 실습 방식에 더 관심이 있고 소프트웨어를 구축하고 유지하는 방법의 전체 수명주기를 배우려면 소프트웨어 엔지니어링을 선택해야합니다.

하지만 잠깐만 요. 그렇다면 그것은 무엇입니까? 소프트웨어 엔지니어가되고 싶다면 어느 전공이 더 낫습니까?

여기 내 의견이 있습니다. 이 특정 대학 (워털루 대학교)에서 이러한 특정 프로그램 요구 사항을 충족하는 컴퓨터 과학은 소프트웨어 엔지니어가 되고자하는 경우 더 나은 전공입니다.

간단하게하기 위해 북미에서 소프트웨어 엔지니어로서 가장 높은 급여를받는 일자리 (~ $ 100,000 USD / 년)를 원한다고 가정 해 보겠습니다. 이러한 직업은 일반적으로 대규모 소프트웨어 회사 (예 : Microsoft, Google, Amazon 등) 또는 중간 규모의 고성장 회사 (예 : Dropbox, Lyft, Snapchat, Pinterest 등)에서 이루어집니다.

일반적으로 소프트웨어 엔지니어 후보자에서 찾는 것은 데이터 구조 및 알고리즘을 포함한 컴퓨터 과학 기초뿐만 아니라 견고한 코드를 작성하고 흥미로운 프로젝트를 구축하는 능력입니다.

이 기술을 키우는 가장 좋은 방법은 컴퓨터 과학 기초를 빠르게 배우고 문제 해결과 코드 작성을 연습하는 데 시간을 보내는 것입니다.

소프트웨어 공학 커리큘럼과 공학 학생들이 일반적으로 얼마나 바쁜 경향이 있는지에 따라 컴퓨터 과학보다 소프트웨어 공학으로 이것을하는 것이 더 어려울 것이라고 생각합니다.

이 특정 컴퓨터 과학 프로그램의 또 다른 이점은 더 많은 컴퓨터 과학 선택 과목을 허용한다는 것입니다. 구직 시장의 수요에 따라 코스를 조정할 수 있기 때문에 이것도 좋습니다. 예를 들어 모바일 앱 개발이 필요한 경우이를 배울 수 있습니다. 병렬 컴퓨팅이 필요하다면 대신 그것에 집중할 수 있습니다.

소프트웨어 엔지니어링 기초 (프로젝트 관리, 디자인, 테스트 등)를 배우는 데 몇 가지 이점이 있다고 확신합니다. 그러나 저는 개인적으로 미리 정의 된 기술 세트에 대한 유연성을 선호합니다. 그래서 저는 컴퓨터 과학이이 특별한 커리큘럼을 가지고 소프트웨어 엔지니어가되기에 더 나은 전공이라고 생각합니다.

물론 그것은 제 의견 일 뿐이며 이것은 단지 하나의 특정 대학 일뿐입니다. 컴퓨터 과학이나 소프트웨어 공학을 전공했다면 여러분의 의견과 경험에 대해 듣고 싶습니다. 아래 댓글로 알려주세요.

몇 가지 참고 사항

참고 1 : 대학마다이 두 전공에 대한 요구 사항이 다릅니다. 이 기사는 좋은 출발점이되어야하지만, 관심있는 대학의 프로그램 요구 사항을 살펴보아야합니다.

참고 2 : 일부 대학은 소프트웨어 공학 전공도 없습니다. 예를 들어, 밴쿠버의 브리티시 컬럼비아 대학교는 컴퓨터 과학 및 컴퓨터 공학 학위를 가지고 있지만 소프트웨어 공학은 없습니다. 그러나 그들은 컴퓨터 공학뿐만 ​​아니라 컴퓨터 과학 프로그램 내에서 소프트웨어 공학 집중력을 가지고 있습니다.

관심있는 대학에 소프트웨어 공학 전공이 없다면 소프트웨어 개발자가되고 싶다면 컴퓨터 과학과 함께 갈 것입니다. 컴퓨터 공학은 컴퓨터 과학이나 소프트웨어 공학보다 하드웨어에 더 중점을 두므로 일반적인 소프트웨어 개발자의 업무와 직접적으로 관련이 없습니다.

그리고 내가 사용한 주요 소스는 다음과 같습니다.

  • 워털루의 컴퓨터 과학
  • Waterloo의 소프트웨어 엔지니어링

읽어 주셔서 감사합니다. 대학과 전공을 선택해 주셔서 감사합니다! ?