2025년, 코딩은 선택이 아닌 필수!

2025년 모든 학교에서 코딩이 시작 됩니다. 먼저 준비하는 사람만이 기술을 선도해 갑니다~

강의자료 343

순열과 조합의 개념

2019 MATH -TALK (매스-톡) 은 학생들에게 수학에 대한 긍정적인 경험을 제공하고 대중에게 수학에 대한 즐거움을 선사 하는 것이 목적인데요. 참가내용은 학생들이 자신이 이수한 교육과정 및 교과서 내에서 수학을 주제로 자유롭게 설명을 하는 것입니다. 참여 대상은 전국 중.고등학교에 재학중인 학생으로 개인 또는 2인으로 팀을 이루어 참가 가능 한데요. 오늘은 2019년 고등부 대상작품을 링크 걸어 보았어요. 이번 대상 작품은 충남 목천고등학생들이 수상을 했는데요. 내용은 순열과 조합에 관한 문제를 이해하기 쉽고 너무 재미있게 해석했는데요. 엄마가 피자와 치킨 햄버거 떡볶이를 시켜 주시고는 언니것도 남겨 두어야 하니까 딱 두가지만 먹으라는 거예요.ㅠ.ㅠ 음... 저 같으면 모두 좋아하는 것이니까 반..

변수명 짓기 사이트

처음 C언어를 배우게 되면 변수에 대해 배우게 됩니다. 변수란 어떤 메모리 영역을 할당해 놓고 그 메모리 영역에 데이터를 저장해 놓거나 꺼내서 사용하고 또한 변경하는 작업들을 수행하기 위한 프로그래밍을 하기 위해서는 필수가 아닌가 생각이 되는데요. 변수명을 지어 주는 것은 조물주가 하나의 생명을 잉태하고 그 것에 이름을 지어주는 것처럼 하나하나의 혼이 들어가게 됩니다. C언어에서 변수명을 짓기 위한 규칙은 다음과 같습니다. 알파벳('a'~'z','A'~'Z') 숫자(0~9) 특수문자('_') 이 세가지를 혼용해서 변수명을 짓게 됩니다. 단 숫자(0~9)가 맨 앞에 나올 수가 없으며 시스템에서 사용하는 예약어(for,int...)등을 사용할 수는 없습니다. 이렇게 처음 변수명을 만들라고 하면 학생들은 처음..

오토마타란

컴퓨터 과학을 만나다 보면 종종 오토마타라는 단어를 종종 접하게 되는데요. 오늘은 오토마타가 무엇인지 알아 보려고 합니다. 오토마타란 오토머튼(automaton)의 복수형으로, 사람이 지속적으로 조정하지 않아도 스스로 움직이는 자동 로봇을 뜻하는 말로 쓰이고 있습니다. 위키백과에 따르면 "오토마타는 적어도 유한한 상태를 갖고, 입력을 받아 입력에 따라 일정하게 상태를 전이하며, 출력을 내놓는다" 라고 정의하고 있습니다. 컴퓨터 과학의 문제를 풀다 보면 위와 비슷한 그림을 종종 보게 되는데요. 위의 문제는 결정적 유한 오토마타의 예이며 S1, S2는 상태이고, 1과 0은 기계가 입력으로 받아들이는 문자이다. 이 기계는 1과 0으로 이루어진 모든 가능한 문자열 중 0이 짝수 개인 것을 인지하고, 그렇지 않은..

프렉탈이란?

정보과목을 접하다 보면 프렉탈이란 용어를 자주 접하게 됩니다. 프로그래밍을 하는 학생들에게는 재귀함수라는 말이 오히려 이해 하기 더 쉬울것 같은데요. 바로 작은 구조를 이용해서 큰 구조를 만들어 가는 것을 프랙탈이라고 합니다. 예를 들어 칸토어 먼지는 사각형 하나를 기준으로 사각형 4개가 사각형이 되는 구조를 가지고 있고 다시 또 그 4각형 4개가 다시 사각형을 만드는 구조를 지니고 있습니다. 그렇다면 이러한 프랙탈의 창시자는 누구일까요? 프랙탈 이론은 1960년대 프랑스 수학자 B.B. 만델브로트 박사에 의해 창안되었다고 해요. 만델브로트 박사는 울퉁불퉁한 바위로 이루어진 해안선의 길이가 궁금해져서 바위를 단계적으로 확대해서 들여다 보았는데 마치 나뭇가지처럼 비슷한 모양이 계속 반복되는 사실을 발견했습..

공부 잘하는 방법

하드 정리하다가 공부잘하는 방법이라는 문서가 보이네요.^^ 어느분이 작성해 놓았던 자료를 제가 다운받아 가지고 있던 자료네요. 지금 다시 읽어 봐도 맞는 말만 적혀 있는 것 같아요. 자신이 똑똑하다고 생각해서 혹시 놀고 있는 사람은 없나요? 똑똑하다는 것은 자신의 자만일 수도 있어요. 성실함이 아무리 똑똑한 머리도 치고 올라 갈 수 있음을 매 순간 느끼고 있는 한 사람으로... 공부 잘하는 방법이... 남들 놀때 더 열심히 노력하는 것 만큼 중요한 것은 없다는 것을 느끼고 있습니다. 물론 뛰어난 머리를 가지고 태어난 학생이라면 그렇지 않은 학생보다 유리한 출발점에서 시작할 수는 있겠지만... 요즘에서야 거북이와 토끼의 우화가 괜히 나오는 것은 아니라는 것을 새삼 깨닫고 있네요. 또한 작은 목표를 세우고 ..

[알고리즘]그리디(greedy) 알고리즘

그리디(greedy) 알고리즘이란? 단어에서 나타내듯이 아주 탐욕스러운 알고리즘 입니다. 이렇게 탐욕스럽다라고 표현 하니 학생들은 아주 나쁜 알고리즘이네요? 라고 말하네요. 하지만 탐욕스러운 것이 정말 나쁜 것일까요? 자신이 항상 손해 보면서 사는 사람은 없을 것입니다. 사람 사는 세상에 주고 받고 하면서 자신이 더 큰 이득을 보기 위해 조금 더 작은 것을 내 주는 것일 뿐입니다. 이와 마찬가지로 그리디 알고리즘은 현재 선택해야 되는 시점에서 자신에게 가장 이득이 되는 것을 취하고 나머지는 버리는 경우를 그리디 알고리즘이라고 합니다. 이러한 알고리즘의 예로 가장 많이 사용 되는 것이 동전 바꿔 주는 문제인데요. 500원,100원,50원,10원,5원,1원 단위의 동전이 있을때 문방구에 가서 1432원짜리 ..

Code Block 디버그 오류(For MinGW compilers, it's 'gdb.exe')

저희 원의 학생이 집에서 코드 블럭 설치 후에 디버깅을 하는데 디버깅이 안된다고 해서 처리방법에 대해 설명 드립니다. 학생의 컴퓨터에서 디버깅을 실행하면 아래 그림과 같이 디버깅 설정이 잘못 되어 있다고 나오는데요. 당황하지 마시고 메뉴에서 Settings->debugger 을 선택 합니다. 다음과 같이 설정화면이 뜨면 Default 를 선택해 줍니다. Executable path 에 빨간색으로 되어 있는데 Path가 지정되어 있지 않거나 Path가 제대로 안 잡혀 있는 경우입니다. 따라서 옆에 ... 버튼을 클릭하여 해당 path를 잡아 주면 되는데요. 일반적으로 CodeBlock 설치 위치가 C:\Program Files (x86)\CodeBlocks\MinGW\bin 에 설치가 됩니다. C:\Pro..

행렬의 곱을 이용한 피보나치 수열 구하기

피보나치 수열은 죽지 않는 토끼에서 유래 되었는데요. 처음 태어난 토끼 한쌍은 한달이면 다 자라고 그 다음달 부터는 매달 한쌍의 새끼를 낳았을때 1년 후 혹은 2년 후에 몇쌍이 되어 있는지 궁금해서 묻는 문제에서 유래 되었는데요. 이러한 토끼가 살아 있는 쌍을 구하는 공식을 테이블을 이용해 그려 보면 다음과 같이 그려 볼 수가 있습니다. 새끼를 낳을수 있는 토끼를 성체라고 보면 다음과 같이 됩니다. 기간 1월 2월 3월 4월 5월 6월 7월 8월 9월 태어난쌍 1 0 1 1 2 3 5 8 13 성체 0 0 1 1 2 3 5 8 13 살아있는쌍 1 1 2 3 5 8 13 21 34 성체를 계산 하는 방법은 전월의 성체의 수에 전전월에 태어난 토끼의 수를 더해 주면 됩니다. 가령 3월의 성체 수는 2월의 성..

행렬식의 기하학적 의미 - 벡터가 이루고 있는 평행사변형의 넓이

이산 수학을 공부하다 보면 행렬에 관한 문제를 풀게 되는데요. 행렬을 배우다 보면 행렬식을 배우게 됩니다. 영어로는 determinant 라고 하면서 계산 하는 방법은 다음과 같습니다. A 행렬이 다음과 같이 구성 되어 있을때 행렬식 det(A) = a11 * a22 - a12 * a21 과 같이 계산이 됩니다. 그렇다면 이러한 행렬식이 의미하는 것은 무엇일까요? 알고리즘에서 기하문제가 종종 나오는데... 기하 문제에서 사용하는 사각형의 부피를 구할때 이 행렬식을 이용하기도 합니다. 오늘은 이 두개의 벡터가 이루고 있는 평행사변형의 넓이에 대해 알아 볼까 합니다. 위와 같은 벡터가 두개가 있는 경우 행렬식은 이 벡터를 선형 변환 후 두 기저벡터가 이루고 있는 평행사변형의 넓이를 의미합니다. 이것을 벡터의..

[컴퓨팅 사고력]2의 보수 3의 보수는 무엇일까?

엊그제 학생들에게 2의 보수를 설명을 해 주면서 10의 보수의 개념에 대해 먼저 설명을 해주었답니다. 보수란 보충하는 수의 개념으로 8의 10의 보수는 10을 만들기 위한 2이고 8의 9의 보수는 9를 만들기 위해서 보충하는 1의 수라고 말해 주었답니다. 그리고 나서 2의 보수는 1의 보수에 1을 더한 값이라는 개념에 대해 설명을 해 주었습니다. 왜냐하면 2의 보수가 되려면 1과 2차이가 1이 차이가 나기 때문에 1을 더해 주어야 하기 때문이죠... 그러면서 88의 10의 보수는 100을 만들기 위한 12인데 이것을 100 - 88 = 12 라고 계산 하는 것 보다 9의 보수 개념으로 각각의 자리에서 9-8 = 1, 9 - 8 = 1 이기 때문에 11 + 1 = 12 가 되는 방법에 대해 설명을 해 주면..