brunch

You can make anything
by writing

C.S.Lewis

by 조승혁 Jul 15. 2020

코딩 배우려면
컴퓨터공학과를 가야 하나요?

컴퓨터공학과는 무엇을 하는 곳인가

공대 중에서 '전화기'에 밀리던 컴퓨터공학과가, 알파고와 이세돌의 경기를 기점으로 인기를 얻기 시작했다. 그리고 여러 분야에서 인공지능이 눈에 띄는 성과를 내면서, 이러한 상승세는 멈추지 않고 있다. 그러면서 컴퓨터공학과 지망생이 늘어나고 있다. 그렇다면 컴퓨터공학과는 무엇을 하는 곳이길래, 사람들이 이렇게 모이는 것일까? 

공과계열에서 1등을 먹은 서울대 컴공(https://orbi.kr/00018240030)


컴퓨터공학과는 코딩하는 곳?

대다수의 사람들은 '컴퓨터 프로그램을 만드는 방법을 배우는 학과'라고 생각할 것이다. 즉, 코딩을 배우는 곳이라고 생각한다. 컴퓨터 프로그램은 홈페이지, 게임, 스마트 폰 앱 등을 포함한다. 컴퓨터, 스마트폰의 보급과 인터넷의 발전은 이러한 컴퓨터 프로그램 시장을 엄청나게 키워 놓았다. 시장이 커짐에 따라, 자연스럽게 컴퓨터 프로그램을 만들고 싶어 하는 사람들도 많아졌다. 이러한 사정들이 맛 물려, 현재의 컴퓨터공학과의 인기가 만들어진 것이 아닐까 싶다. 물론 컴퓨터공학과에 다니는 사람은 컴퓨터를 잘 고친다는 편견도 존재하지만, 컴퓨터 자체보다는 프로그램에 집중하는 것은 사실이다. 하지만, 컴퓨터공학과는 단순히 프로그램을 만드는 방법을 배우는 곳일까? 

프로그래밍 언어 관련 통계(https://www.jetbrains.com/lp/devecosystem-2020/)

컴퓨터공학과가 무엇을 하는 곳인지 설명하기 전에, 여러 대학교들에서 1학년 때 가르치는 수업들을 살펴보자. 컴퓨터공학과에 관심이 있고, 어느 정도 공부를 해봤다면 프로그래밍 언어인 C언어와 Python에 대해 들어봤을 것이다. 그리고 처음 코딩을 배울 때 Python이 여러 가지 면에서 좋다는 글들을 많이 찾아볼 수 있을 것이다. 실제로 위 통계를 보면, Python을 사용하는 사람이 C언어보다 월등히 많다. 그만큼 Python은 쉽고, 수요가 많다. 그렇다면 코딩을 배우는 곳으로 알려진 컴퓨터공학과는, Python으로 시작하는 것이 당연할 것이다. 필자도 카이스트가 1학년 때 Python을 가르친다는 말을 듣고, 이러한 생각에 확신을 가졌다. 하지만, 주요 대학교들을 조사해본 결과 전혀 다른 결과가 나왔다. C언어, Python을 가르치는 대학들을 분류한 결과는 다음과 같다.


C언어 : 서울대, 포스텍, 연세대, 고려대, 성균관대

Python : 카이스트 


의외로 카이스트를 제외한 주요 대학교들은, 2020년에도 여전히 C언어를 고수하고 있다. Python 보다 몇 배는 어렵다는 C언어를 컴퓨터공학과의 입문 단계에서 가르치고 있는 것이다. 왜 코딩 교육에 알맞다고 소문난 Python 대신, C언어를 가르치고 있을까? C언어로 오랫동안 해와서? 처음부터 강하게 나가기 위해서? Python이 실제로 코딩 교육에 알맞지 않아서? 


컴퓨터공학과는 코딩'만' 하는 곳이 아니다!

필자도 이러한 결과에 처음에는 당황했다. 내가 그동안 잘못 생각해온 것일 수도 있다는 생각까지 들었다. 하지만 천천히 고민해보니, 이 통계가 바로 컴퓨터공학과가 무엇을 하는 곳인지 보여주고 있다고 생각했다. 먼저 컴퓨터공학과 입문에 해당하는 과목을 듣는 예상 청자들을 구별해보자.


1학년 필수 과목 : 포스텍, 카이스트

컴퓨터공학과 학생 : 서울대, 연세대, 고려대, 성균관대


보시다시피 포스텍을 제외한 C언어를 채택한 나머지 학교들은 컴퓨터공학과 학생들만 필수로 들으면 된다. 즉, 과목의 방향성부터가 다르다. 카이스트의 경우, 모든 학생들이 들어야 하니 초점이 '코딩 교육'에 맞춰져 있다고 보면 된다. 하지만 다른 학교들은 애초에 컴퓨터공학과 신입생들이 대상이기 때문에 '코딩 교육'이 아닌, 컴퓨터공학과의 궁극적인 목적에 초점을 둬도 상관이 없다. 즉, C언어가 컴퓨터공학과의 목적에 부합하기 때문에 가르치는 것이라고 생각하면 된다. 그렇다면 C언어는 어떤 특성을 가지고 있기 때문에, 컴퓨터공학과에서 입문용으로 사용할까?


컴퓨터공학과는 '효율적인' 프로그램을 만드는 방법을 배우는 곳

C언어는 한마디로 요약하면, 컴퓨터 메모리에 대한 이해를 가지고 있어야 제대로 사용할 수 있는 프로그래밍 언어이다(자세한 이야기는 https://brunch.co.kr/@choseunghyek/2). 단순히 요구사항을 만족하는 프로그램을 구현하는 것은 메모리에 대한 이해가 필요가 없다. 어찌 됐든, 돌아만 가면 되니까. 하지만 빠르거나 용량을 적게 잡아먹는 프로그램을 구현하려면 메모리에 대한 이해가 필수이다. 왜냐하면 모든 컴퓨터 프로그램들은 컴퓨터 메모리 위에서 돌아가고 있기 때문이다. 그리고 컴퓨터공학과의 궁극적인 목표가 바로 빠르고 용량을 적게 잡아먹는, 다른 말로 효율적인 컴퓨터 프로그램을 구현하는 것이다. 그렇기 때문에 대부분의 컴퓨터공학과들은 코딩보다 메모리에 대한 이해가 중요하기 때문에, 여전히 C언어를 입문용으로 사용하고 있다.




이제 컴퓨터공학과가 무엇을 하는 곳인지 알았으니, 글의 제목을 마저 논의해보자. 물론 컴퓨터공학과가 효율적인 프로그램을 만드는 방법을 배우는 곳이라고 해도, 효율적으로 설계했는지 확인하기 위해 직접 코딩하는 일이 많다. 즉, 일반인보다 코딩하는 양이 월등히 많은 것은 사실이다. 여전히 홈페이지, 앱 개발이나 인공지능 관련 코딩들을 컴퓨터공학과에게 시키는 상황만 봐도 그렇다. 하지만 코딩은 컴퓨터공학과의 도구에 불과하다. 컴퓨터공학과는 자신들이 생각하는 방법이 맞는지 확인하기 위해 코딩을 배우지, 코딩 자체에 깊게 파고들지 않는다(물론 깊게 파고드는 분야도 존재하지만, 대규모 프로젝트에서나 써먹는다). 즉, 내가 생각하는 프로그램을 구현하기 위해 컴퓨터공학과를 가는 것은 배보다 배꼽이 큰 상황이라고 볼 수 있다. 그리고 개인적으로 구현하는 홈페이지나 앱들은 사용자 수가 페이스북만큼 되지 않는 이상, 그렇게까지 효율성을 추구할 필요가 없다. 그만큼 컴퓨터의 기본 스펙이 엄청나게 좋아졌기 때문이다. 그렇기 때문에 만들어보고 싶은 프로그램이 있는데 컴퓨터공학과가 아니라서 고민하고 있는 사람들에게 말하고 싶다. 프로그램을 만드는 방법은 컴퓨터공학과가 아니라도 충분히 독학으로 할 수 있고, 전문성을 요구하지 않는다. 그러니 두려워하지 말고, Python부터 시작해서 자신의 생각을 구현해봤으면 좋겠다.


작가의 이전글 코딩 교육은 Python으로
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari