최초작성일: 2023-01-24
부스트코스 <모두를 위한 컴퓨터 과학 (CS50 2019)> 강의 수강
1. 컴퓨팅 사고 (Computational Thinking, Scratch)
1. 2진법
- 컴퓨터 과학이 무엇인지 정의하고, 컴퓨터가 정보를 표현하는 방법에 대해 설명할 수 있다.
- 컴퓨터 과학, 2진법, 비트, 바이트
컴퓨터 과학
문제를 해결하는 과정
- 어떤 입력이 있을 때 어떠한 출력을 찾는, 문제에 대한 답을 찾는 중간 과정
- 입력과 출력을 표현하기 위해서는 모두가 동의할
약속(표준)
이 필요 ->표현 방법
2진법
- 0과 1로만 표현
- 컴퓨터는 2진법으로 글자, 사진, 영상, 소리 등을 저장
- 전기가 있고 없고가 컴퓨터에 대한 우리의 입력 방식
- 전기를 통해 연산하는, 전기를 켜고 끄는 방식으로 작동하는 컴퓨터에게 2진법이 적합
- 컴퓨터에는
트랜지스터
라는 많은 스위치가 있고 on / off 상태로 1과 0을 표현
비트(bit)
컴퓨터가 2진법에서 하나의 자릿수를 표현하는 단위
binary digit(이진 숫자)
의 줄임말0과 1, 두 가지 값
만 가질 수 있는 측정 단위- 디지털 데이터를 여러 비트들로 나타내어 많은 양의 정보를 저장할 수 있음
- 컴퓨터는 저장된 데이터를 수정하기 위해 수학적 연산을 수행할 수 있음
비트열
- 비트 한 개는 많은 양의 데이터를 나타내기엔 부족
- 여러 숫자 조합을 컴퓨터에 나타내기 위해 비트열을 사용
바이트(byte)
: 8개의 비트가 모여 만들어짐. 2^8 = 256 개의 서로 다른 바이트 존재- KB = 1000 B, MB = 1000 KB, ...
2. 정보의 표현
- 컴퓨터가 문자, 사진, 영상, 음악 등 다양한 정보를 처리하는 방식을 설명할 수 있다.
- ASCII, 유니코드, RGB
문자의 표현
ASCII
American Standard Code for Information Interchange 미국정보교환표준부호
- 총 128개의 부호(기본 아스키코드)
- 문자, 기호 등을 10진수로 약속, 컴퓨터가 그 수를 2진법으로 표현하여 다룸
유니코드(Unicode)
- 아스키코드는 8비트(확장 아스키 코드)만을 사용해 문자들을 표현하기에 충분하지 않았음
- 유니코드는 8, 16, 24, 32비트까지도 사용
- 이모티콘도 표현 가능
그림, 영상, 음악의 표현
RGB
- 숫자를 통해 색깔을 나타내는 체계
- 모든 색들은 빨강, 초록, 파랑으로 이루어져있고 이를 조합하면 어떤 색이든 만들 수 있다.
- 그림은 수많은 점(
픽셀
)으로 이루어져 있고 각각의픽셀
은 세 가지 색을 조합하여 특정 색을 갖게 됨 - 색이 있는 여러 점들이 모여 사진이 되고, 사진들이 모여 영상이 됨
음악
- 음, 음의 길이, 음량 등을 숫자로 양자화
정리
어떤 방법을 사용해서 정보를 나타내든 0과 1로 표현된다.
3. 알고리즘
- 일상 생활에서 하는 일들을 컴퓨터가 이해할 수 있는 알고리즘으로 표현할 수 있다.
- 효율적인 알고리즘에 대해 설명할 수 있다.
- 알고리즘, 의사코드
알고리즘
문제를 해결하는 단계적 방법
- 입력에서 받은 자료를 출력 형태로 만드는 처리 과정
- 입력값을 출력값의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열
- 대부분의 경우 문제 해결은 이미 갖고 있는 직관이나 생각을 기계나 다른 사람들이 이해할 수 있는 방식으로 번역하는 것
- 어떤 알고리즘이 효율적인 알고리즘인가?
의사코드(pseudo code)
컴퓨터가 수행할 작업을 프로그램 언어가 아니라 사람이 사용하는 언어로 알고리즘의 논리적 절차를 작성한 코드
전화번호부에서 Mike Smith 찾기
- 전화번호부를 든다.
- 전화번호부의 중간을 편다.
- 페이지를 살펴본다.
- Smith가 그 페이지에 있으면
- Mike에게 전화
- Smith가 그보다 앞에 있으면
- 책의 앞부분의 중간을 편다.
- 3번으로 가서 반복
- Smith가 그보다 뒤에 있으면
- 책의 뒷부분의 중간을 편다.
- 3번으로 가서 반복
- 끝까지 반복해도 Smith가 없으면 탐색을 그만 둔다.
- '든다', '편다' 등 동사들은
함수
에 해당 - '~면' 은
조건
에 해당. 여러 선택지(branch) 중 하나를 고르는 것. - 결정을 내리기 위한 질문, 예/아니오, 참/거짓으로 나오는 질문들은
불리언(Boolean)
- 반복하는 부분은
루프(loop)
4. 스크래치: 기초
- 스크래치를 이용하여 간단한 알고리즘을 구현할 수 있다.
- 스크래치, 블록
스크래치
- 블록형 프로그래밍 언어
스크래치 블록
- 하나의 블록이 블랙 박스의 역할
5. 스크래치: 심화
- 스크래치를 이용하여 보다 복잡한 알고리즘을 구현할 수 있다.
- 스크래치, 블록
추상화
- 기능을 어떻게 구현했는지보다 기능에 신경을 씀
- 기능 단위로 새로운 블록을 만들면 코드를 덜 복잡하고 더 짧게 만들 수 있음
'NOTES > CS50' 카테고리의 다른 글
[CS50] Chapter 6. 자료구조 (0) | 2023.03.04 |
---|---|
[CS50] Chapter 5. 메모리 (0) | 2023.02.25 |
[CS50] Chapter 4. 알고리즘 (0) | 2023.02.13 |
[CS50] Chapter 3. 배열 (2) | 2023.02.04 |
[CS50] Chapter 2. C언어 (1) | 2023.01.30 |