CS 공부 시작하기
컴퓨터 공학 전공생의 경우 CS를 수업을 통해 익히는데 비전공자의 경우 그럴 수 없기 때문에 따로 책을 사서 공부를 하거나 인터넷 강의를 들어야 합니다. 아니면 어떤 프로그램에 참여하여 수업을 듣는 방법도 있습니다.
CS는 앞으로 개발자의 길을 걷는 데에 있어 좋은 발판이 되어줍니다. 즉, 기본기라고 할 수 있기 때문에 풍부하고 정확한 CS 지식을 갖추는 것은 좋은 개발자가 되기 위해 중요합니다. 기업에서도 신입을 뽑을 때 이 기본기를 가장 중요하게 보고 면접에서도 CS 질문은 반드시 나옵니다.
필수로 익혀야 하는 과목
컴퓨터 사이언스 분야 역시 다른 학문 못지 않게 매우 방대합니다. 이 많은 공부를 다 하면 좋겠지만 취업을 위해서는 전부 할 필요는 없고 그 중에서도 가장 기초가 되는 과목들이자 자주 쓰이는 과목 몇 개가 있습니다.
흔히 5대 과목이라고 불리는데, 자료구조, 알고리즘, 운영체제, 데이터베이스, 네트워크입니다. 나머지 과목들은 이 5대 과목에서 더 자세히 뻗어나가는 과목들이라 생각하시면 됩니다.
기업 공채의 경우 CS 테스트를 보는 경우가 있는데 대부분 이 과목들에서 벗어나지 않고 면접 또한 해당 과목이 아닌 CS 과목을 잘 물어보진 않습니다. 그래서 비전공자로서 취업을 준비하시는 입장이라면 이 5대 과목에 일단 집중하시면 됩니다.
물론 다른 과목들 도 공부하면 좋지만, 우선 우리는 시간이 없고, 효율을 따져야하기 때문이죠. 그리고 이 5대 과목들만으로도 양이 상당하기 때문에 이 내용들로 나중에 면접 준비까지 하게 되면 이미 벅찹니다.
공부 방법
저는 주로 전공책, 온라인 강의를 활용하여 공부를 했습니다. 유료 온라인 강의도 많지만 저는 kocw 사이트를 활용했습니다. 실제 대학 강의가 올라오는 사이트이고 모든 강의가 무료입니다. 여기서는 과목 별로 좀 더 세세하게 제가 공부했던 방법을 말씀드리겠습니다.
먼저, 운영체제입니다.
운영체제는 기본적으로 컴퓨터가 어떤 원리를 가지고 동작하며 프로그램을 실행시키는 지에 대해서 배우는 과목입니다. 아시다시피 컴퓨터가 쓸 수 있는 자원은 무한하지 않습니다. 한정된 CPU, 한정된 메모리, 한정된 디스크 용량을 가지고 있죠.
이런 상황에서 어떻게 효율적으로 자원들을 조율하는 지에 대해서 배운다고 생각하시면 됩니다. 운영체제는 반효경 교수님의 책인 ’운영체제와 정보기술의 원리‘를 먼저 사서 읽었습니다. 이미 유명한 책이고 설명이 매우 자세하게 잘 되어 있어서 기본을 잡기에 매우 좋았습니다. 읽은 내용을 블로그에 정리하며 2번 정도 읽었습니다.
CPU, 프로세스, 메모리 등을 배울 수 있습니다. 그리고 kocw 사이트에 반효경 교수님의 운영체제 강의가 올라와있습니다. 이 강의를 들으며 내용을 한번 더 정리했습니다. 강의에서는 책에 없는 내용도 다루시더라고요. 동기화, 데드락에 관한 내용인데 이 내용들은 면접에서도 자주 물어보고 중요한 내용이므로 꼭 아셔야 합니다. 그러므로 책만 보시지 마시고 강의도 꼭 듣는 것을 추천드립니다.
운영체제는 다른 과목들에 비해 면접 때 자주 나오는 과목은 아니지만 취업을 넘어 개발자로서 반드시 알아야되는 과목이라고 생각합니다!
다음으로 자료구조입니다.
사실 자료구조는 코딩 테스트를 준비하면서 기본 개념을 배운 상태였습니다. 그래서 따로 시간을 들여 한번 더 공부하진 않았습니다. 그래도 제대로 공부해야겠다싶어서 전공책을 사보기도 했는데 크게 막 새로 배울 내용은 없더라구요.
내용 정리를 하실거면 큐, 스택, 배열, 리스트, 해시에 대해서 공부해보시길 바랍니다. 트리, 그래프, 힙 같은 비선형 자료구조도 중요하기 때문에 공부하시면 좋습니다. 이 공부 자료들은 인터넷에도 이미 많기 때문에 따로 강의를 들을 필요는 없을 것 같네요.
다음으로 알고리즘입니다.
알고리즘 역시 코딩 테스트와 매우 밀접하게 연관되어 있어서 따로 뭔가 공부할 필요는 없었습니다. 공부를 따로 해보실거면 정렬 알고리즘 같은 기초가 되는 알고리즘을 직접 짜보는 것이 좋을 것 같습니다. 코딩 테스트 연습할 때 정렬 알고리즘을 직접 짜볼 일은 없으니까요. 특히 힙정렬, 퀵정렬, 병합정렬은 원리를 알고 있으셔야 합니다. 그리고 시간 복잡도, 공간 복잡도에 대한 개념을 꼭 익히시길 바랍니다.
자료구조와 알고리즘은 코딩테스트 준비를 위해 처음부터 공부를 계속 했었기 때문에 면접을 위해 따로 공부한 내용은 다른 과목들에 비해 거의 없네요.
--------------------------------------------------------------------------------------------------------------
이 글은 전자책 내용 중 일부를 담고 있습니다.
전자책은 취준 기간동안 제가 공부하고 경험했던 모든 것이 담겨 있습니다.
관심있으시면 클릭해주세요!
- 전자책 및 면접 정리 자료 공유: https://kmong.com/self-marketing/425538/in2LkVdLoB
[개발자 취업]에 도움되는 다른 글 보러가기
- 2022년 회고: https://yiyj1030.tistory.com/m/562
- 2021년 회고: https://yiyj1030.tistory.com/456
- 코딩테스트 준비: https://yiyj1030.tistory.com/563
- cs 공부: https://yiyj1030.tistory.com/564
- 프로젝트 준비: https://yiyj1030.tistory.com/565
- 자소서 작성: https://yiyj1030.tistory.com/566
- 면접 준비: https://yiyj1030.tistory.com/567
감사합니다!
댓글