소프트웨어를 공부하는 학문으로 컴퓨터 이론, 알고리즘, 프로그램 언어, 설계 4가지의 큰 분야로 나눌 수 있다.
네덜란드의 유명한 컴퓨터 과학자 "에츠허르 데이크스트라(Edsger Wybe Dijkstra)"는 "컴퓨터를 쓴다는 이유로 컴퓨터 공학이라 부를 거라면, 의학은 칼 공학, 천문학은 망원경 공학으로 부르는 게 맞을 듯"이라는 말을 하며 '컴퓨터 과학' 명칭을 지지했다는 일화는 유명하다.
대학교에 개설되어 있는 컴퓨터과학전공에서는 컴퓨터 프로그래밍 (C, Python), 객체 지향 프로그래밍 (Java), 컴퓨터 네트워크, 모바일 프로그래밍 (Android), 데이터베이스, 소프트웨어 공학, 정보 보안, 컴퓨터 논리 개론, 컴퓨터 구조, 운영체제, 알고리즘, 데이터 분석과 같은 과목을 배운다고 한다.
우리가 cs 지식을 갖춰야되는 이유는 3가지로 말할 수 있다.
첫 번째로, 취업을 목표로 하는 사람이라면 한 번쯤은 거쳐 가야 하는 면접(interview) 과정에서 컴퓨터 공학 전공의 기초 지식에 대해 질문을 한다. 면접에 따라 CS 지식을 묻지 않을 수도 있지만 회사에서 신입 개발자를 판단하는 역량으로 전공 기초 지식을 많이 활용한다.
두 번째로, 업무를 진행하는데에 있어서 직, 간접적으로 관련이 있다. 현업에서 개발 업무를 할 때 컴퓨터공학 전공 지식은 활용도, 관련도가 매우 높다고 한다. 회사에서는 학교에서 배우는 전공 내용 정도는 기본으로 다 안다고 가정하고 업무를 진행하기 때문에 전공과 관련된 기초적인 내용을 잘 모른다면, 기본적인 업무 대화가 힘들 가능성이 높을 수 있다고 생각한다고 한다.
세 번째로, 본인의 전공 역량 수준을 판단할 수 있다. 우리가 흔히 공부를 한다고 하면 "나 이렇게 이렇게 공부했어 어때?"라고 이야기하지만 막상 지식을 활용하고자 하면 막히고 제대로 굴러가지 않는다. 이런 상황을 대비하기 위해 전공 역량 수준을 판단하는 것은 매우 중요한 일이다. 그렇다면 어떻게 본인의 전공 역량 수준을 판단할 수 있을까? 우리가 여행을 갈 때 가방에 옷을 챙기는 것은 가방에 옷을 넣기 위해서가 아니라 가서 입어야 되기 때문에 챙기는 것처럼 배운 내용을 나의 언어로 생각을 정리하여 설명할 수 있고, 지식을 깊이 이해하고 지식을 활용하여 본인의 개인 프로젝트에 적용할 수 있는 수준을 목표로 삼아야 한다.
cs 공부를 시작하며 내가 정한 목표는 겨울을 대비해서 식량 창고에 식량을 가득 쌓아두었지만 정작 식량을 어떻게 활용하는지 몰라 굶어죽는 경우가 없도록 식량을 활용하는 방법을 익히는 것처럼 쌓아놓는 지식이 아닌 꺼내놓을 수 있는 지식이 되도록 공부해야겠다는 것이다. 아무리 책을 많이 읽고 강의를 많이 수강해도 정작 cs 지식에 대해 질문을 받았을 때 기본적인 대답만 할 수 있다면 차라리 cs 공부를 할 시간에 잠을 자는 것이 더 효과적이지 않을까 싶다. 이렇게 쓸모없이 쌓아놓는 지식이 아닌 주머니에서 넣었다가 뺐다 할 수 있도록 공부하고자 한다.
- 도서명: 한 권으로 읽는 컴퓨터 구조와 프로그래밍
- 저자/역자: 조너선 스타인하트 / 오현석
- 출판사: 책만
- 출판년도: 2021년 04월 08일
- 정가/판매가: 35,000원 / 31500원
- 도서 구매
- 원서: The Secret Life of Programs: Understand Computers -- Craft Better Code