부스트코스 - 모두를 위한 컴퓨터 과학 (CS50 2019) / 1. 컴퓨팅 사고 / 4) 스크래치 : 기초 & 5) 스크래치 심화

https://www.boostcourse.org/cs112/lecture/119000?isDesc=false 

 

모두를 위한 컴퓨터 과학 (CS50 2019)

부스트코스 무료 강의

www.boostcourse.org

 

 

 

스크래치란?

MIT 미디어 연구소에서 개발한 그래픽 프로그래밍 언어로 문자로 코딩하는 방식이 다르게 블록을 움직여가며 코딩해 볼 수 있다.

 

 

https://scratch.mit.edu/projects/editor/?tutorial=getStarted 

 

https://scratch.mit.edu/projects/editor/?tutorial=getStarted

 

scratch.mit.edu

 

좌측에 명령블록을 중앙에 순서대로 놓아 초록깃발을 누르면 오른쪽 고양이가 해당 명령어에 따라 움직이는 걸 볼수 있다.

 

 

 

 

 

 

 

부스트코스 - 모두를 위한 컴퓨터 과학 (CS50 2019) / 1. 컴퓨팅 사고 / 3) 알고리즘 

https://www.boostcourse.org/cs112/lecture/118999?isDesc=false 

 

모두를 위한 컴퓨터 과학 (CS50 2019)

부스트코스 무료 강의

www.boostcourse.org

 

 

알고리즘 정의

알고리즘이란 입력(input)받은 자료를 출력(output)형태로 만드는 "처리과정"을 의미하며
입력값으로 출력값을 얻기위한 어떤 명령들이 수행되어야 하는지에 대한 "규칙들의 순서적 나열"을 말한다.

 


알고리즘 평가

알고리즘을 평가할때는 정확성이 제일 중요하지만 이와 함께 효율성에 대한 평가도 중요시한다.
같은 입력값으로 같은 출력값을 내는 두 알고리즘을 비교하여 보다 적은 노력과 시간을 들이는 것이 중요하기 때문이다.

 

1000장의 전화번호부 사이에서 Mike Smith를 찾아보자.

  1. 한장 한장 살펴보는 알고리즘
  2. 이름 순이라는 규칙에 따라 Mike Smith가 앞부분에 위치한지 뒷부분에 위치한지 인지하며 전화번호부의 반절을 버리고 이 2번 행동을 반복하는 알고리즘

1번이 Mike Smith를 찾기위해 페이지를 넘기는 행동을 500번 넘게 하고 있을때
2번은 1000 페이지 중 Smith가 없는 500페이지 버리기 > 나머지 500페이지 안에서 Smith가 없는 250페이지 버리기 > ...
이 행동을 반복하다 단 10번째에 Mike Smith씨를 찾아내버린다.

두가지를 비교해보면 둘다 언젠가 Mike Smith씨를 찾겠지만 들이는 노력과 시간이 차이가 완전히 다르다는 걸 알 수 있다. 그럼 당연히 선택되는 알고리즘은 2번인 것이다.

 

 

 


의사코드

알고리즘을 표현하는 방식 중 의사코드에 대해 알아보자.

 

의사코드는 작동의 논리를 프로그래밍 언어가 아닌 사람의 일반적인 언어를 사용해 코드를 흉내내어 알고리즘을 표현하는 방식으로 이를 통해 필요한 행동이나 조건을 잘 설정하여 컴퓨터가 수행해야 하는 일을 절차적으로 파악할 수 있게 해준다.

 

Mike Smith를 찾는 알고리즘을 다음과 같이 의사코드로 표현할 수 있다.

1	전화번호부를 든다
2	전화번호부를 가운데를 편다
3	페이지에서 Mike Smith를 찾는다
4	만약 Smith가 이 페이지에 있다면
5 		Mike를 찾아 전화한다
6	그렇지 않고 만약 Smith가 앞 페이지에 있다면
7		앞 페이지의 가운데를 편다
8		3번 줄로 가서 다시 실행한다
9	그렇지 않고 만약 Smith가 뒷 페이지에 있다면
10		뒷 페이지의 가운데를 편다
11		3번 줄로 가서 다시 실행한다
12	그렇지 않다면
13		그만둔다

이 의사코드를 기능에 따라 나누면

함수(Function)

빨간색으로 강조된 부분을 함수(Functions)라 한다.
여기서는 사람이 해야할 동작을 알려주는 동사지만 컴퓨터 입장에서도 해야할 동작을 알려주는 것 또한 함수라고 합니다.


조건

여기서 빨간색으로 강조된 건 조건이다. 행동에 있어 선택지를 만드는 부분이다.


불리언(Boolean)

선택을 위한 결정을 내리기 위한 질문 부분으로

YES(예) / TRUE(참) / 1
이나
NO(아니오) / FALSE(거짓) / 0

의 답이 다오는 질문을 불리언이라 한다.


루프(loop)

행동을 반복, 순환 할 수 있게 하는 부분을 의미한다.

 

 

*부스트코스 - 모두를 위한 컴퓨터 과학 (CS50 2019) / 1. 컴퓨팅 사고 / 2) 정보의 표현

https://www.boostcourse.org/cs112/lecture/118998?isDesc=false 

 

모두를 위한 컴퓨터 과학 (CS50 2019)

부스트코스 무료 강의

www.boostcourse.org

 

문자의 표현

스위치의 on/off로 숫자를 표현하도록 약속했다면
문자는 바로 숫자를 이용해 표현하도록 약속(표준)을 정했다.

 

그 약속 중 하나가 바로 ASCII (아스키코드/ 미국정보교환표준부후) 이다.

 

총 128개의 부호로 정의되어 알파벳은
A 65 ~ 90
A 97 ~ 122
사이로 규정 그 외의 기호가 다수 포함하고 있다

72 73 33
H I !

 

하지만 그 외에도 Unicode라는 약속(표준)은 ASCII 코드보다 더 다양한 문자들을 표현가능하다.
심지어 이모티콘도 문자로 유니코드에 포함하고 있다.

 

ASCII 코드는 그당 8비트까지만 사용할 수 있었지만 발전 이후 나온 유니코드는 8, 16, 24 심지어 32비트까지 사용하면서 더 다양한 0과 1의 패턴을 만들어낼수 있게 된다.

 

 

 


그림,영상,음악의 표현

문자를 이렇게 포현한다면 사진은 어떨까


컴퓨터가 점을 표현하는 방식에는 RGB라는 체계를 이용하여
Red, Green, Blue 세가지 색을 기준으로 무슨색이 어떤 숫자로 나타낼지를 정하게 된다.


? 왜 하필 이 3가지 색상인가
무지개에 있는 모든 색이 이 3가지 색으로 이루어졌다는 것이 밝혀지면서 3가지 색으로 어떤 색깔도 표현 가능 하다는 것을 알게되어 이를 기준으로 하게 된다.

 

위에선 이 숫자 조합으로 HI! 라는 문자를 표현했다면 색상에서는 이 조합으로 또 다른 색을 만든다

R G B
72 73 33

 

 

이런 점들이 여러 개 모여 사진을 이루고 이 사진들이 여러 개 모여 동영상을 이룬다

 

0과 1 > 2진수 > 10진수 > 문자와 색깔 > 사진 > 영상

 


음성또한 마찬가지 각 음표를 숫자로 표현하여 이를 모아 음악으로 표현된다

 

 

'Computer Science > Basic' 카테고리의 다른 글

컴퓨터 과학 CS - 스크래치  (0) 2022.10.20
컴퓨터 과학 CS - 알고리즘  (0) 2022.10.20
컴퓨터 용어 정리  (0) 2022.10.09
특수문자 영어 호칭  (0) 2022.10.05
컴퓨터 과학 CS - 정보 표현 방법 (2진법)  (0) 2022.09.29

 

* 상시 업데이트

 

A

용어 링크
AWS  Amarzon Web Service
아마존에서 제공하는 클라우드 컴퓨팅 서비스
링크

B

용어 링크
     

C

용어 링크
Console 콘솔. 로컬 장치(호스트)에 붙어있어 직접 명령어를 작성할 수 있는 입출력 장치. 물리적 터미널로 볼 수 있다.  

D

용어 링크
DSL  Domain Specific Language : 도메인 특화 언어
 특정 영역을 타켓팅하고 있는 언어 즉, 특정 영역에 최적화된 프로그래밍 언어
 Java 등의 언어는 특정 영역이 아니라 다양한 영역이 가능하기에 DSL에 해당되지 않는다
 ( ex) DB에 데이터를 참조하기 위한 목적으로 사용되는 SQL )
 ( groovy DSL , Kotlin DSL (일반 Kotlin이랑 다른듯 하다)
 
Domain 소프트웨어로 해결하고자하는 문제 영역

온라인서점 사이트에서 책을 조회하고 구매한다고 가정하자. 개발자 입장에서 온라인서점은 구현해야할 소프트웨어의 대상이 된다. 온라인서점 소프트웨어는 상품의 조회, 구매, 결제등의 기능을 제공해야한다. 이때 온라인 서점은 소프트웨어로 해결하고자하는 문제 영역, 즉 도메인(domain)에 해당된다.
 한 도메인은 다시 하위 도메인으로 나눌 수 있다. 예를 들어 '온라인 서점' 도메인은 다시 주문, 결제, 배송같은 하위 도메인을 가진다. 
링크

E

용어 링크
       

F

용어 링크
Framework 프로그램의 기본 구조(뼈대) 의미.
원하는 기능 구현에만 집중하여 빠르게 개발할 수 있도록 기본적으로 필요한 기능이 모여져 있는 것.
라이브러리와 비교했을때 사용자가 제어를 해야하는 라이브러리와 달리 프레임워크는 프레임 워크 자체가 흐름을 제어하여 사용자는 프레임워크가 원하는 방식으로 이를 이용해야한다는 차이점이 있다. 
링크
f-string 문자 포맷팅 방법 중 하나로 f"" (에프 큰따옴표2개(또는 작은따옴표2새) 사이의 문자열) 방식으로 사용
문자열 사이에 변수를 사용할 수 있도록 하는 문법
파이썬만 가지고 있는 기능인 듯 하다. 
 

G

용어 링크
       

H

용어 링크
Host 네트워크에 연결된 모든 종류의 장치를 노드(Node)라고 부르는데, 노드 중에서도 네트워크 주소(IP 주소)가 할당된 애들을 호스트(Host)라고 부른다.  

I

용어 링크
IDE Integrated Development Environment : 통합 개발 환경
프로그램 개발을 위한 작업들을 하나의 프로그램 안에서 처리할 수 있는 환경을 만들어 제공하는 소프트웨어
 
Impl Implements의 약자로 인터페이스를 의미하지만 이 단어가 접미사로 붙어 있는 경우는 그 인터페이스의 구현 클래스라는 의미  
IMAP Internet Messaging Access Protocol  

J

용어 링크
JDK Java Developer Kit.
자바를 이용한 개발을 할때 필요한 여러 도구들을 모아서 제공하는 개발자용 자바
( Oracle JDK, Open JDK, Open JDK 구현체들 ( zulu, Adpot, Corretto 등 종류가 많다)
 

K

용어 링크
Kernel 커널. 단어 뜻 자체는 알맹이, 핵심이라는 뜻으로 운영체제의 핵심부로 컴퓨터 자원들을 관리하는 역할로 직접적으로 사용자와 상호작용을 하지 않는다. 사용자와 상호작용을 위해서는 쉘이 필요하다.   

L

용어 링크
Library 라이브러리. 프로그래밍에서 필요한 기능들을 모아 묶어놓은 코드 묶음. 활용가능한 단순 도구들의 집합.  

M

용어 링크
mimetype Multipurpose Internet Mail Extensions의 약자.
간단히 말하면 파일 변환을 의미한다. 이 단어가 생길 당시엔 이메일과 함께 보내는 파일을 텍스트 문자로 변환하여 전달하기 위해 만들어졌기 때문에 Mail이란 단어가 들어갔지만 지금은 웹을 통해 여러 형태의 파일을 전달하는데 사용되어 지고 있다.
 

N

용어 링크
NoSQL Not Only SQL. 관계형 데이터베이스를 사용하지 않는다는 뜻이 아니라 오직 관계형만 사용하는 SQL과는 달리 다양한 유형의 데이터베이스를 사용하는 것을 의미한다.   

O

용어 링크
OS Operating System / 운영체제
PC에 설치되어 하드웨어를 제어하고 소프트웨어를 위한  시스템 환경을 제공하는 시스템 소프트웨어
( Windows, Mac OS, Linux, Unix 등이 있다) 
 

P

용어 링크
Prompt 프롬프트. 사용자의 명령을 받아들일 준비가 되었음을 모니터에 나타내는 표시를 의미한다.
보통은 $, %, # 등으로 표시
 
PR Pull Request 
Git hub에서 자신의 작업 내역을 바로 merge하지 않고, 프로젝트에 내 작업내역을 merge해달라고 요청하는 것 
 
Port 네트워크를 통해 데이터를 주고받는 프로세스를 식별하기 위해 호스트 내부적으로 프로세스가 할당받는 고유한 값. 기본적으로는 같은 호스트 내에서 서로 다른 프로세스가 같은 포트 넘버를 가질 수 없다. 그러나 같은 프로세스가 같은 포트를 가지고 여러 개의 소켓을 열 수 있다.  

Q

용어 링크
       

R

용어 링크
repo repository : Git 저장소  
RDS    

S

용어 링크
src source의 약자   
SQL Structured Query Language. 구조적 쿼리 언어
관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어
 
Shell 쉘 혹은 셀.
운영체제의 커널과 사용자 사이 다리 역할로 명령어 해석기(CLI, Command Line Interpreter).
터미널 안에서 사용자로부터 명령을 받으면 그 명령을 해석하고 프로그램을 실행해 주는 프로그램
 
SSE Server Sent Event 약자.
일반적으로 이벤트가 클라이언트에서 서버로 흐르는 것과 달리 서버에서 클라이언트로 푸쉬되는 기술을 말하며 서버의 데이터를 실시간으로 Streaming하는 기술이다.
쉽게 말하자면 서버에서 데이터가 변하면 클라이언트 요청없이 클라이언트로 보내는 기술.

양방향인 Websocket과 달리 한방향으로 데이터를 준다.
 
Socket 소켓. 프로세스가 네트워크를 통해서 데이터를 받기 위한 실제적인 창구 역할을 한다. 그러므로 프로세스가 데이터를 보내거나 받기 위해서는 반드시 소켓을 열어서 소켓에 데이터를 써보내거나 소켓으로부터 데이터를 읽어들여야 한다.
소켓을 열기 위해선 호스트에 할당된 IP 주소, 포트 넘버, 프로토콜(Protocol) 등이 필요하며, 이 세 가지가 소켓을 정의한다. 

 
S3    
SMTP Simple Mail Transfer Protocol  
SSL    
     

T

용어 링크
Terminal 터미널. 로컬 뿐만 아니라 원격 접속이 가능한 콘솔이 터미널이다.
쉘을 실행하기 위한 포장 프로그램으로 윈도우의 cmd, 맥의 terminal 등에 해당
 
TLS    

U

용어 링크
URI Uniform Resource Identifier :  통합 자원 식별자
웹 기술에서 사용하는 논리적 또는 물리적 리소스를 식별하는 고유한 문자열 시퀀스
 
URL Uniform Resource Locator:
흔히 웹 주소을 일컫는다. URL도 URI의 하위 개념 중 하나로 네트워크 상에서 자원이 어디에 위치해 있는지 알려주기 위한 규약이다. 
 

V

용어 링크
       

W

용어 링크
       

X

용어 링크
       

Y

용어 링크
     

Z

용어 링크
       

 

 

 

" "   더블 쿼테이션 마크   Double Quotation Mark *   애스터리스크   Asterisk
' '   싱글 쿼테이션 마크   Single Quotation Mark ~   틸드   Tilde
@   엣/엣사인   At Sign ^   캐럿   Caret
/   슬래쉬   Slash \   백 슬래쉬   Back Slash
&   앰퍼샌드   Ampersand .   피리어드 / 닷   Period / Dot
#   샾   Sharp |   버티컬 바 / 파이프   Vertical Bar 
:   콜론     Colon ;   세미 콜론   Semicolon
_   언더스코어 / 로우대쉬   Underscore / Low Dash -   하이픈 / 대쉬   Hyphen / Dash
,   콤마   Comma =   이퀄   equal
( )   퍼렌서시스   Parenthesis { }   브레이스   Brace
[ ]    브래킷   Bracket < >   앵글 브래킷   Angle Bracket
%   퍼센트   Percent Sign $   달러 사인   Dollar Sign
?   퀘스쳔 마크   Question Mark !   엑스클러메이션 마크   Exclamation Mark
`   그레이브 / 백틱   Grave / backtick '   어퍼스트로피   Apostrophe

 

그레이브 vs 어퍼스트로피 

: 그레이브는 특정한 발음기호를 가진 알파벳 표기할 때 사용하며 ESC 아래 있는 키로 입력

어퍼스트로피는 영어에서 말 생략 또는 소유격에 사용되는 문자로 작은 따옴표 한개로 입력

+ Recent posts