본문 바로가기
대학교

컴퓨터공학과는 어떤 학과일까?(예비대학생을 위한 컴퓨터공학과 전공 소개) - 2편(언어별 특징, 커리큘럼, 취업, QnA)

by cleedyios 2023. 1. 7.

안녕하세요. 1편에 이어서 컴퓨터공학과 언어별 특징, 전공 커리큘럼, 총평에 대한 포스팅입니다.


1. 언어별 특징

선요약 : C언어는 기본이고, 거기서 좀 더 공부해서 C++도 하고, 자바는 필수고 거기에 자바 스크립트까지 해주면 더 좋고
그 외에 부수적인 언어도 익혀두면 도움이 되고, 파이썬이 대세니 알아두시면 됩니다. 

근데 사실 C든 자바든 중요한 건 그게 아니라 그 언어로 무언가를 만들어보는 연습이 중요합니다. C는 전공자에게 기본이 되는 언어죠 다른 많은 언어들의 베이스가 됩니다. 난이도는 다소 있지만 속도가 빠르다는 장점이 있고 개발자가 직접 메모리 관리가 필요하다는 단점이 있습니다. OS, 보안, 임베디드 에서 많이 사용됩니다. 

가. C++
성능이 중요한 게임이나 안정성이 중요한 서버 시스템 프로그래밍 등에서 사용됩니다. 기능이 다양하고 성능이 뛰어납니다 C를 계승한 언어이지만 구조상 C와 다른 점이 많고 배우기가 조금 까다롭습니다. 

나. C#
웹, 앱, 윈도우 프로그램까지 개발 가능합니다. 웹 개발할 때는 보통 ASP.NET과 같이 사용을 합니다. 모바일 게임에서도 사용이 되고요 특별히 인기 있지는 않지만 좋은 언어로 평가가 됩니다.

다. 자바 
개발 실무의 기본이 되는 점유율 1위의 언어이고요 비전공자들이 취업 목적으로 배우는 첫 번째 언어입니다. 운영 체제를 가리지 않기 때문에 동일한 프로그램을 윈도우, 리눅스, 맥 모두에서 실행이 가능합니다. 오픈 소스 라이브러리가 풍부하고요 별도의 프로그램이 비사용 메모리를 관리해 줍니다. 생산성 측면에서는 아주 좋죠 근데 코드의 길이가 다소 길고, 장황하다는 단점이 있습니다.

라. 자바스크립트 
활용되는 분야가 아주 많은 언어입니다. 웹을 구성하는 주요 요소 중 하나이고요 자바스크립트 기반의 서버나 게임에도 활용이 가능하고 IOT에서도 활용 가능하다고 합니다. 

마. Python(파이썬)
쉬운 언어의 대표입니다. 코딩이라는 게 뭔지 한번 알아보고 싶으신 비전공자분들은 이 언어를 한번 접해보시는 걸 추천드립니다. C에 비해서 기능은 조금 부족하지만 편리함이라는 막강한 강점을 가지고 있습니다. C나 자바랑 다르게 코드의 실행 결과를 즉시 확인할 수 있기 때문에 컴파일 오류 메시지를 해독할 필요가 없어서 초심자에게 매우 좋습니다. 빅데이터와 머신러닝 분야에서 주로 사용이 되고 앱과 웹에서도 사용이 가능합니다. 물론 파이썬 하나만 가지고 취업하기는 어렵습니다. 

 

2. 전공 커리큘럼 

기초 과목에는 물리, 미적분, 이산수학, 선형대수학, 확률 통계가 있습니다.

프로그래밍 언어는 여러 가지로 나뉘는데요. 4대 주류 언어로는 C, C++ 파이썬, 자바 이렇게 4개로 꼽습니다. 절차 지향 언어, 객체 지향 언어, 4세대 언어, 웹 언어, 데이터베이스 언어, 스마트폰 앱 언어 그 외 언어들이 있습니다. 

가. 문제를 효율적으로 해결하는 방법을 배웁니다. 
자료 구조는 자료를 정리해서 보관하는 구조에 대해서 배우고 알고리즘에서는 문제를 해결하는 절차에 대해서 배웁니다.
사실상 프로그램이라는 게 이 자료 구조와 알고리즘을 합한 개념이라고 생각하시면 됩니다. 

그리고 이 알고리즘을 기술하는 방법이 바로 이 프로그래밍 언어입니다. 
물론 프로그램을 짤 때 자료 구조를 직접 만들지는 않고요 클래스 라이브러리를 활용하거나 DB에 저장하는 게 일반적입니다. 하지만 그런 것을 잘 활용하기 위해서는 당연히 자료 구조를 잘 알아둬야겠죠.

나. 시스템이 만들어지고 동작하는 방법을 배웁니다 
운영체제 과목에서는 운영체제의 종류와 구성 요소 뿐만 아니라 프로세스, 메모리, 파일, 장치 관리 등 시스템의 자원을 효율적으로 관리하는 기법을 배웁니다. 유닉스를 실 사례로 많이 들고요 

컴퓨터 구조 과목에서는 컴퓨터 하드웨어의 구성과 작동 원리에 대해서 배웁니다. 
1940년대 폰 노이만이라는 천재가 어느 날 뚝딱하고 만든 이 구조를 현재까지도 사용하고 있습니다.

데이터베이스 과목에서는 DB 시스템 설계를 위한 DB의 구조와 동작 정규화 방법 트랜잭션 등의 개념을 배웁니다. 

컴파일러 과목이 있고 로그래밍 언어론에서는 프로그래밍 언어들의 문법 특성을 비교합니다. 

네트워크 과목에서는 데이터 통신에 필요한 계층 개념과 필요 기능 표준에 대해서 배웁니다 

시스템 프로그래밍에서는 프로그램을 개발하는 데 필요한 기본적인 도구들 에디터, 컴파일러, 디버거 등을 학습합니다.

소프트웨어 공학을 통해서 실제 프로젝트의 단계와 이슈 관리에 대해서 배우고 소프트웨어 설계 과목에해서는 효율적인 프로젝트 운영 설계 방법을 배웁니다.  

 

 

3. 진로, 취업

먼저 IT 서비스 기업에서 웹 앱 개발자 또는 서버 개발자로 일할 수 있습니다. IT 서비스라고 하면 보통 네이버, 카카오, 페이스북, 구글, 아마존, ms 같은 이런 대기업들이나 어플 하나만 가지고 매출을 내는 중소기업 또는 스타트업이 있습니다. 
언어는 보통 자바가 메인이고요 알고리즘 자료 구조 데이터베이스 컴퓨터 네트워크 과목 등이 도움이 됩니다. 웹 개발은 월드와이드 웹 기반의 온라인 소프트웨어 개발자를 말하고요 IT 분야 중 진입 장벽이 가장 낮기 때문에 전공자든 비전공자든 사람들이 가장 많이 몰리는 분야입니다.

당연히 잘 하는 것은 어렵고 초급자들의 대우는 별로입니다. 프론트엔드 개발자와 백엔드 개발자로 보통 나뉘는데요. 
프론트 핸드는 데이터 입출력 부문의 UI를 구성하는 일을 하고 자바스크립들을 많이 사용합니다. 백핸드에서는 사용자 눈에는 보이지 않는 서버를 개발하거나 데이터의 입출력 등의 로직을 구현하는 일을 합니다. 자바, PHP, C#, 자바스크립트 등을 사용합니다. 안드로이드 앱 개발자는 자바, Kotlin 등을 사용하고 ios 개발자는 Swift라는 애플에서 공개한 언어를 사용합니다.

SI/SM 업체에서 시스템 개발 웹 개발을 할 수 있습니다. 
다른 회사나 기관에서 업무에 필요한 시스템을 맞춤형으로 개발, 구축해 주고 보수를 받는 역할을 합니다. 예를 들어서 어떤 제조업 회사에서 이렇게 발주를 해요. 공정 과정에서 이렇게 생산 이력과 설비 트러블에 대한 데이터들이 계속해서 발생하는데 '이 데이터를 누적하고 조회할 수 있는 시스템이 필요해요' 이렇게 해서 발주를 내면 SI 업체가 그걸 수주를 받아서 만들어주는 겁니다.

몇 달 만에 개발하고 몇 달 동안 유지보수를 해주고 인계하는 방식으로 계약을 해요. 이러한 수요는 산업 생태계가 죽지 않는 이상 수요는 넘쳐나는 게 당연하고 그 때문에 이 업계가 가장 규모가 크고 채용 인원도 항상 많습니다. 문제는 SI 업체 대부분이 다른 회사의 하청으로 일하기 때문에 시스템 구축하는 단가는 경쟁 과정에서 낮아질 수밖에 없고 그 낮은 단가는 직원들의 낮은 임금이나 과도한 업무 강도로 돌아옵니다. 

중소기업에 대해 한 가지 조언하자면 사장이 개발자 출신인 곳을 가시기 바랍니다. 그럼 최소한 말도 안 되는 양의 업무를 말도 안 되는 기간에 계약하지 않겠죠. 대기업으로는 LG cns, 삼성 sds, sk c&c, 현대오토에버 등이 있고 이런 곳은 연봉 4천 대로 대우가 꽤 괜찮은 편이지만 중소기업으로 갈수록 정말 정말 대우가 별로입니다. 개발자의 무덤이라고 불리죠 언어로는 자바, 자바스크립트, PHP를 많이 사용하고 주로 스프링 프레임워크 기반입니다. 창의성보다는 속도가 중요하고 신입 때는 시키는 대로 잘 하는 수동적인 태도가 필요합니다. 

제조업에서 소프트웨어 개발자, 임베디드 개발자가 되는 경우도 있습니다. 
삼성전자, sk하이닉스, lg화학, 현대자동차 등등 모든 제조업에서 취업이 가능합니다. 또 그러한 대기업에 협력사로 취업을 하는 경우도 많고요 규모가 크고 직무가 굉장히 다양합니다. 반도체 회사를 예로 들자면 반도체 안에 들어가는 펌웨어를 개발하거나 제품 테스트를 합니다. 펌웨어가 뭐냐면 공장에 나올 때부터 하드웨어처럼 제품에 일부러 포함되어 있는 소프트웨어 같은 거라고 생각하면 됩니다. 소프트웨어와 하드웨어의 중간 단계가 펌웨어입니다. pc에 운영 체제가 깔려 있듯이 제품의 펌웨어가 깔려 있는 겁니다 가전제품 회사로 예를 들자면 임베디드 시스템 개발이 주 업무가 됩니다.

임베디드 시스템이 뭐냐면 냉장고 세탁기 이런 제품이 어떤 특정한 기능을 할 수 있도록 내장된 칩에 프로그래밍을 하는 것입니다. 이것을 클라우드와 연동시키면 그게 바로 IOT가 되는 겁니다. 임베디드 분야 프로그래밍 언어로는 보통 C를 많이 사용합니다. 리눅스와 같은 운영 체제를 반드시 하셔야 되고, 전자 과목 중 회로 과목들과 신호 시스템 과목들도 수강해 두시는 게 좋습니다. 

임베디드 인문에 가장 좋은 것은 뭐니뭐니 해도 아두이노고 적성에 맞는다 싶으면 라즈베리 파이를 하시면 됩니다. 빅데이터나 인공지능 IOT를 기반으로 스마트 팩토리 시스템을 구축하는 직무도 있습니다. 대기업에서는 일반적으로 진행하는 인적성 시험 대신에 코딩 테스트를 봅니다. 

게임 회사에서 게임 개발자가 될 수 있습니다. 넷마블, 넥슨, nc소프트 같은 중견 회사도 있고 별로 유명하지 않은 인디 게임 업체들도 있습니다. 우선 클라이언트 프로그래머와 서버 프로그래머가 있습니다. 웹으로 치자면 프론트 핸드와 백핸드로 단순하게 설명이 가능합니다. 게임 상황에서 실제로 보여주는 플레이 화면이 있죠. 이 화면을 구성하는 클라이언트 프로그램이 있고 그 외에 당연히 서버와 DB, 보안, 네트워크 부분도 있습니다. 네트워크 송수신의 안정성을 체크하고 서버 내 게임 로직과 데이터를 처리하고 저장하는 업무를 합니다.

프로그래밍 언어로는 고사양 게임에서는 C++이 가장 많이 사용되고 모바일에서는 C#도 사용합니다. 안드로이드 모바일 게임 개발의 경우 Kotlin이 사용되고요. 게임 엔진으로는 보통 유니티 3d, 언리얼 뭐 이런 것을 구매해서 사용하고 기본적인 물리 지식은 꼭 필요합니다. 3d 그래픽 분야로 진출하고 싶으면 물리학을 복수 전공하면 도움이 됩니다. 앞에서 게임 개발자는 수학이 중요하다고 말했었는데 미적분, 선형대수학, 통계, 이산수학, 논리 연산 등이 사용됩니다.

빅데이터 분야에서 DB 개발자 머신 러닝 개발자로 일할 수도 있습니다. 
간단히 요약하자면 DB와 자료 구조에 대한 이해가 중요하고요 수학과 통계학이 정말 중요하기 때문에 복수 전공하면 매우 매우 도움이 됩니다. 통계학에 최적화된 R이나 파이썬을 주로 사용하고 블록체인 엔지니어도 있습니다. 비트코인 때문에 많이 알려진 용어죠 아직 활성화된 업종은 아니라서 국내 채용은 적지만 가까운 미래에 유망한 업종 중의 하나입니다.

처음에는 비트코인 같은 암호화폐에 도입이 되었고요 그 이후에는 여러 은행들과 카드사에서 계속 도입을 하고 있고 게임 분야에서도 적용 가능할지 검토하고 있습니다. 아직 찾아내고 있는 중이죠. 회사로는 암호화폐 거래소, 카카오 자회사 그라운드 x, 네이버 라인 플러스 그리고 여러 신생 벤처기업들이 있습니다. 워낙 신규 기술이기 때문에 블록체인 과목을 수강하지 않고 경력이 없어도 프로그래밍 실력이 있다면 채용이 됩니다. 


보안 솔루션 업체에서 보안 개발자로 일하는 경우도 있습니다. 
보안 분야는 항상 중요했지만 요즘 IOT라는 개념이 익숙해지면서 좀 더 중요성이 부각되는 분야 중 하나입니다. 
운영체제와 네트워크 분야의 지식이 있어야 되고 이후 업무 시에 방화벽, IPS, 보안 관리 등의 업무를 맡게 됩니다. 
어셈블리어를 할 줄 아셔야 됩니다. 대기업 정보 보안팀에 가는 경우도 있지만 그런 경우는 사실 업체에게 하청을 주고 관리하는 업무가 추가되기 때문에 대기업은 생략하겠습니다. 전문 보안업체로는 안랩, sk 인포섹, 이글루 시큐리티가 메이저 회사입니다. 보안쪽 분야는 초기 진입 장벽이 조금 높은 것에 비해서 초봉이 다른 곳에 비해서 좀 더 낮다는 단점이 있습니다. 하지만 실력과 경력이 쌓이는 과정에서 연봉이나 대우가 쭉쭉쭉쭉 올라갈 수 있습니다. 실력이 부족하면 관제하는 업무가 추가됩니다. 


근데 이러한 직무는 보통 개발자보다는 오퍼레이터라고 부릅니다. 
실력이 있으면 솔루션 개발, 보안 시스템 구축/운영, 포렌식, 컨설팅 쪽으로 길이 많이 열려 있습니다. 

통신사에서 네트워크 직무로 일할 수도 있습니다. 
세부 직무에 따라서 컴공보다는 전기나 통신 쪽이 더 많이 진출하기도 합니다. 통신 네트워크 프로토콜을 설계하고 서버의 부하를 고르게 분배해주는 트래픽 관리를 할 수 있습니다. 클라우드 데이터베이스를 관리하고 라우스터 서버를 점검하는 등의 운영 관리나 네트워크 보안 설계도 합니다. 

공무원이나 공공기관에서 전산직 업무를 할 수 있습니다. 
창의적인 문제 해결 능력이 요구되는 경우는 별로 없는 편이기 때문에 프로그래머로서의 자아 실현을 하기에는 조금 맞지 않은 편입니다. 공기업이든 공무원이든 국가기술 자격증이 필요한데 일반적으로 정보 처리 기사 자격증이 가장 인기 있습니다.

그리고 금융권에 취득할 수도 있습니다. 
은행 카드사 증권사 이런 데서 IT 직무를 맡는 경우를 말하고요 데이터 처리 서버 안정성이나 개인 정보 보안 업무를 맡습니다. 

대학원에 진학해서 컴퓨터 과학 연구원이 되는 길도 있습니다. 
개발자보다는 연구원이라고 불리고요 알고리즘의 수학적 접근에 대한 연구 뭐 이런 것들을 진행합니다. 
당연히 수학을 무진장 잘해야 됩니다.

취업할 때 참고할 만한 사항들을 간단하게 말씀드리겠습니다. 
실무 경험이 정말 정말 중요합니다. 개발 동아리나 경진대회 같은 것들을 하면 많은 도움이 되고요 모든 프로젝트 활동들은 전부 다 GIt hub에 올려두도록 합시다 다른 전공에 비해서 학벌이 중요하지 않은 경우는 많지만 그래도 학점은 어느 정도 관리를 해줘야 됩니다. 학점은 성실함을 판단하는 도구입니다. 많은 경우 코딩 테스트 또는 코딩 면접이 있습니다. 
문제를 주고 문제 풀이를 위한 접근의 효율성을 주로 판단합니다. 당연하겠지만 이 코딩 테스트에서 가장 도움이 되는 과목은 자료 구조와 알고리즘입니다. 일부의 경우 과제를 주는 경우도 있습니다. 

 

3. QnA

가. 컴공 방학 때 뭐 해야 되나요?
개발 동아리나 외부 활동들이 많이 있습니다. 프로그피, 피로그래밍 이런 것들이 있는데 이런 것들을 해보면서 실무 경험도 쌓고 자신만의 포트폴리오를 구성해 나가는 걸 추천드립니다. 

나. 입학 전에 뭐 해야 되나요?

전공 관련해서는 딱히 없습니다. 항상 얘기하지만 대학교 와서 열심히 하면 됩니다. 고등학교 때 그냥 고등 수학에 대한 기본적인 베이스 있으시면 되고, 고등학교 커리큘럼은 계속 바뀌겠지만 그냥 전 범위의 기본 개념은 익히고 오는 게 좋습니다. 그리고 쉬운 언어의 대표인 파이썬 정도는 기초라도 익히고 들어오면 적응하는 데 수월합니다. 인터넷에 파이썬 예제들이 많이 있으니까요. 간단한 프로그램 한번 만들어보는 것도 좋습니다.

다. 노트북 뭐 써야 되나요?
i5 이상 램 8기가 이상이면 됩니다. 물론 성능은 높을수록 좋겠지만 3d 그래픽을 그리거나 실전 머신 러닝을 그 노트북으로 할 게 아니니까 적당한 거 사셔도 됩니다 가장 중요한 건 무게입니다. 무게 무조건 가벼운 거 사세요. 정말 정말 중요한데 컴공생들에게 노트북이란 스마트폰과 같습니다. 무슨 말인지 알죠 무거우면 큰일 납니다.

라. 공학용 계산기 사야되나요? 안 사도 됩니다. 

 

마. 국비지원 IT 어떤가요?

국비지원 IT 학원 간단하게 말씀드리겠습니다. 
보통 IT 직군의 취업을 희망하시는 비전공자 취업생 분들이 많이 찾으시는데 모르시는 분들을 위해 간단히 소개하고자 합니다. IT 인재는 항상 부족한데 취준생들이 취업난을 겪고 있으니까 정부에서 두 문제를 한 번에 해결하기 위해 물꼬를 터준 겁니다. 사실 IT 말고도 중국어, 회계, 디자인 이런 것들 분야는 다양합니다. 주의할 사항은 전부 다 이게 100%로 지원되는 게 아니고 아예 지원이 안 되는 분야도 있습니다. 그리고 또 이 학원들도 장사하는 거기 때문에 제목만 보고 신청하면 안 되고 커리큘럼을 꼼꼼하게 살펴보셔야 됩니다. 마케팅에 속아 넘어가실 수도 있어요. 

 

4. 컴퓨터 공학과 총평

컴퓨터 공학과 총평 말씀드리겠습니다. 취업이 잘 되긴 하는데 실력에 따라서 양극화가 심한 분야입니다. 마크 주커버그가 될 수도 있고 단순한 코더 노동자가 될 수도 있습니다. 대학교 가면 하루 종일 컴퓨터 앞에 앉아서 코딩만 엄청나게 할 줄 알았겠지만 이론 공부를 굉장히 많이 하게 됩니다. 프로그래밍에 대해 코딩에 대해 전혀 아무것도 모르는 신입생들도 학교의 커리큘럼을 성실하게 따라가다 보면 충분히 전문가가 될 수 있습니다.

초심자에게 컴퓨터 공학이라는 영역이 좀 두렵게 느껴질 수도 있는데요. 강의를 듣고 배우는 과정에서 자신의 프로그래밍 실력이 조금씩 성장하는 것이 눈에 보일 거예요. 바로 이러한 게 컴퓨터 공학을 공부하는 재미라고 생각합니다.

 

긴 글 읽어주셔서 감사드리고 이만 마치겠습니다.

댓글