컴퓨터 공학 총 정리
글의 목표
일단 이 블로그를 시작하게 된 계기인 컴퓨터공학에 대한 전반적인 내용을 다룬다에 걸맞게 다음과 같은 내용들을 다룰 예정이다.
- 컴퓨터 공학이란
- 운영체제
- C언어
- 컴파일러
각 주제 하나하나의 내용이 정말 엄청난 분량을 자랑하기 때문에 글의 구성을 간단하게 가져갈 생각이다.
하지만, 깊은 곳은 정말 깊게 다루는 것을 목표로 한다.
예를 들어서, 운영체제의 경우 보통 컴퓨터 공학에서는 먼저 Concept를 먼저 배운다, 그 이후에는 학교의 커리큘럼마다 차이는 존재하겠지만 보통 구조에 대한 자세한 설명이나, 동작 방식에 대한 이해까지 요구하는 학교는 많지 않을 것으로 생각한다.
그렇기 때문에 여기서는 다음과 같은 토픽을 중심으로 글을 이끌어 갈 생각이다.
- 역사
- 구현
먼저 뜬금없이 역사가 등장하는 이유는 내가 개인적으로 느낀 이 분야의 가장 큰 장벽이 역사라고 느끼기 때문이다. 예를 들어서 운영체제에서 다루는 중요한 주제 중, '메모리 페이징'이라는 키워드가 등장한다.
보통의 경우 그저 이러한 개념이 존재하고, 왜 존재하는 지를 글로만 접하고 넘기게 된다.
하지만 운영체제는 우리가 CPU라고 부르는 하드웨어와 깊은 연관성이 존재하고, 사실 방금 이야기한 '메모리 페이징'은 어떻게 보면 운영체제에 대한 내용이 아닌 그저, 그 CPU 모델에서 지원하는 기능에 지나지 않는다.
운영체제는 그저 이러한 기능을 사용하여 충실히 동작하도록 만들어진 프로그램에 불과하다.
아직은 체감되지 않겠지만 방금과 같은 요점을 알지 못하면 컴퓨터 공학이 재미있는 과목으로써 받아들여질 수 없다고 개인적으로는 생각하고, 그렇기 때문에 이러한 역사(CPU와 운영체제의 관계, 운영체제의 역사) 등을 알지 못하면 정말 재미없는 내용을 암기하는 식으로 진행이 되어버린다.
그렇기 때문에 역사에 대해서 다루고 또한, 실제로 코드를 구현하여 어떻게 동작하는지 보이는 것 까지를 목표로한다.
배경 지식
글을 읽는 독자들은 다음과 같은 사람들을 전제로 두고 집필한다.
- 비전공자(e.g 부트캠프 등을 최초로 프로그래밍을 접한 사람)
- 컴퓨터 공학과 아직 친하지 않은 사람
- 개념뿐만 아니라 코드가 실제 어떻게 동작하는지 알고 싶은 사람
- C 언어를 교양으로 들어본 적이 있는 사람
위에서 든 예시를 포함하여, 컴퓨터 공학이라는 분야를 알고 싶은 모든 사람을 대상으로 한다.
전재하고 있는 배경 지식은 다음과 같다.
- CPU와 메모리가 무엇이고 어떤 역활을 하는지
- 구체적으로는 CPU는 더하기, 빼기을 한다고 들어본 적이 있고, 메모리는 데이터가 저장되는 장소인 것을 들어본 적이 있는지
- DRAM이 무엇인지 인터넷에서 알아볼 수 있다
- SSD 또는 HDD(하드 디스크)를 들어본 적이 있고, 사진, 영상 파일 등이 저장되는 장소라는 것을 아는지
- 또는 위키피디아를 뒤져서 조사할 수 있다다
- 코드 또는 코딩이라는 단어를 들어본 적이 있고, 뭔지 대충 안다
위에서 든 예시와 같이 어느 정도 컴퓨터에 대해서 들어본 적이 있는 사람이라는 전제를 바탕으로 글을 작성한다.
독자의 역할
저자는 대학교에서 컴퓨터 공학을 4년 동안 배우고 현재는 석사를 진행 중인 한낱 학생에 불과하다는 사실을 항상 염두하고 글을 읽어주기를 간곡히바란다, 틀린 내용이 어디서 튀어나올지 모르고, 또한 글 자체의 질도 친절하지 않을 수 있다.
하지만 정확하고, 재미있는 글을 쓰는 것이 목표임으로 혹시 틀리거나 이해가 가지 않는 부분이 있으면!!
제발 댓글을 남겨주세요ㅠㅠ.
목차
각 내용의 목차 링크를 아래에 남긴다
입문자를 위한 목차
-
컴퓨터의 시작, 계산기
컴퓨터가 왜 탄생하였는지, 그리고 어떤 구조로 이루어져있는지 알아보자 -
메모리와 친해지기
컴퓨터에서 레지스터, RAM, HDD에 대해서 알아보고, 그 차이가 무었인지 이해하자. C 언어의 벽, 포인터를 이해하기 위한 첫 걸음 -
C 언어 시작하기
C 언어를 시작해 보자, 왜 'A' 도 'B'도 아니고 'C'인지, 그리고 왜 탄생하였는지 알아보자 -
C 언어와 친해지기 전의 준비
이제 본격적으로 글을 들어가기 전에 환경을 설정하고 컴파일을 실제로 진행하여보자 -
운영체제의 역사와 기술발전
뜬금 없이 운영체제? 라고 생각할 수 있지만 운영체제가 왜 생겼고 어떠한 역활을 하는지. 그리고 C 언어와 어떤 관계가 있는지 알아보자 -
코드를 읽기 위한 기본지식과 출력, 입력
우리가 작성한 Hello, World!!를 이해하고, 코드를 읽기 위한 지식을 배우자 -
변수와 메모리, 그리고 메모리 주소
변수는 무엇이고 변수라는 것이 어떻게 저장되는지 알아보자. -
변수의 종류와 계산
다양한 변수 종류를 살펴보고, 컴퓨터에 어떠한 연산이 존재하는지 살펴본다 -
반복문
-
배열
-
포인터
-
함수