📙 개인미션
1. 아래 준비물이 준비되어있다는 가정 하에, 3살짜리 아이라도 이해하고 실행할 수 있도록 라면 끓이는 방법을 의사코드(Pseudo code)로 표현해봅시다. 자신만의 라면끓이는 노하우가 있다면 꼭 공유해주세요!
* 준비물 : 라면, 건더기스프, 양념스프, 수도꼭지, 라면냄비, 가스레인지, 젓가락, 달걀, 기타 자신만의 노하우가 담긴 재료 혹은 도구
1. 라면을 끌이기 위한 준비물을 준비한다.
2. 수도꼭지를 연다.
3. 냄비에 물을 받는다.
4. 냄비를 가스 레인지 위에 올린다.
5. 가스 밸브들 열고 불을 킨다.
6. 물이 끓었는지 확인한다.
7. 만약 물이 끓지 않았으면,
8. 1분동안 대기한다.
9. 6번부터 다시 실행한다.
10. 만약 물이 끓었으면,
11. 라면과 스프를 뜯어 냄비에 넣는다.
12. 3분동안 대기한다.
13. 젓가락으로 라면을 휘저어본다.
14. 만약 면이 아직 풀어지지 않으면,
15. 1분동안 대기한다.
16. 13번부터 다시 실행한다.
17. 만약 면이 잘 풀어지면,
18. 가스밸브를 끄고 불을 끈다.
19. 냄비를 들어 식탁으로 옮긴다.
20. 라면을 맛있게 먹는다.
2. 스크래치를 활용하여 간단한 프로그램을 만들어봅시다. 프로그램의 형태와 입력, 출력 결과 모두 아무런 제약이 없습니다. 상상의 나래를 펼쳐보세요! (https://scratch.mit.edu/)
마법사 만들기 scratch.mit.edu/projects/472334608/
📚 팀미션 (아래 질문 중 택1)
- 팀 미션을 위해서 우리 팀은 Slack 이라는 커뮤니티를 이용해 의견을 교류하였다.
- 1주차 우리 조의 선택 과제는 1번 문제였다.
1. 컴퓨터는 왜 사람이 사용하는 수 체계와 다른 2진수를 사용하게 되었는지, 그리고 왜 기술이 진보한 지금까지도 2진수를 사용하고 있을지 조사와 논의를 통해 정리해봅시다. (우리조 선택 과제)
* tip : 정확한 답이 있는 것이 아닙니다. 논의와 검색을 통해 근거있는 이유를 주장해봅시다.
- 우리팀 의견 컴퓨터가 2진법은 사용하는 이유는 첫번째로, 오류를 최소화하고 효율성과 명확성을 증대하기 위해서이다. 초기 컴퓨터에서는 10진수 이용했으나, 전압을 10단계로 나누어 신호 체계를 만들면 전압이 불안해져 소수점이하에서 오차가 생기고 이를 복원할 수 없다. 또한 2진법보다 진법을 늘리면 신호 개수가 증가하여 여러가지 신호를 보내야하므로 효율성이 떨어진다. 예를 들어 0,1로 전구를 표현하면 어둡다 / 밝다 또는 꺼짐/켜짐 으로 표현가능하나, 전구를 0~9로 표현한다고 하면 밝다 조금 밝다 …. 보통… 좀 어둡다 어둡다… 등으로 표현하여야 하니 명확성이 떨어지게 되며 판단 근거가 주관성이 강해진다 반면, 2진수는 오직 전기가 흐르면 1, 전기가 흐르지 않으면 0이라는 두가지 전압 단계만 존재한다. 이는 10진수로 전압을 나눠 처리하는 것에 비해서 안정적이다. 두번째로, 2진수의 경우 오차가 발생했을 때, 반올림을 통해 원래의 값을 복원할 수 있기 떄문이다. (참고 - news.joins.com/article/22760885) 세번째로, 데이터 처리 비용을 아낄 수 있기 때문이다. 전기적 신호는 0과 1로 상태를 구분하고 2개 이상의 전기 신호로 구분해야 하는 경우 규칙이 늘어나게 되므로 전압을 측정할 때 데이터 처리 시간이 길어져서 데이터 처리 비용이 증가하게 된다. 예를 들어 컴퓨터에서 10진수 체계를 사용헀다면 100개 이상의 규칙이 사용되었어야 하지만 , 2진 시스템을 사용하면 필요한 규칙은 4개에 불과하다. 네트워크 측면에서 살펴볼 때 디지털 데이터를 디지털 신호로 바꾸는 과정에서 처리시간이 증가하면 변수가 많아져서 (전송과정에서 정전이 될 확률 증가 등) 안정화가 힘들기 때문에 데이터의 송신자와 수신자 모두에게 악영향을 미칠 수 있다. 네번째로, 패턴에 사용되는 비트(컴퓨팅에 있어서 가장 작은 단위) 가 많을수록 더 많은 조합이 생성되고 더 많은 조합이 있으면 더 많은 것을 표현할 수 있기 떄문이다. 숫자 10을 놓고 본다면 십진법은 10으로 나타내지만 이진법은 1010으로 나타내게 된다. 사용되는 비트가 증가하였으므로 이미지상 픽셀을 살펴보면 더 세분화하여 이미지에서 다양한 모양 및 다양한 색상으로 나타낼 수 있다. 이는 오디오 및 문자에서도 마찬가지로 적용할 수 있다. 다섯번째로, 컴퓨터의 논리 게이트는 두개의 입력을 받아서 AND,OR,XOR과 같은 작업을 관리하기는 쉽지만, 입력의 숫자가 늘어나면 진리표가 거대해지므로 관리하기가 힘들기 떄문이다. 여섯번째로, (컴퓨터팅의 논리 또는 수학적 특성이 아닌 ) 하드웨어 및 엔지니어링에 있어서 신호 저하 문제 때문이다이진 전자 장치는 true와 false,1과0으로 상태를 나타낸다. 만약 3진법 시스템이 있다고 가정해보자, 더 이상 on/off가 아닌 또다른 값인 some을 나타내는 값 범위도 필요하다. 이렇게 케이스를 늘리면 복잡성이 증가하고, 어느정도 사용하게되면 구성 요소가 저하되고 적절한 신호 변환을 제공할 수 없다. 또한 구성 요소가 증가되면 저항이 증가하고 기계가 불안정해진다. 따라서 이러한 성능 저하를 예방하기 위해 2진 시스템을 사용하는 것이다 컴퓨터 기술이 진보한 지금까지도 2진법을 사용하는 이유도 2진수를 이용한 컴퓨터가 가장 정확성이 높고, 효율적이기 때문이다. 그리고 2진수 사용을 전면 대체할 만큼의 기술적 발전은 아직 이루어지지 않은 상태로, 2진수 기반으로 이미 규격화 되어 있는 시스템을 바꾸는 것은 어려울 것으로 보인다. 단 처리할 정보의 양이 많아져 8진법 16진법 32진법 등도 사용하게 되었다. 또한 컴퓨터 발전 초기부터 2진수를 기반으로 했기 때문에 프로토콜이 2진수를 기반으로 발전해 왔다. 현대에 이르러서 수많은 프로토콜을 바꾸기는 어렵다. |
+ CS50 스터디 우수 답변을 통한 보충 (뷰아 4조) * 전기 신호 유무의 판별 때문이다. 전기가 흐르면 전압이 점점 높아진다. 그리고 전압이 일정 임계치 이상을 넘어섰을 때 우리는‘전기가흐른다’고 표현한다. 하지만 전압이 항상 일정하게 유지되거나 증가한다고 장담할수없다. 현실세계의 모든 아날로그들은 왜곡현상이 있어 원정보를 일정하게유지하기어렵기때문이다. 반면 컴퓨터는 정확하고 논리적인 숫자값으로 현실세계를 이해하려한다. 따라서 전압 의 왜곡과 상관없이 전기가 흐르는 상태인지 / 아닌지를 컴퓨터가 논리적으로 구분할 수 있게 해줘야한다. 여기에 가장 적합한방식이 2진수다. 0과1로만 현실세계를 표현하기 때문이다. 2진수를 활용하면 최소한의 임계치를 활용하여 전기가 흐르는지 (1) / 아닌지 (0)를 컴퓨터가 이해할수있다. * 3진법 컴퓨터 3진법컴퓨터는 3진논리를사용한컴퓨터이다.일반적으로 균형 3진법을 사용한다.균형3진법은밑이 3이고 자릿수가 -1,0,1인비표준 위치 기수법 이다. 한자리수의 곱셈이 한자리 수가 되고,부호전환이 간단하다는특징을 가진다.이러한 특징으로 인해3진법 컴퓨터의 주된 기수법으로 쓰인다. 3진법 컴퓨터가 등장해야하는 필요성에는 초절전, 고성능, 소형화등의 이유가 있다. 2진법을 쓰면 단위면적당 집적도가 높아서 누설전류가 증가해 소비전력이 증가하게된다. 3진법으로는 훨씬 더 적은 비트로 많은 양의 정보를 저장할 수 있기 때문에 계산 속도와 시간이 줄어들고, 이에 따라 전력 소모량도 절약된다. 같은 크기의 소자를 사용해 3진법 컴퓨터를 만들수있다면 2진법컴퓨터보다 실용적이다. 현재는 3진법 논리 회로를 실제로 제작하는 비용이 비싸 실용화가 되지못하였다. 1958년에 이미 3진법 컴퓨터 '세튠'이 개발됐지만, 당시에는 반도체의 발전으로 2진법 컴퓨터가 더 각광을 받았었다. 그러다 최근 빅데이터시대를 맞아 반도체 소자의 크기를 줄이면서도 집적도를 높이는 3진법 컴퓨터가필요해졌다. 광컴퓨터 및 조셉슨소자등 삼진논리를 적용하기 쉬운 하드웨어가 발전하면 3진법 컴퓨터가 대중화 될 가능성이 있다. 삼성 전자에서도 3진법컴퓨터를 미래기술육성사업테마로 선정한바있다 |
2. 컴퓨터는 아날로그 신호인 소리를 어떻게 디지털로 저장하는 걸까요?
- 본 답안은 CS50 스터디 2번 우수 답변으로 선정된 Think 1조의 의견을 바탕으로 정리한 것입니다.
- 참고: DIGITAL SIGNAL PROCESSING 4th edition, John G. Proakis G. Manolakis
1. 샘플링
연속시간 신호를 이산시간 신호로 변환하는 작업입니다. 이산시간 순 간의 간격 T 를 샘플링 간격이라고 하며, 1/T 로 정의되는 Fs 는 샘플링 주파수 혹은 샘플링률이라고 합니다. 1
2. 양자화
이산시간 연속값 신호를 이산시간 및 이산값 신호로 변환하는 작업입니다. 각 신호 샘플의 값을 유한개의 값들로 이루어진 유한집합 내의 한 요소 값으로 나타냅니다. 이때 양자화하기 전의 샘플 값와 양자화한 출력값의 차이값을 양자화 오차라고 부릅니다.
3. 부호화
각 이산값을 b-비트 이진 수열로 표현합니다.
3. 내가 사용하는 모니터는 1초에 몇 개의 bit(0과 1)를 사용하여 화면을 표현하고 있을까요? 또, 내가 사용하 는 컴퓨터의 CPU는 1초에 몇 개의 bit(0과 1)를 처리할 수 있을까요?
- 본 답안은 CS50 스터디 2번 우수 답변으로 선정된 주안 4조의 의견을 바탕으로 정리한 것입니다.
모니터에는 해상도, 주사율, 픽셀 해상도의 개념이 있다. 모니터의 해상도는 화면을 구성하는 픽셀의 수이며, 해상도가 높을수록 화면은 더 선명해진다. 해상도는 (가로의 픽셀 개수)x(세로의 픽셀 개수)로 표현한다. 예를들어 해상도 1920x1080 은 가로 1920 개, 세로 1080 개의 픽셀의 수를 의미한다. * 픽셀(pixel) : 화면의 이미지를 구성하는 최소 단위인 점 모니터의 주사율은 1 초에 화면에 표시할 수 있는 이미지의 수이며, 주사율이 높을수록 화면은 더 부드러워진다. 주사율은 '새로 고침 빈도'로도 말할 수 있다. 픽셀 해상도는 하나의 픽셀 이미지에 담겨 있는 비트 수이며, 픽셀 해상도가 높을수록 많은 색을 표현한다. 1 비트 픽셀은 2 가지 색상, 8 비트 픽셀은 256 색상, 24 비트 픽셀은 16,777,216 색상을 표현할 수 있다. 이를 모니터에서는 다음과 같이 구할 수 있다. 모니터의 비트 수준이 8 비트라면, 픽셀 해상도는 32 비트이다. 모니터에는 총 4 개의 채널(R, G, B, 알파)이 존재하고, 각 채널마다의 비트 수준이 8 비트이기 때문이다. |
위 개념을 통해, 화면을 표현하기 위해 1 초에 사용하는 bit 의 수를 구하는 식을 도출할 수 있다.
(1 초에 사용하는 bit 의 수) = (해상도) * (주사율) * (픽셀 해상도)
1 초에 처리하는 bit 의 수는 CPU 의 클럭 속도로 알 수 있다.
CPU는 중앙처리장치로 매초 다양한 프로그램의 많은 명령을 처리한다. 클럭 속도는 CPU 가 초당 실행하는 사이클 수를 GHz(기가헤르츠) 단위로 측정한다. 일반적으로 클럭 속도가 높을수록 CPU 속도가 빠르다. 1Hz 는 초당 1 번의 전기적 신호(bit)를 생성한다. 1GHz 는 1 초에 10 억 번의 전기적 신호(bit)를 생성한다. CPU 의 클럭 속도가 1.6GHz 라면, 1 초에 처리되는 bit 의 수는 16 억개이다.
- 연속시간 신호의 연속된 값들 중에서 이산시간 순간에서의 샘플들만 취함으로써 얻어지는 신호 [본문으로]
'컴퓨터 > CS 50' 카테고리의 다른 글
모두를 위한 컴퓨터 과학 - 2주차 [C언어] 📚과제 (0) | 2021.01.18 |
---|---|
모두를 위한 컴퓨터 과학- 2주차 [C 언어] (0) | 2021.01.04 |
모두를 위한 컴퓨터 과학- 1주차 [컴퓨팅 사고] (0) | 2020.12.30 |
댓글