💡 개발자 취업을 준비하거나 실무에 필요한 핵심 지식을 쌓고 싶은가?
그렇다면 CS(Computer Science, 컴퓨터 과학) 기초 공부는 선택이 아니라 필수이다.
이 글에서는 컴공 비전공자도 이해할 수 있도록, 개발자로서 반드시 알아야 할 CS 전반적인 기초 영역을 학습 로드맵 형태로 정리했다.
📌 CS란 무엇인가?
CS는 Computer Science의 약자로, 컴퓨터의 동작 원리, 프로그래밍의 기초, 그리고 소프트웨어의 구조적 사고를 다루는 학문이다.
기초를 탄탄히 다지면 코딩테스트, 기술면접, 실무 문제 해결력까지 전반적으로 향상된다.
✅ CS 핵심 학습 로드맵
1. 자료구조(Data Structure)
데이터를 효율적으로 저장하고 관리하는 구조에 대한 이론이다.
코딩테스트에서 가장 자주 등장하며, 알고리즘과 함께 공부하면 효과적이다.
주요 개념:
- 배열(Array)
- 연결 리스트(Linked List)
- 스택(Stack) / 큐(Queue)
- 해시 테이블(Hash Table)
- 트리(Tree), 이진 탐색 트리(BST)
- 힙(Heap), 우선순위 큐(Priority Queue)
- 그래프(Graph)
📌 예시:
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
System.out.println(stack.pop()); // 2
2. 알고리즘(Algorithm)
문제를 해결하는 절차적 방법이다.
코딩테스트, 백준, 프로그래머스, LeetCode 등 문제풀이에 활용된다.
주요 개념:
- 정렬: 버블, 선택, 삽입, 퀵, 병합
- 탐색: 이진 탐색, DFS, BFS
- 그리디, 백트래킹, 동적 계획법(DP)
- 분할 정복, 투 포인터, 슬라이딩 윈도우
📌 예시 (Java - 이진 탐색):
int binarySearch(int[] arr, int target) {
int left = 0, right = arr.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == target) return mid;
else if (arr[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}
3. 운영체제(Operating System)
컴퓨터의 자원을 효율적으로 관리하고, 여러 프로그램이 동시 실행되도록 돕는 핵심 소프트웨어이다.
기술면접 단골 주제이며, 실무 시스템 설계에도 영향을 준다.
주요 개념:
- 프로세스 vs 스레드
- CPU 스케줄링 알고리즘
- 메모리 관리: 페이징, 세그멘테이션
- 동기화: 세마포어, 뮤텍스
- 데드락(교착상태), 컨텍스트 스위칭
4. 네트워크(Network)
클라이언트와 서버가 데이터를 주고받는 원리를 이해하는 부분이다.
웹 개발자, 백엔드 개발자, 앱 개발자 모두에게 중요하다.
주요 개념:
- OSI 7계층, TCP/IP 4계층
- HTTP, HTTPS, REST API
- DNS, IP, 포트, NAT
- GET vs POST, 상태 코드
📌 예시:
- HTTP 200 OK: 요청 성공
- HTTP 404 Not Found: 요청한 자원 없음
5. 데이터베이스(Database)
데이터를 저장, 관리, 조회하는 기술이다.
SQL 작성, 트랜잭션, 정규화 등은 코딩테스트와 실무에 필수적이다.
주요 개념:
- 정규화 / 비정규화
- 트랜잭션(ACID)
- 인덱스, JOIN, 서브쿼리
- SQL vs NoSQL
- 관계형 모델
📌 예시 (SQL):
SELECT name, age FROM users WHERE age > 20 ORDER BY age DESC;
6. 컴퓨터 구조(Computer Architecture)
하드웨어와 소프트웨어 사이를 연결하는 이론이다.
CPU, 메모리, 캐시, 버스 등이 어떻게 동작하는지를 이해할 수 있다.
주요 개념:
- 명령어 사이클, 파이프라이닝
- 레지스터, 캐시, 버스
- 폰 노이만 구조
7. 컴파일러 / 프로그래밍 언어 이론
프로그래밍 언어가 어떻게 동작하는지를 이해하는 분야이다.
면접에서 언어 선택에 대한 설명을 요구할 때 도움된다.
주요 개념:
- 컴파일 vs 인터프리트
- 정적 바인딩 vs 동적 바인딩
- Garbage Collection(GC)
8. 시스템 설계(Software Architecture)
고성능, 확장 가능한 시스템을 설계하는 능력이다.
기술면접 심화 질문에서 자주 등장한다.
주요 개념:
- 모놀리식 vs 마이크로서비스
- 로드 밸런서, 캐시, CDN
- DB 샤딩, 레플리카
- 메시지 큐, 이벤트 기반 아키텍처
🧭 공부 팁 및 추천 순서
- 자료구조 & 알고리즘 → 코딩테스트 대비
- 운영체제 & 네트워크 → 기술면접 대비
- 데이터베이스 → 실무 활용도 ↑
- 컴퓨터 구조 → 언어와 OS 이해력 향상
- 시스템 설계 → 개발자 2~3년차 이후 확장 학습
🔖 마무리
CS 기초는 개발자로서의 "사고력", "문제 해결력", "실무 대응력"을 키워주는 토대다.
컴공 전공자든, 비전공자든 반드시 한 번은 정리해보는 것을 추천한다.
'IT개발 > Tech Notes' 카테고리의 다른 글
📌 트랜잭션의 4가지 특성, ACID란 무엇인가? (0) | 2025.04.18 |
---|---|
ERD와 정규화(Normalization), 왜 항상 같이 언급될까? (0) | 2025.04.18 |
DFD vs UML 비교 정리 ⚔️ 개념 혼동 끝내기! (0) | 2025.04.16 |
OSI 7계층 완벽 정리! 네트워크 개념 한 방에 끝내기 (0) | 2025.04.15 |
DNS와 IP의 차이, 초보자도 이해할 수 있게 쉽게 정리해봤습니다 (0) | 2025.04.15 |
댓글