좋은 서비스를 개발하는 개발자를 목표하고 있기에『이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접』라는 책을 통해 CS관련 지식들을 공부해보고자 합니다. CS를 알아야 하는 이유부터 중요한 개념들까지 배워봅시다.
개발자로서의 역량을 키우기 위해서는 컴퓨터 과학에 대한 지식을 갖추어야 한다고 말합니다.
프로그래밍 언어, 프레임워크, 라이브러리만 알아도 프로그램을 만들 수 있을텐데 CS지식이 필요한 이유가 뭘까요?
작동하기만 하면 프로그램의 실행 원리를 이해하지 않아도 개발의 목적을 이룬 것일까요?
프로그램 개발의 궁극적인 목적은 '일단 작동하게 만드는 것이 아닌 제대로 작동하게 만드는 것' 입니다.
개발된 프로그램은 사용자가 늘어나고 기능이 추가되고 유지보수까지 고려할 시기가 되면 겉보기만 작동하는 것처럼 보였을 뿐이었다는 사실을 깨닫을 때가 있습니다. 오히려 개발을 더 어렵게 만드는 결과를 가져오기도 합니다.
그리고 프로그램에 문제가 발생했을 때, 많은 경우 예제 소스 코드를 찾아 일단 복사해 붙여 넣는 방식으로 문제를 해결하는데 시간이 갈수록 소스 코드가 복잡해지고, 디버깅 시간이 길어지면서 스파게티 코드(spaghetti code)가 됩니다.
문제를 정의하고 해결하기 위해서는 본인이 작성한 코드가 어떤 과정을 거쳐서 실행되는지 설명할 수 있어야 합니다. CS지식은 이러한 작동원리를 이해하는데 도움을 주고, 문제의 근본적인 원인을 찾는 것을 도와줄 것 입니다.
1. 컴퓨터 구조
개발자가 만드는 실행하는 프로그램은 데이터와 명령어로 이루어져 있습니다. 컴퓨터가 데이터와 명령어를 이해하고 작동하는 원리에 대해서 알아보고, 컴퓨터의 핵심 부품인 CPU, 메모리, 보조기억장치, 입출력장치의 역할에 대해서 알아볼 예정입니다.
(메모리와 캐시 메모리에 대해서도 알아봅시다.)
2. 운영체제
하드웨어에 생명을 불어넣는 프로그램인 운영체제는 Window, MacOS, 리눅스, 안드로이드, iOS 등이 있습니다.
컴퓨터를 작동시키는 가장 중요한 프로그램으로 개발자가 만들고 실행하는 모든 프로그램은 직간접적으로 운영체제의 도움을 받으며 실행됩니다. 이와 관련한 커널, 시스템 콜, 프로세스, 스레드, CPU 스케줄링, 가상메모리, 파일시스템에 대해 알아봅시다.
3. 자료구조와 알고리즘
자료구조란 자료를 효율적으로 관리하는 구조적인 방법을 의미합니다. 즉 자료구조를 학습한다는 것은 여러 데이터를 효율적으로 관리하는 방법을 익히는 것과 같습니다. 시간복잡도, 공간복잡도의 개념을 통해 코드의 성능을 평가하고 대표적인 자료구조들을 하나씩 배워봅시다.
알고리즘은 프로그램의 목적을 이루기 위해 효율적으로 연산하는 절차를 다루는 학문입니다. 자료구조와 프로그래밍 언어에 대한 이해가 선행되어야 하는 분야이기도 합니다.
4. 네트워크
현대의 많은 컴퓨터들은 서로 연결되어 통신을 주고 받습니다. 개발자가 만드는 대부분의 프로그램도 네트워크를 통해 세상과 연결됩니다. 컴퓨터간 통신을 가능하게 만드는 네트워크의 계층구조와 통신을 주고받는 규칙인 프로토콜의 개념을 알아보고 안정적인 트래픽을 다루는 방법도 알아봅시다.
5. 데이터베이스
데이터베이스와 그를 관리하는 DBMS가 무엇인지 알아보고, 엔티티와 스키마가 무엇인지 알아봅시다. 또한 데이터베이스에 대한 작업 단위인 트랜잭션의 개념과 트랜잭션이 지켜야 하는 ACID원칙에 대해 알아보겠습니다.
데이터베이스의 유형인 RDBMS와 SQL, 그리고 최근 부상하는 NoSQL 데이터베이스의 개념과 특징까지도 알아봅시다.
'Computer Science > OS (Operating System)' 카테고리의 다른 글
[CS] 운영체제 자원 관리 알고리즘 (0) | 2025.04.18 |
---|---|
[CS] 3. 컴퓨터 작동 방식 (0) | 2024.10.03 |
[CS] 2. 컴퓨터 구조 (2) | 2024.10.02 |