🥞 BE
home

Computer Science

나는 왜 CS를 공부하는가

컴퓨터와 관련된 얘기를 주고받는데 개발자들이 쓰는 말이 잘 이해가 되지 않았음.
구글링을 하며 블로그나 스택오버플로우를 찾아보는데, 거기 있는 말도 너무 어려움. 어떻게 접근해야하지..?
어떻게든 뭔가 만들긴 했는데, 이게 어떻게 동작하고, 어떻게 더 효율적으로 개선할 수 있을지에 대해 궁금하지만 기초 지식이 없어서 방법을 몰랐음…

추상화의 계층

이론 분야
코드
알고리즘
문제, 계산 가능성
시스템 분야
응용
시스템 소프트웨어
하드웨어, 디지털 논리

CS의 필요성

순수론
상대적으로 짧은 시간 내에 놀랍도록 많은 것을 가능하게 한 사고의 체계를 쫓아가 봄으로써 나 자신도 논리적/체계적으로 사고하는 방식을 익히고 문제 해결 위주의 접근법을 체득할 수 있다.
이후 컴퓨터 시스템 응용(웹 개발, 인공지능 활용, 데이터 모델링, …)에 있어 보다 깊이 있는 이해를 도모할 수 있는 체계적 바탕을 구성할 수 있다.
실용론
컴퓨터 공학 기술적 토대 위에서 대화하고 이해하고 나의 생각을 표현할 수 있다.
SW엔지니어라는 진로를 목표로 한다면, 이에 대한 어느 정도의 틀을 갖춰서 지식을 쌓아갈 수 있다.

구성

컴퓨터 구조 (아키텍처)
하드웨어-소프트웨어 사이의 인터페이스 정의
고수준 프로그래밍 언어 → 어셈블리 → 기계어의 번역 과정과 실행 모델
운영 체제 (OS)
가상화의 시작 : 컴퓨터 하드웨어 자원의 효율적 활용
정책 : 공평성, 효율석, 격리와 보호
데이터베이스 (DB)
RDBMS의 원칙과 연산
데이터 공유에 따른 문제와 해결책
ORM의 이해와 DB 프로그래밍
고차원 데이터베이스와 유사도 검색
네트워크
물리적 연결부터 데이터의 표현까지
OSI 7계층 모델과 프로토콜
TCP/IP 네트워크의 운용
소프트웨어 공학
소프트웨어는 개발이 곧 생산
보다 좋은 소프트웨어를 생산하기 위한 프로세스, 마인드 셋
코드 리뷰, 리팩토링과 클린 코드
절차와 규정 vs 좋은 SW엔지니어
클라우드 컴퓨팅
가상화와 자원 공유
민첩성과 안정성의 동시 확보