컴퓨터공학과

최근 수정 시각:

파일:나무위키+유도.png   학문 자체에 대한 내용은 컴퓨터공학 문서를 참조하십시오.

파일:나무위키+넘겨주기.png   관련 문서: 컴퓨터 관련 정보, 대학 관련 정보, 공과대학

인문사회계열


1. 개요2. 개설대학3. 지망생들을 위한 팁
3.1. 과목3.2. 선행 학습3.3. 졸업 이후에도 공부를 꾸준히 해야 한다3.4. 수학을 잘 해야 한다
4. 파생 학과5. 취업
5.1. 컴퓨터공학자 ≠ 프로그래머
6. 오해
6.1. 컴퓨터 수리를 잘한다6.2. 컴퓨터에 대해 모르는 것이 없다6.3. 게임을 만들 수 있다6.4. 해킹을 할 수 있다.6.5. 전자장비를 잘 다룬다6.6. 게임을 잘 한다6.7. 워드 프로세서 등에 능통하다6.8. 컴퓨터 견적을 잘 짠다

1. 개요[편집]

컴퓨터공학을 공부하는 학과. 컴퓨터과학과, 전산학과(전자계산학과), 소프트웨어학과 등으로도 불린다. 하드웨어 학과가 아니니까 견적 좀 묻지 말자

미국에서는 컴퓨터과학과(Computer Science)와 컴퓨터공학과(Computer Engineering)으로 나뉜다. 컴퓨터공학과는 그 규모가 현저히 작고 전자공학과 커리큘럼을 상당부분 공유하기 때문에 전자공학과와 컴퓨터공학과를 묶어서 그냥 EECE[1]라고 하나의 학과로 취급하는 경우가 대부분이다. 반면 컴퓨터과학과는 EECE와 커리큘럼도 많이 다르고 무엇보다 EECE보다 규모가 크기 때문에 대부분 독립적으로 학과를 운영한다. 아예 컴퓨터공학과를 두지 않는 대신 컴퓨터공학 프로그램을 전자공학과와 컴퓨터과학과가 공동으로 운영하는 경우도 적지 않다. 따라서 미국에서 컴퓨터 전공이라고 한다면 보통 컴퓨터과학과를 의미한다.

컴퓨터과학과와 EECE가 합쳐서 EECS[2]로 불리는 경우도 있지만 이런 경우는 컴퓨터과학과와 EECE 둘 중 하나 혹은 둘다 규모가 작아서 각각의 학과를 유지하기 어려운 경우에 한해 존재한다. UC버클리가 이런 EECS 학과를 가지고 있는데, 여기도 사실 컴퓨터과학을 전공하는 학생의 숫자가 6-7년 전까지만 하더라도 매우 적었다. 하지만 지금은 그 수가 기하급수적으로 늘어나면서 2016년 기준으로 단일학과에서는 보기 드문 2,500여명 가량의 학부생이 이 학과에 속해 있다.[3]

80년대~90년대 초까지는 전자계산학과 또는 전산학과 등으로 불렸으나[4] 요즘은 거의 모든 대학이 컴퓨터OO과 등의 이름으로 쓴다. 이름이 바뀔 당시 컴퓨터라는 것이 단순 전자계산기의 수준을 넘어 대중화되기 시작했기 때문이기도 하지만, 컴퓨터'공학'과라고 이름을 바꿈으로써 공학계열 등록금을 받을 수 있기 때문(...)이라고 한다.[5][6]

참고로 전문대학에서는 컴퓨터공학과, 컴퓨터과학과라는 이름을 쓰지 못한다. 이유는, 전문대는 실용적인 직업교육을 하는 곳이기 때문. 보통 컴퓨터정보과, 컴퓨터정보처리과, 컴퓨터소프트웨어과 등으로 명칭한다. 요즘은 그냥 쓴다. 이곳 참고. 애초에 요즘은 교육부가 학문의 의미를 망각해서 전문대학도 그냥 대학교처럼 이름 다 지을 수 있다. 학교에 따라 2년제인 곳도 있고, 3년제인 곳도 있다. 오히려 소프트웨어 교육이 중요시 되면서 유명한 4년제 대학교들도 소프트웨어학과, 소프트웨어학부, 컴퓨터소프트웨어학부 등의 명칭을 사용하는 곳이 많아졌다.

입학생 중 컴퓨터공학과만 바라보고 입학한 학생이 꼭 한두 명씩은 존재한다. 이들은 학교 내에서 능력자, 괴수 등으로 불리며 프로그래밍 못하는 양민들의 선망의 대상. 보통 초등학교 입학 이전부터 컴퓨터에 관심을 갖고 자기 스스로 공부하여 대학교에서 꽃을 피운다. 그러나 그 능력자가 우유부단한 성격이라면 곧 과제 셔틀이 될 수 있으니 주의(...). 보통 컴공과에서 기초적으로 배우는 C언어나 파이썬 등은 이미 다 알고 있거나 바로바로 금방 익히기 때문에 이들에겐 누워서 떡 먹기.

이쪽에 취미가 있는 학생이라면 굉장히 수월하게 커리큘럼을 이수할 수 있지만, 그것도 1, 2학년 과정까지의 이야기이다. 상위 과정으로 올라갈수록 직접 키보드를 두드리면서 코딩하는 과목은 적어지기 때문. 그나마 있는 과목도 설계 과목이나 네트워크 과목 등 코딩 실력 자체로 평가하는 과목이 아닌 경우가 대다수이고, 아예 컴파일러 작성 등 과제가 독학으로 커버할 수 없는 영역에까지 이르게 되면 누구나 평등하게 머리를 쥐어짜게 된다.(...)[7] 따라서 프로그래밍에 재능이 있는 학생이라도 대학 생활 내내 좋은 성적을 유지하려면 상당한 노력이 필요하다.[8] 프로그래머 항목을 보면 알겠지만, 좋은 코더가 좋은 컴퓨터공학자가 되는 것은 아니다.

한국 대학의 공과대학 중에서는 대부분의 학교에서 재료공학과 함께 전화기 다음 가는 경쟁률과 입결을 보여줬었으나 [9] 최근 컴공과 입결이 매우 급격히 오르고 있다는 통계가 하나 둘 나오고 있다. 특히 2018학년도 정시의 경우 강남하이퍼학원 최상위권 입시 전략 설명회에 따르면 입결 평균 상위 6개 대학 중 4개 대학인 연세대, 고려대, 서강대, 한양대의 경우 의예과 다음으로 컴공과가 높은 입결을 기록했으며, 서울대같은 경우는 입결 1위인 수학과에 이어 전체 2위를, 성균관대의 경우 역시 입결 1위인 글로벌바이오메디컬에 이은 2위를 기록했다고 한다. 수많은 입시 컨설팅 업체가 화생공, 수학, 전화기보다는 아래일 것이라 예상한 것과는 매우 다른 결과가 나온 것이다. 이외의 학교들 역시 입결이 꽤 상승했다고 하므로 가벼운 마음으로 쓸 수 있는 학과가 더 이상은 아니게 되었다.

파일:컴공.png 파일:컴공1.png 파일:대학별컴퓨터학과.png


전자공학과는 아주 밀접하고도 가까운 공학. 배우는 것에 차이는 있지만 서로가 뗄 수 없는 관계인지라. 그래서 전자/컴퓨터를 둘다 전공하거나 부전공을 하는 사람도 있다. 아예 과가 묶여있는 학교도 많고 건물을 같이 쓰는 경우도 많다.[10]

2. 개설대학[편집]

커뮤니케이션학과만큼 다양한 이름으로 개설되어있는데, SW중심대학 사업이 시작된 후 컴퓨터공학과라는 명칭이 소프트웨어학과로 많이 바뀌었기 때문이다. 단 아래 목록에 정보보안, 빅데이터, 디지털콘텐츠 등의 파생 전공은 포함되지 않았다.

2.1. 서울특별시[편집]

2.2. 경기도[편집]

2.3. 인천광역시[편집]

2.4. 강원도[편집]

2.5. 충청북도[편집]

  • 한국교통대학교 공과대학 컴퓨터정보기술공학부 컴퓨터공학 전공/ 소프트웨어학 전공/ it의료공학 전공

  • 충북대학교 전자정보대학 소프트웨어학과 / 컴퓨터공학과

  • 서원대학교 IT학부 컴퓨터공학과

2.6. 충청남도[편집]

2.7. 대전광역시[편집]

2.8. 세종특별자치시[편집]

2.9. 경상북도[편집]

2.10. 대구광역시[편집]

2.11. 전라북도[편집]

2.12. 경상남도[편집]

2.13. 전라남도[편집]

  • 목포대학교 공과대학 융합소프트웨어학과 / 컴퓨터공학과

2.14. 광주광역시[편집]

  • GIST 지스트대학 전기전자컴퓨터전공

  • 전남대학교 공과대학 전자컴퓨터공학부 소프트웨어공학전공

  • 조선대학교 IT융합대학 컴퓨터 공학과

2.15. 부산광역시[편집]

2.16. 울산광역시[편집]

2.17. 제주특별자치도[편집]

2.18. 전국단위[편집]

3. 지망생들을 위한 팁[편집]

정보처리기사 자격증이 있으면 독학학위제를 통하여 컴퓨터과학 학사 학위 취득이 가능하다.

3.1. 과목[편집]

수학영어가 매우 중요하다. 수학을 싫어하면 1학년부터 지옥이다. 이산수학을 못한다면 자료구조, 알고리즘, 고급 프로그래밍을 못 배운다. 다만 의외로 미분, 적분은 멀티미디어, 그래픽이나 기계학습 쪽을 파지 않는한 크게 신경쓰지 않아도 된다. 쉽다고는 말 안했다 컴퓨터과학에서 가장 중요한 수학은, 고등학교 때 하찮게 취급하던 이산수학이다.

컴퓨터만 들여다 보는데 왜 영어가 중요하냐 싶지만, 영어도 수학만큼이나 중요하다. 주로 쓰이는 도구들[19]이 수시로 소소하게 바뀌며, 지금 이 순간에도 실시간으로 새로운 정보, 새로운 프로그램이 탄생한다. 이것들이 주로 개발되는 동네가 영어권 동네인 만큼 번역을 기다리느니 아예 직접 영어 원문 및 원본을 읽어보는 편이 더 빠를 때도 있다. 물론 취업할 때의 영어 스펙(토익) 요구사항은 다른 공대생들과 크게 다를 바가 없으나, 필요할 때 원서를 찾아본다든가 영어로 된 웹사이트에서 필요한 정보를 얻어내는 능력은 독보적으로 많이 요구된다. 쉽게 말해서, 취직할 때 필요한 영어스펙이 문과생들보다 낮다는 건 훼이크다.다만 서류상에서 요구하는 점수가 더 낮기는 하다. 영어가 컴퓨터과학에 있어서 얼마나 중요한 지를 단적으로 표현하면 이 분야 국가기술자격증인 정보처리기사의 경우 시험과목 중 전공지식을 영어로 물어보는 전산영어라는 과목이 존재한다. 즉 국가공인! 그리고 상위권 공대의 모든 학과는 전공책은 물론이고 수업도 전부 영어로 하기 때문에 영어 못 하면 수업을 이해할 수 없다. 그리고 취업 후 개발자의 업무 시간의 거의 대부분을 차지하는 건 정보 검색인데, 네이버나 다음 등 국내 검색 엔진으로는 고작 학부 1~2학년 수준의 자료만 걸릴 확률이 99%다. 결국 정보 검색 수단이 구글링으로 귀결될 수밖에 없는데, 그 구글에서마저 영어 검색 결과와 그 외 언어 검색 결과가 갖는 양과 질의 차이는 하늘과 땅 차이다. 전공 서적이 번역본으로 나오는 경우는 있지만, 수업까지 영어일 경우 답이 없다. 일본은 국가기관으로 번역청이 있어서 공학관련 책 번역의 질이 높지만 한국의 전공서 번역은 질이 낮아서 원서를 보는 경우가 많은 것이다. 영어 공부를 열심히 하는 수밖에.물론 영어를 잘해도 전공지식 모르면 하나도 해석 못한다는게 함정.. 오히려 전공지식을 잘 알면 영어를 못해도 책이 술술 읽히는 마술이 벌어진다

3.2. 선행 학습[편집]

입학 전, 파이썬 교재 한 권정도는 사두고 입학할 때까지 독학으로 공부하면 도움이 많이 된다. 시간이 정말 남는다면 자료구조를 맛이라도 봐 보면 좋다. 해당 학교 교육과정에서 파이썬이 아닌 C나 Java부터 가르친다고 해서 함부로 그것부터 시작하면 안 되는 이유는 프로그래머 문서 참조.

다행인 건 컴퓨터과학이 이공계 과목 중에서는 서적이나 웹에서 자료를 찾기도 쉽고 요즘 개발자들은 구글링 실력이 필수다 실습할 때 필요한 재료(?)도 어지간하면 PC 1대가 끝이기에 그런데 임베디드를 독학한다면 어떨까?, 독학하기에 매우 좋은 과목이라는 점이다. [20]

가령 1학년 1학기에 컴퓨터 언어 배우는 과정이 있다고 하자. 그러면 보통 학생들은 3월부터 강의를 듣고 강의가 끝나면 교과서로 복습을 하며 과제 제출 기간에는 연습을 해서 제출을 한다. 하지만 컴퓨터공학에 관심이 있는 학생들은 3월 즈음에는 이미 책이 필요가 없고 관련 논문이나 최신 기사를 섭렵하고 과제는 학부 1학년 과제 수준이 아닌 실제 기업에서 써먹을만한 수준으로 내놓는다. 그러면 경쟁이 될 리가 없다. 유독 컴공 분야가 이런 실력차이가 큰 분야 중 하나다. 컴덕후들은 워낙 옛날부터 이 짓만 해 와서 그런 거다. 그 리누스 토르발즈도 밥 먹고 컴퓨터만 팠다고 하니까... 기 죽을 필요는 없다.

참고로 게임 실력, 해킹툴 다루는 실력 같은 건 이 학과와 전혀 무관하므로 쓸데없는 데는 힘빼지 말자.[21][22]

3.3. 졸업 이후에도 공부를 꾸준히 해야 한다[편집]

사기업 취업 시 지속적으로 정보를 수집하고 공부해야 한다. 프로그래밍 언어 표준, 주로 쓰이는 개발과 관련된 라이브러리/프레임워크, 개발환경[23] 등이 소소하지만 몇 년 간격으로 계속 업데이트되며 바뀌는데, 이쪽 계통은 그 업데이트가 개발 및 적용되는 속도가 꽤 빠른 편이다. 기존에 있던 것들이 바뀌면 모를까, 듣도 보도 못한 새로운 것들이 튀어나기도 하는데다가 그런 것들이 현재 있던 주류를 제치고 새로운 주류가 되기도 하는 등, 변화무쌍하기 때문에 지속적으로 관련 정보를 습득해야 한다. 따라서 공부 하는 것에 대한 흥미와 새로운걸 받아들이고 찾아보고 알아보고 하는 것에 흥미가 없다면 몇 년 내에 도태된다. 요즘은 공무원도 많이 알아야 업체와 대화하지 모르면 호구잡힘

사기업으로 가야 하는 사람인데 공부를 멈추고 싶을 경우 처음부터 컴공을 진입하지 말고, 트렌드 변화의 폭이 적고 학교 밖에서 경험적으로 배우는 것이 많은 현장기술직, 생산관리 등으로 가는 게 좋으며 전공 역시 이쪽 취업이 쉬운 기계, 전기 등을 고르는 것이 현명하다.

공부를 멈춘 결과 프로그래머로서 도태되어도 안 잘리고 싶다면 공무원, 공공기관으로 가는 게 좋다.

학문적인 측면에서 중요한 개념은 당연히 그렇게 자주, 쉽게 바뀌지 않는다. 예를 들면, 기계학습과 통계학에 기반한 인공지능도 사실 90년대부터 그 조짐이 슬슬 보이다가 하드웨어 성능이 좋아진 2000년대 중후반부터 본격적으로 대박을 쳤다. 그 당시 배운 회귀분석이 2010년대 배우는 회귀분석과 달라질 점은 없다. 하지만 90년대에 기계학습을 공부한 지식밖에 없다면 NumPy, SciPy, Tensorflow 등의 도구가 없는 상태에서 그 도구를 자기 힘으로 만들어내는 어처구니없는 짓을 하든지, 새로운 지식을 배워야 한다. 따라서 중요한 개념에 대해 잘 알고 있더라도 새로운 공부를 멈출 수 없다.

하둡도 2003년도 즈음에 구글과 학계에서 관련 기술을 개발하고 2011년도에 본격적으로 상용화한 뒤, 스파크가 2014년도에 나올 때까지 거진 10여년을 우려먹었다. 하지만 2003년쯤 배운 하둡 지식을 가지고 프로그래머로 취업하겠다고 하면 아무데서도 써주지 않는다. 계속 공부해서 최신 트렌드를 따라가야 하는 것이다.

그리고 배운 것을 응용하도록 해주는 커리큘럼이 없을 경우, 그 대학의 컴퓨터공학과에는 입학하지 않는 것이 좋다. 이러면 코딩 인력으로 취업하는 것 마저도 힘들 수 있다. 커리큘럼이 튼실한 것과 거의 없는 것은 큰 차이가 나기 마련이다.

최근에는 기업 입사시 코딩 테스트가 일반화되고 있다. 학벌이 좋지 않은 취준생들에게 아주 희소식이 되었다. 하지만 난이도가 결코 쉽지않아, 괜찮은 기업에 가고싶다면 꾸준히 공부해야한다.

3.4. 수학을 잘 해야 한다[편집]

학부 수준에서도 어느 정도 수학 실력, 특히 미적분을 위시한 단순 연산 말고 증명에 쓰이는 논리적 사고능력이 받쳐주지 않으면 전공을 아예 못한다.

만약 특정 대학에서 수학을 많이 가르쳐주지 않는다면, 졸업 후 질이 낮은 양산형 코더, 이른바 코딩 노예가 되어버릴 가능성이 높다.[24]

가끔 진짜 극히 드물게 수학은 죽어도 이해 못하면서 프로그래밍 성적이 나쁘지 않은 사람이 존재하기는 하지만 실력이 어딘가 한 군데 나사가 빠져있을 가능성이 높다.

대학원 이상으로 갈 경우 거의 예외없다. 대학원, 교수/학자/연구원 등의 레벨로 가면 하다못해 시스템 계열 분야라도 더더욱 예외없이 수학을 많이 공부해본 사람들이 많다. 특히 이름 있는 전산학자들은 거의 예외없이 수학과나 수학을 많이 쓰는 전공 출신이다. 아래 예시에 특별히 적혀있지 않는 한 학사나 석사에만 이름을 올린 사람들은 최종적으로 전산학 박사학위를 취득했다.

수학 혹은 응용수학

  • 박사: 앨런 튜링, 스티븐 쿡, 리처드 카프, 래즐리 램포트, 로버트 타르잔, 존 매카시, 도널드 크누스

  • 석사: 켄 톰슨 [25], 마이클 I. 조던 [26]

  • 학사: 데니스 리치 [27], 바바라 리스코프, 마테이 자하리아 [28], 데이비드 브럼리


물리학

  • 박사: 에즈거 다이크스트라, 앤드루 태넌범, 톰미 자아콜라

  • 석사: 이홍락 [29]

  • 학사: 존 F. 캐니 [30], 데니스 리치 [31]


전기공학

  • 박사: 마틴 헬맨, 리 페이페이

  • 학사: 존 F. 캐니 [32], 지텐드라 말리크, 김태수 [33]


특히나 컴퓨터 그래픽이나 온갖 기계학습[34] 분야로 가면 모든 분야의 전산학자들이 기본적으로 우려먹는 이산수학 알고리즘들은 물론이고 공대생들이나 물리학도들이 흔히 써먹는 선형대수학이나 다중미적분, 미분기하학 등도 아주 많이 쓴다. 특히 기계학습의 경우, 보다 이론적인 쪽으로 가면 측도론을 쓰기 시작한다. 하다못해 프로그래밍 언어를 공부하는 데에도 쓰인다. 프로그래밍 언어에 정의되어있는 온갖 데이터 타입들에 대한 연산 규칙 및 증명 등을 해야할 때 필요하다. 알고리즘의 복잡도에 대한 전개를 할 때에도 물론 수학을 쓴다. 예를 들어 합병정렬이 왜 O(n log n) 의 복잡도를 가지는 지 알려면 등비급수를 활용할 줄 알아야 한다.

전문분야를 막론하고 수학적인 기호들을 읽는데 능숙하지 못하거나, 수학적인 논리에 미숙하다거나 하면 전산학을 제대로 공부하기 매우 힘들다. 하다못해 시스템 계열 과목들에서도 수학적 증명이 등장하는 마당에[35], 웬만해서는 대학에서 강제필수인 기초 이산수학, 알고리즘 디자인/분석 및 복잡도이론 등으로 가면 더더욱 그렇다.

일반인이 생각하는 고교수학은 물론이고, 대학에 와야 본격적으로 접할 수 있는 보다 생소한 수학 분야들도 가지가지 골고루 우려먹는다. 수학의 본질이 논리적인 사고를 요구하는 것이라 전제하는만큼 수학을 잘하지 못하면 결코 어느 단계 이상을 넘어가지 못한다. 컴퓨터 관련 대학원 입시 문제들이 수학 문제로 이루어져있다.



4. 파생 학과[편집]

컴퓨터공학과에서 파생된 과로는 컴퓨터미디어과, 게임학과 등이 있지만, 이 둘은 컴공과와 확연히 다르다. 두 학과 모두 교양과목C 언어나 이산구조 등에서 컴공과와 과목이 겹치지만, 그 이후부터는 컴퓨터미디어과는 사운드포지, 프리미어 등 영상 편집 프로그램 등을 통해 미디어를 제작하는 것을 배우고, 게임학과는 게임 기획이나 게임 개론등을 배우고, 다이렉트 XXNA 등을 이용하여 게임을 직접 프로그래밍하는것을 배운다.

5. 취업[편집]

파일:나무위키상세내용.png   자세한 내용은 대한민국/IT 문서를 참고하십시오.

국내의 경우는 원체 공과계열이 취업이 잘 되기도 하고, 특히 현대 사회에서 컴퓨터가 쓰이지 않는 곳은 거의 없기 때문[36]에, 취업은 잘 된다. 아이티뱅크에서 무섭게 연락이 오므로 주의한다. 안녕하세요 아이티뱅크입니다 올해 컴퓨터공학부 입학하시죠?

졸업 후 프로그래머 쪽으로 진출하겠다고 생각한다면, 일단 프로그래머에 대한 수요가 매우 많아서 프로그래머로의 취업은 상당히 쉽다. 그런데 취업이 쉬운 대신 자신의 역량에 따라 (예를 들어 자신이 엔지니어인가?, 아니면 단순한 코더인가? 등) 근무 환경의 질이 다르다. 이는 이유가 있는데, 우리나라는 프로그래머에 대한 수요는 많지만, 할줄 아는 게 코딩 뿐인 저질 공급이 넘쳐나고 있는 등 공급자의 질적 수준에 꽤 많은 차이가 있기 때문이다. 게다가 인문계 취업난으로 인해 인문계열 학생들이 IT 쪽으로 복수전공/부전공을 시도하며 비전문적인 프로그래밍 분야로 몰리고 있고 프로그래머를 양성하는 교육기관/학원이 다수 생겼으나, 인문계 출신이나 학원 출신들은 대부분 단순히 코딩 정도만을 할 줄 아는 소위 양산형 프로그래머인 경우가 많다. 그리고 이들은 대개 전문적 지식이 부족한 문제가 있다. 이 때문에 채용하는 입장에서는 인문계 출신이나 학원 등에서 단기속성으로 배운 양산형 프로그래머들 보다는 4년 동안 제대로 공부한 컴퓨터공학과 출신들을 선호하는 편이다.

하지만 이는 컴퓨터공학과에서 제대로 공부했다는 것을 전제로 하는 얘기다. 어느 학과와 마찬가지로 컴퓨터공학과에도 컴퓨터공학 전공을 정말 좋아해서, 각오를 갖고(자기주도학습에 자신 있는) 진학하는 학생들 못지 않게 생각 없이 온 학생들 역시 상당히 많기 때문에, 4년간 제대로 실력을 쌓지 않고 졸업하는 학생들도 부지기수인데, 그런 경우는 학원에서 양산된 이른 바 양산형 프로그래머들보다 크게 경쟁력이 있거나 선호된다고 단정할 수는 없는 것이다.

한편 일반인들, 즉 비전공자들은 컴퓨터공학과를 프로그래머를 양성하는 교육기관으로 생각하는 경향이 있는데, 사실 프로그래밍은 컴퓨터공학과에서 배우는 것들 중 일부분에 지나지 않는다.[37][38] 자세한 사항은 아래 문단을 참조. 2017년 현재 일본의 구인난, IT기술자 우대와 맞물려 일본어까지 공부해놓으면 일본으로 취직을 하는경우 취업깡패라 할 수 있다(...)

5.1. 컴퓨터공학자 ≠ 프로그래머[편집]

흔히 일반인들은 컴퓨터공학과를 프로그래밍을 배우는 학과라고 생각하지만, 그것은 마치 경제학과가 펀드매니저를 양성하는 학과라거나, 법학과사법시험 합격 요령을 배우는 곳이라고 생각하는 것과 같다. 컴퓨터공학과는 컴퓨터 공학이라는 독립적인 학문을 배우는 학과라는 것을 명심하자. 게다가 컴퓨터 과학은 애초에 단순히 컴퓨터라는 기기에 대한 학문으로 한정되지 않는다. 컴퓨터 과학에서 컴퓨터란 천문학에서 망원경 이상의 것이 아니다.

이를 일컬어 Hal Abelson은 컴퓨터 과학(Computer science)이라는 이름이 이 분야를 소개하기에 나쁜 이름이라고 한 바 있다. 컴퓨터 과학은 자연 현상을 관측하고 원리를 밝히는 것이 아니기 때문에 사실 과학이 아니며 컴퓨터랑 그렇게 많이 관련 있는 것도 아니라나(...). 마치 물리학입자가속기에 대한 학문도 아니고 생물학현미경과 페트리 접시(..)에 대한 학문이 아닌 것과 마찬가지인 셈. 실제 프로그래밍을 배우는 과목은 몇 개 안 되고, 대부분은 도대체 이걸 배워서 어디에 써먹을까 싶은 수학적, 이론적인 과목 혹은 진짜 수학 과목들이다. 코딩을 위한 테크닉 같은 건 알아서 배워야 한다.

물론, 아무래도 프로그래밍이 커리큘럼에 포함되는 이상 일반인보다는 잘할 확률이 높긴 하지만 다 잘하는 건 아니다. 어느 학과든 대체 이 인간이 이 학과를 왜 왔는지, 뭐하러 다니고 있는지 알 수 없는 인간이 있으며 컴공과도 예외는 아니다. 전문대학의 전자회로분야 공과계열 학생들이 기계를 어떻게 다루는지에 대해서 배울 때, 전자공학 학생들은 전자회로의 본질을 탐구하고, 물리학과 경제학, 심지어 컴퓨터공학과 학생들마저도 수학을 어떻게 써먹을 지 배울 때, 수학과 학생들은 수학 시스템의 본질을 배우는 것처럼, 수많은 프로그래머들이 코딩을 해가며 배울 때, 컴퓨터공학과 학생들은 컴퓨터와 시스템, 소프트웨어의 본질을 탐구한다.

실제로 하드웨어 쪽과 관련이 깊은 프로그래밍은 전자과 학생이 더 잘하는 경우도 많고, 산업공학과도 학과 특성상 프로그래밍을 아주 빡세게 배우기 때문에 이쪽도 실력이 만만치 않다. 즉, "컴퓨터 공학자 ≠ 프로그래머 or 코더". 고로, 컴퓨터공학 전공자들 입장에서 "프로그래머/코더"는 그냥 프로그래밍을 좀 배운 사람이라 인식하고, 컴퓨터 공학을 좀 깊이 전공해서 일하는 사람은 "Computer/Software Engineer" 라고 칭한다.

물론 프로그래머도 매우 어렵다! 수시로 유행이 바뀌고 새로운 기술이 나오는 업계 특성상 오래 살아남기 위해서는 학부 때부터 업무나 학과성적과는 관계없이 늘 긴장을 늦추지 않고 새로운 것을 스스로 학습해야 한다. 이 과정에서 영어(최근에는 중국어까지)등의 외국어와의 전쟁은 덤이다. 즉 학부수준의 공부를 4년으로 끝내지 않고 평생 한다고 보면 된다(...). 물론 비전공자나 문외한들이 전자공학 전공자를 용접하는 사람으로 보듯이(...), 비전공자들 눈에는 코딩덕후든, 아마추어든, 전문대학에서 프로그램을 배운 프로그래머든, 컴퓨터 공학자든 뭉뚱그려 프로그래머로 생각하는 경향이 있다.

6. 오해[편집]

다른 학과나 직종들도 그렇지만, 한 분야에 종사하면 관련된 일들은 모두 다 잘 할수 있을 것이라는 막연한 기대감을 품는 사람들이 많다. 기타리스트가 노래도 잘 할것이라는 그럴싸한(?) 편견에서부터 음악 교재 파는 사람이 음악 연주도 잘할 것이라는 아닐 것 같은데 실제로 그런 오해가 있는 경우까지 하여간 종사 직종 관련 오해는 다양하다. 컴공과도 마찬가지로 '컴퓨터를 배운다'는 점 하나 떄문에 온갖 오해에 시달리곤 한다. 사실 아래 나온 대로 컴공과라고 컴퓨터에 대해 잘 아는것은 아니지만, 보통 이런 오해를 하는 컴맹들보단 잘 아는 경우가 대부분이다 보니 컴맹들이 보기엔 '잘 알면서 일부러 그런다' 라는 식으로 오해만 쌓인다(...). 이하 컴공과에 관련된 오해 일람.물론 진짜 컴덕이 컴공과에 입학하게 된다면 아래의 이야기가 대부분 맞아 떨어지게 된다.

6.1. 컴퓨터 수리를 잘한다[편집]

파일:attachment/컴퓨터공학과/jh컴공과.jpg

위 사진의 주 내용은 블루스크린이 나와서 컴퓨터 본체를 분해한 뒤 컴공과 다니는 친구에게 물어보는 것이다.

하드웨어 고장을 진단하는 검사 기기의 사용이나 수리를 위한 납땜 등은 전자과 쪽에 가깝다. 컴공과 교육과정만 배워서는 부품을 교체하는 것밖에 할 줄 모른다.

그래서 이런 유머도 있다.


컴퓨터공학과라면 대개 컴퓨터를 다룰 일도 많고, 컴공과 입학생들 중에는 컴퓨터에 관심이 있어서 입학하는 경우가 많기에 일반인보다 컴퓨터 실력이 나을 가능성은 충분하다. 문제는 100% 다 그런 건 아니라는 것이다. 점수 맞춰서 대충 입학했을 경우 컴퓨터 포맷조차 못 할 수도 있다.

그리고 컴퓨터 고장 원인은 여러 가지가 있다. 그래서 컴공과라 해도 처음 보는 고장을 수리해야 할 때는 일반인과 똑같다.

위와 같은 여러 상황에도 불구하고, 이상하게도 유독 컴공과 출신은 특히 컴퓨터 수리 콜이 자주 오는 편이다. 거기다 못 고치면 욕을 하는 사람도 있다.

파일:attachment/컴퓨터공학과/jh컴공과티셔츠.jpg

"아니, 난 네 컴퓨터를 고쳐주지 않을 거야"

이걸 까기 위한 티셔츠. 모 만화에서도 나왔다. 적절하게 코딩 폰트로 되어있다

6.2. 컴퓨터에 대해 모르는 것이 없다[편집]

컴퓨터의 응용 분야가 굉장히 넓어졌기 때문에 컴공과라고 해도 한계가 있다. 컴퓨터 하드웨어는 전자공학에서 다루고 소프트웨어는 컴퓨터공학에서 다루기 때문에 한 사람이 하드웨어와 소프트웨어를 동시에 깊게 이해하긴 힘들다. 예를 들어 컴퓨터 네트워크를 깊게 전공한 사람이 컴퓨터 하드웨어의 반도체 구조를 깊게 이해하고 있을 확률은 매우 낮다. 더군더나 하드웨어나 소프트웨어 둘다 매우 방대하고 깊이가 깊은 학문이라서, 컴퓨터 공학이나 전자공학 석박사를 하더라도 한 사람이 커버 가능한 세부분야는 컴퓨터의 극히 일부분이 될 수 밖에 없다.

6.3. 게임을 만들 수 있다[편집]

이런 오해는 컴공 학생이 프로그래밍을 잘 한다는 착각과 비슷하다. 게임의 기준은 각자 다르지만 예를 들어서 흔히들 말하는 파이널판타지 같은 화려한 초고퀄의 게임을 기대한다면 이건... 그냥 한 대 맞아야지 코딩 초심자들이 흔히들 연습으로 많이들 구현해보는 야구 게임, 가위바위보 게임 같은 것들은 조금만 연습하면 금방 만들 수 있다. 학교 정규 커리큘럼 이외의 공부를 조금만 하면 똥피하기(...) 같은 슈팅게임 등은 쉽게 구현할 수 있고 네트워크 대전이 가능한 장기 같은 걸 콘솔 화면에서 구현하는 용자도 가끔 나타난다. 다만 우직하게 커리큘럼만 판다면 무리. 애초에 취직을 포기한 게 아닌 이상 학교 강의만 듣고마는 컴공돌이는 흔치 않지만... 대학에서 배우는 것들은 사실 학문적인 부분이 대부분이고, 실제 쓸만한 프로그램을 만드는 실용적인 부분은 거의 독학으로 습득해야 하는 경우가 많다. 물론 이쪽을 잘만파면 중딩도 RPG게임을 뽑아낸다 실제로 콘솔 기반이건, GUI 기반이건간에 게임을 구현해보는 것은 코딩에 대한 흥미를 높이는 데 큰 도움이 된다. 앞서 언급했던 야구 게임, 가위바위보 게임, 테트리스 등의 게임을 구현하다 보면 기본적인 알고리즘이나 로직에 대한 감을 잡는 데 좋다. 밥 먹고 게임 개발만 하는 게임 회사 사람들이 만드는 것 같은 높은 퀄리티의 게임을 만들 수는 없지만 유니티 엔진을 이용해서 간단한 게임을 만드는 전공과제를 하는 대학생들도 많으니, 사실상 이것이 완전히 틀린 말은 아닌 셈... 하지만 역시 앞서 말했듯이 커리큘럼에만 충실했다면 힘들 수도 있다. 독학을 게을리 하지 말자

6.4. 해킹을 할 수 있다.[편집]

물론 해킹 할 수 있는 사람들이 타과에 비해 많을 수는 있지만 모두 할 줄 아는 건 절대 아니고 극소수에 불과하다. 일반인이 생각하는 해킹이라면 툴만 구하고 호스트 컴퓨터에 감염만 시키면 초딩도 할 수 있다. 반대로 제대로된 해킹을 하는 것은 컴공과생에게도 매우 어렵다.[39][40]
비유적으로 말해 컴퓨터로 부리는 마법이라고도 할 정도로 해킹은 컴퓨터 전공자들한테도 신비한 기술이며, 해킹을 하려면 전반적인 기반 기술과 지식을 모두 익혀야한다! 개발 능력은 베이스로 깔고 가야 분석을 하고, 해킹을 할 수 있가 때문이다. [41][42] 해킹이라는건 컴퓨터 기술의 근원까지 파고들어가는 굉장히 심오한 하나의 학문이지, 단순하게 발생하는 일련의 악성 행위만을 칭하는게 아니다.

그러나 요즘은 네트워크 관련 라이브러리가 잘 구현되어 있어 기초적인 소프트웨어 지식만 있으면 중학생도 백도어를 구현할 수 있는게 함정이다.

6.5. 전자장비를 잘 다룬다[편집]

물론 다루는 전자장비라고 해봐야 MP3핸드폰 정도인 일반인 보다는 낫겠지만, 주전공이 아닌 이상은 그렇게 잘 다루지 못한다. 보통의 컴퓨터 공학과 커리큘럼에서 H/W는 거의 없다. 설령 전자회로를 배울지라도 실질적인 회로가 아닌 논리 회로일 경우가 매우 높다. 전공선택과목에 있는 경우도 있다. 제너다이오드, MOSFET 같은 전자소자의 이름도 모르고 졸업하는경우도 생긴다. 게다가 그건 전자공학쪽 일이다. 전자공학도에게 부탁하세요 호갱님 우리한테 왜그래요 하지만 임베디드 전공이라면 어떨까?

6.6. 게임을 잘 한다[편집]

아무래도 일반인들이 컴퓨터를 사용하는 용도가 문서작업이나 웹서핑 아니면 게임이기 때문에 생긴 이미지인 듯. 컴퓨터 공학과와 게임실력과는 관계가 없다. 또한 컴퓨터 공학과와 게임 플레이와도 관계가 없다. 게다가 게임하거나 만들려고 온 사람보다는, 수능점수에 맞춰서 온 사람이 배는 많을 것이다. 하지만 수업 없는 시간대의 실습실이 게임방이 될 확률은 높다,공대생중 롤 브론즈5티어와 오버워치 3000시간 브론즈도 있다 이거 경험담인거 같은데

6.7. 워드 프로세서 등에 능통하다[편집]

당신이 만약에 초ㆍ중ㆍ고등학교 때 자신의 희망 진로가 컴퓨터공학이라고 선언하였거나 교양과목 조원에게 컴퓨터 관련 학과라는 것을 밝히면[43], 축하한다. 당신은 이제부터 조별과제 PPT담당이다.(...) 만약 회사에 전공과 별개로 입사했는데 그것이 밝혀지는 순간... 모든 AS는 당신의 것!

컴퓨터공학 전공자도 고등학교 때까지는 프로그래밍을 배우지 않은 학생들도 많고, 컴퓨터공학과가 파워포인트 잘 다루는법 배우는 학과는 아니다. 애초에 그다지 어렵지 않은 프로그램이기 때문에 크게 지식의 괴리에 따라 실력의 차이가 느껴지지도 않는다. 조금만 생각해봐도 프레젠테이션을 잘 만드는 것과 컴퓨터 잘 하는 건 전혀 상관이 없다는 걸 알 수 있는데, 프레젠테이션 잘 하는 사람은 컴퓨터 잘 하는 사람이 아니라 디자인 잘 하는 사람 내지 말빨 좋은 사람이다.

컴퓨터공학 전공, 더 나아가서 프로그래머는 파워포인트나 엑셀을 '만드는 사람'이지, '잘 쓰는 사람'이 절대로 아니다. 블리자드 개발진과 임요환 중 누가 게임을 잘할지를 생각해보면 쉬울 것이다. 작곡,작사가가 가수보다 노래를 잘부르지는 않는다. 다만 일반인보다 노래를 더 잘할확률은 높다. 보통 일반인은 컴퓨터=한글,파워포인트,엑셀 이므로 이 점을 잘 피력하지 못하면 학교든 회사든 뭔가 모르는게 생기면 무조건 당신을 부를 것이다. 반드시 꼭 아무것도 모른다는 것을 강력하게 주장해놓을 것!

6.8. 컴퓨터 견적을 잘 짠다[편집]

기적의 공대오빠 문서에서 보듯이, 컴퓨터공학을 공부한다고 해서 컴퓨터 견적을 잘 짜는 것은 결코 아니다. 주로 배우는 것이 소프트웨어이기도 하거니와, 하드웨어를 배운다고 하더라도 디지털 논리나 컴퓨터 개론 등의 일반적인 사항들을 학습할 뿐이다. 이게 무슨 말인지 이해가 안 간다면, 기계공학과를 생각해보자. 기계공학과에서 "요즘 세단은 이것이 대세다. SUV는 이것이 대세다. 연비는 이 회사 제품이 전반적으로 좋다" 같은 것을 가르쳐주지는 않는다. 견적에 대해 물어보고 싶다면 컴공과 학생보다는, 차라리 겜덕들이 훨씬 적합하다. 겜만할 줄 아는 덕후들이 더 많을텐데.. 그러니 아직 진리를 깨닫지 못한 하드웨어 덕후를 찾아보는게 좋다.

[1] Electrical & Computer Engineering[2] Electrical Engineering & Computer Science[3] 컴퓨터과학과 컴퓨터공학의 주된 차이는 전자는 소프트웨어, 후자는 시스템, 신호처리 등을 중시한다는 점, 그리고 수학, 과학에서 수강하는 과목의 차이가 있다는 점이다. 구체적으로 전자는 미적분 일부 혹은 전부, 선형대수, 이산수학, 그리고 과학 12학점(일반물리, 일반화학, 일반생물학 중 택일해서 8학점 포함)을 수강하면 되지만, 후자는 미적분 전부, 미분방정식, 선형대수, 이산수학, 일반물리, 현대물리, 일반화학 등을 빠짐없이 들어야 한다.[4] 과거 서울대학교는 전자계산학과(컴퓨터공학과)와 전산학과가 둘 다 있었는데, 전자는 공과대학, 후자는 자연과학대학 소속이었다. 2000년에 컴퓨터공학부로 통합되었다.[5] 보통 대학교에서는 등록금이 문과 < 이과 < 공과 < 예체능 < 의학 순이다.[6] 카이스트 등 일부 극소수 대학교에서는 아직 전산학과라는 표현을 사용한다.[7] 하지만 컴파일러 등의 과제도 종종 1인용 과제로 나오기도 한다. 어차피 기계어부터 짜는 거 아니니까 생각보다는 복잡하지 않다...[8] 물론 이건 학교 커리큘럼에 한정된 이야기일 뿐이고, 기업에서 실시하는 각종 공모전닥치고 결과물이기 때문에 재능있는 학생들은 이런 부분에서 스펙을 쌓는 것이 수월하다.[9] 한국에 웬만큼 제대로 된 대학에서 공과대학으로 전자/기계/화공/컴공/신소재/건축토목 등은 거의 기본으로 있다. 이 대학에는 재료공학 및 건축토목계열이 없으니 유의할 것[10] 전자전기컴퓨터공학부(Electrical and Computer Engineering, EECE) 형태로 개설되는 경우는 많으나 실제로 복전이나 부전공으로 하는 사람은 드물다. 전자공학에서 컴퓨터공학으로 오는 건 쉬울지라도 컴퓨터공학에서 전자공학으로 넘어가는 건 어려운 게 주된 이유이다. 게다가 서로 사용하는 수학도 다르기도 하고 애당초 공학이라는 학문 자체가 당장 하나만 공부하기도 벅차다. 그래도 2마리의 토끼를 잡고 싶다면 해봐라. 분명히 헬게이트가 열릴 것이다. 하지만 몇몇 low-level 분야의 경우 컴퓨터공학과 전자공학 두 학문을 모두 알고 있다면 (세부전공에 한해서라도) 상당한 메리트가 될 수 있다. 생각만 있다면 도전해보는 것도 경험상 나쁘지 않다. 여담으로 중앙대학교에서는 부전공이 졸업 요건이 아닌지라 컴공 → 전전 부전공을 하면 아름다운 대학 생활을 보낼 수 있다.[11] 구 컴퓨터소프트웨어학과[12] 구 컴퓨터공학과[13] 원래 서울 소재의 캠퍼스는 인문사회과학캠퍼스지만 아이러니하게 컴퓨터공학 관련 전공이 개설되어있다.[14] SW융합대학으로 이전 예정이며, 2018-01-17 기준 공과대학 소속임[15] SW융합대학으로 이전 예정이며, 2018-01-17 기준 공과대학 소속임[16] 소프트웨어학부는 일반적으로 생각하는 컴퓨터공학과이지만, ICT융합학부의 경우에는 소프트웨어학부의 하드웨어적인 부분은 거의 배우지 않으며, 커리큘럼의 경우 미디어 관련 학과와 컴퓨터 공학과를 1:1 비율 정도로 섞어놓은 느낌이다.[17] 기존 컴퓨터공학부였다가, 명칭이 변경되었다.[18] 기존의 컴퓨터공학과가 분과(컴퓨터공학과와 소프트웨어학과)되면서 신설된 과이다.[19] 프로그래밍 언어, 개발 라이브러리 및 프레임워크, 개발환경 등[20] 하지만 그만큼, 대학에서 교수와 조교가 "모르는 건 알아서 구글링하세요"라는 소리를 많이 한다 근데 그게 정답임~~[21] 다만 게임회사에 취직할 예정이라면 게임 산업 전반적인 지식은 필요하다. '특정 게임'이 아니라, 그 게임사의 경쟁 게임에 대해서 전반적으로 알아야 한다. 겜덕후라고 게임 회사에서 무조건 뽑아주지는 않는 이유가 그거다.[22] 보안관련 커리큘럼이 존재하는 학과에서조차도, 보안이론이나 해킹기법을 배우지 툴은 잘 써먹지 않는다. 그마저도 리눅스에서 쓰지[23] 안드로이드 버전, 윈도우 버전 등이 수시로 바뀌는 것을 생각해보면 된다 [24] 대개의 대학교에서 컴퓨터공학부 필수 이수과목에는 선형대수학, 이산수학, 통계학, 공업수학, 일반 물리학 등이 들어간다.[25] 최종학력 [26] 최종학력 인지과학 박사 [27] 물리학 학사 학위도 취득 [28] 전산학 복수전공 [29] 전산학 석사학위도 취득 [30] 전산학 복수전공; 전기공학 학사 학위를 나중에 따로 취득해서 학사 학위가 두 개다 [31] 응용수학 학사 학위도 취득 [32] 물리학/전산학 복수전공 및 전기공학으로 학사 학위 두개 취득 [33] 전산학 학사 학위도 취득 [34] 컴퓨터 비전, 자연 언어 처리, 데이터 마이닝[35] 운영체계의 피터슨 해법이나 램포트 빵집 알고리즘, 분산체계의 팍소스 알고리즘 등에 등장한다 [36] 이 점은 군대 특기병 선정에서도 마찬가지이다. 컴퓨터가 쓰이지 않는 곳은 거의 없기 때문에 수요가 상당하다.[37] 대학교 자체가 학문을 배우기 위한 장소이므로 당연히 회사나 취업에 필요한 기술들을 전부 가르치지 않는다.[38] 그리고 위에서도 밝혔듯이 단순히 프로그래밍만 배우고자 한다면 학원에서도 어느 정도는 배울 수 있다. 요즘에는 아예 전문적으로 6개월 과정으로 전부 가르쳐 주는 취업학원도 있다. 심지어 비전공자가 아닌 전공자들도 학교에서 배운것으로는 회사에서 써먹기 턱 없이 부족하기 때문에 취업과 업무를 위해서 학원을 등록하는 경우가 대다수다.[39] 그래도 분산 서비스 거부 공격쯤은 할 수 있다.[40] 하지만 넓은 의미로의 해킹이면 한번쯤은 해야 할 수도 있다. 예를 들어서 소스가 공개되지 않은 프로그램에 기능을 추가할 때 해야 하는 리버싱이라든가.[41] 자동화 툴을 돌리지 않는다는 가정하에. 자동화 툴이나 스크립트만으로 해킹을 하는 사람들은 해커라는 표현 대신 툴키디나 스크립트 키디 라고 부를정도로 멸시한다. 기반 지식 없이 하는 해킹은 단순 공격이지 해킹이 아니다.[42] 심지어 자동화 툴 조차 제대로 써먹으려면 기반지식이 있어야한다. [43] 자신을 보는 그들의 눈빛이 한 순간에 달라짐을 느낄 수 있다