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

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

강의자료 346

알고리즘 대회 - 규칙찾기(무시하는 힘)

알고리즘 대회에서는 어떤 문제를 이해하고 그문제에서 어떤 규칙을 찾아 프로그래밍을 얼마나 빨리 하는가 하는 대회입니다. 이때 문제를 읽고 이해하는데 독서를 많이 한 학생일 수록 더 빨리 이해하는 것을 알 수 있는데요. 이러한 규칙을 찾을때 어떤 문제에서 핵심을 찾는 능력이 중요합니다. 2019년 중등부 2번 개구리점프 같은 문제는 다음과 같이 나왔는데요. 여기서 y축을 생각하느라고 고민을 많이 하고 시간을 허비할 수가 있는데요. 실제로 이 문제에서는 개구리가 y축으로는 어느 높이나 뛰어 올라 갈 수 있기 때문에 개구리가 점프 하지 않고 걸어가는 문제의 수직선 문제로 변환하면 생각하는 것이 단순화 됩니다. 이때 이러한 부분을 얼마나 빨리 깨닫는가 하는 부분은 실제로 대회에서 등수를 가르는 문제이기도 합니다..

AI 발전의 역사

경인교대 이철현 교수님의 발표 자료 중 AI 발전의 역사가 있어서 캡쳐해 보았습니다. AI의 시작은 컴퓨터가 발명 되기 이전 부터 태동이 되기 시작했는데요. 제가 어렸을때 만화속에서나 보았던 공상과학의 문물들이 제가 성인이 되었을때 실물을 확인하고 너무 깜짝 깜짝 놀랬었는데요. 이렇게 공상과학이 현실이 되는 세계에서 우리는 새로운 상상을 하고 그것이 현실이 되게 만들어 가는 것은 정말 중요한 것 같네요. 1950년 튜링이 기계와 사람을 판단하는 기준을 세운 튜링 테스트는 지금까지도 인공지능을 테스트 하기 위한 기준이 되고 있으며 1965년 발표한 무어의 법칙에 따르면 반도체 집적회로가 24개월마다 2배로 성능이 증가한다는 규칙이 있는데 정말 그 때부터 지금까지 보면 어마어마한 속도록 반도체가 발전해 오는..

순열과 조합의 개념

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월의 성..