AI 개념의 시작: 글자 리스트
리스트를 만들고 허브에 글자를 표시합니다
탐색을 위한 질문
• 어떤 이유로 하나의 변수에 둘 이상의 값을 넣어야 할 경우가 생길까요?
준비
• 스파이크 프라임 허브가 충전되어 있는지 확인하세요(특히 블루투스로 연결되어 있는 경우).
관심유도
(그룹 토의, 5분)
리스트에 관한 대화를 통해 학생들의 관심을 불러일으켜주세요.
학생들이 자신 또는 다른 사람들이 리스트를 사용하는 방식에 대해 토의를 시작합니다. 학생들에게 리스트의 유형(예: 식료품 목록, 할 일 목록, 선수 명단 또는 플레이어 명단)을 나열해보라고 하세요.
질문을 통해 학생들의 생각을 들어보세요.
• 리스트를 왜 사용할까요?
• 리스트가 우리에게 무엇을 제공하나요?
• 리스트의 항목을 어떻게 참조하나요?
• 리스트를 어떻게 구성할 수 있나요?
시간이 허락한다면, 학생들에게 여러 가지 유형의 리스트를 만들어서 서로 공유하고, 타인의 리스트를 참조하여 추가할만한 항목이나 요소가 있는지 알아보게 하세요. 리스트의 유형에는 여러 종류의 과일이나 음식, 색상, 거주지, 음악 등이 포함될 수 있습니다.
탐구
(소규모 그룹, 20분)
학생들이 언플러그드 활동을 통해 리스트를 만드는 방법을 조사합니다.
리스트 만들기: 언플러그드
학생들에게 세트에 들어 있는 2x4 브릭을 모두 골라내게 하세요. 모든 학생이 각자 5개의 브릭(노란색, 녹색, 보라색, 빨간색, 파란색) 및 1~5의 숫자가 하나씩 적힌 5장의 메모지(종이 또는 포스트잇)를 갖고 있어야 합니다.
학생들에게 세트에서 골라낸 브릭 5개의 색상을 하나하나 나열하거나 이름을 대보라고 하세요. 학생들이 노란색, 녹색, 보라색, 빨간색, 파란색을 식별할 수 있어야 합니다.
학생들에게 이 색상들이 리스트의 값으로 사용될 것임을 설명해주세요. 리스트는 여러 값을 저장할 수 있는 일종의 변수입니다. 파이썬으로 리스트를 프로그래밍하려면 리스트의 이름을 정하고, 리스트에 들어갈 항목 또는 요소를 나열하고, 리스트에 들어 있는 각 요소의 위치 또는 인덱스 값을 알고 있어야 합니다.
학생들에게 각자 다섯 개의 브릭을 숫자가 적힌 메모지와 일대일로 연결짓게 하세요. 정해진 순서는 따로 없습니다. 그 다음, 각자 선택한 순서에 따라 온전한 리스트를 작성하게 하세요(리스트에 들어 있는 브릭의 위치 번호 또는 인덱스 값 포함).
라운드 1
학생들에게 리스트의 인덱스를 이용한 브릭 쌓기 게임을 해보라고 하세요.
자신의 리스트에 해당하는 메모지를 가방, 그릇 또는 기타 용기에 모두 넣은 다음, 파트너 역할을 맡은 학생이 그중 하나의 숫자를 무작위로 선택합니다. 즉, 리스트의 인덱스를 나타내는 숫자에 따라 브릭을 쌓는 순서가 지정되며, 종국적으로 학생마다 브릭 5개가 겹쳐 쌓인 탑을 하나씩 갖게 될 것입니다.
브릭 탑이 완성되는 대로 파트너 역할 학생들에게 색상의 패턴을 서로 비교해보게 하고, 학생들에게 색상의 패턴이 모두 같은지, 아니면 서로 다른지 물어본 후, 그 이유를 토의에 부치세요.
라운드 2
이제 학생들에게 숫자가 적힌 메모지 두 벌을 가방, 그릇 또는 기타 용기에 모두 넣으라고 하세요. 그 다음, 같은 방식으로 브릭 5개 높이의 탑을 만들 텐데, 이번에는 두 벌의 숫자 메모지를 사용하는 관계로 중복되는 항목들이 나올 수 있을 것입니다. 학생들에게 두 개의 리스트 중 하나를 선택하고 쌓기 게임을 반복하게 하세요.
학생들이 게임을 마치는 대로 새로운 패턴이 어떠한지를 살펴보게 하세요. 색상이 반복되는 경우가 있나요? 그 이유를 토의에 부치세요.
리스트 프로그래밍: 글자 리스트
학생들이 알파벳 글자가 무작위로 표시되도록 허브를 프로그래밍합니다.
학생들에게 스파이크 프라임 세트에 들어 있는 허브를 작동하고, 파이썬 프로그래밍 캔버스에서 새 프로젝트를 열게 하세요. 혹시 프로그래밍 영역에 이미 코드가 들어 있다면 일단 그것부터 다 지우고, 허브를 연결하게 하세요.
파이썬에서 리스트를 만드는 방법에 대해 학생들과 토의를 시작하고, 토의에 도움이 될만한 샘플 코드를 보여주세요. 그 다음, 학생들에게 이 코드를 프로그래밍 캔버스에 입력하고 프로그램을 실행하게 하세요.
샘플 코드:
from hub import light_matrix, button
import runloop
async def main():
# 리스트를 정의합니다
letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
# 네 번째 인덱스를 리스트에 씁니다
await light_matrix.write(letters[4])
runloop.run(main())
허브에 글자 D가 나타나야 합니다. 프로그램에 대해 다함께 토의를 진행하고, 인덱스 번호가 [4]라는 것을 학생들에게 알려주세요. 파이썬에서 인덱스 0은 리스트의 첫 번째 항목을 나타내며, 따라서 인덱스 4는 리스트의 다섯 번째 항목에 해당합니다.
설명
(그룹 전체, 5분)
리스트와 프로그램이 어떻게 작동했는지에 대해 학생들과 이야기를 나눠보세요.
이런 질문을 던져보세요.
• 이번 언플러그드 활동 중에 리스트를 어떻게 만들었나요? 리스트를 어떻게 사용하여 탑을 만들었나요?
• 파이썬에서 리스트를 어떻게 프로그래밍하나요?
• 무엇이 허브에 표시되는 글자를 결정하나요?
• 어떤 방법으로 허브에 무작위 글자가 나타나게 했나요?
학생들과 함께 리스트와 그 구성 요소를 다시 살펴보고, 리스트를 만드는 데 무엇이 필요한지를 이해하고 있는지 확인해보세요.
다듬기
(소규모 그룹, 10분)
이제부터 브릭 사전 게임을 해볼 것입니다. 리스트를 사용하여 글자 하나를 무작위로 생성하고 그 글자로 시작되는 물건을 조립하세요.
각 그룹별로 코드를 수정하여 왼쪽 버튼을 누르면 무작위로 글자가 생성되도록 해야 합니다. 학생들에게 random.choice 코드 행을 보여주고 이것이 어떻게 무작위 문자를 생성하는지에 대해 토의를 진행하세요.
샘플 코드:
from hub import light_matrix, button
import runloop
import random
async def main():
# 리스트를 정의합니다
letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
while True:
if button.pressed(button.LEFT):
await runloop.sleep_ms(500)
# 네 번째 인덱스를 리스트에 씁니다
await light_matrix.write(random.choice(letters))
runloop.run(main())
학생들에게 4명씩 그룹을 짜고 게임을 여러 번 해보게 하세요. 학생들이 한 명씩 번갈아 브레인 게임 마스터 역할을 맡아 무작위 글자 생성 프로그램을 실행하고, 다른 학생들은 2분 이내에 세트의 브릭을 사용하여 해당 글자로 시작되는 물건을 조립하는 식으로 게임이 진행됩니다. 그리고 끝으로 브레인 게임 마스터가 그게 무슨 물건인지를 알아맞혀야 합니다.
평가
(그룹 실습, 5분)
교사 관찰:
학생들과 프로그램에 대해 토의를 진행하세요.
이런 질문을 던져보세요.
• 무작위 글자 생성기를 작동하자 어떤 일이 일어났나요?
• 리스트를 어떻게 활용할 수 있을까요?
• 파이썬에서 리스트를 만들 때 기억해둬야 할 중요한 요점이 무엇일까요?
자기 평가:
학생들에게 다음 질문에 대한 답을 기록장에 적으라고 하세요.
• 오늘 리스트의 활용법에 대해 무엇을 배웠는가?
• 좋은 팀원의 특성은 무엇이며, 오늘 내가 그중 몇 가지를 보여주었는가?
• 학생들에게 오늘의 시간 관리에 대해 1-3점 척도로 자기 평가를 해보라고 하세요.
• 학생들에게 오늘의 재료(부품) 관리에 대해 1-3점 척도로 자기 평가를 해보라고 하세요.
교사 지원
학생 과제:
• 리스트를 만들고 활용합니다.
• 리스트를 사용하여 복합 조건문 으로 코딩을 합니다.
• 학생이 즉각 사용 가능한 상태의 스파이크 프라임 세트
• 스파이크 앱이 설치된 장치
• 학생용 기록장
CSTA
2-CS-01 Recommend improvements to the design of computing devices, based on an analysis of how users interact with the devices.
2-DA-09 Refine computational models based on the data they have generated.
2-AP-10 Use flowcharts and/or pseudocode to address complex problems as algorithms.
2-AP-12 Design and iteratively develop programs that combine control structures, including nested loops and compound conditionals.
2-AP-18 Distribute tasks and maintain a project timeline when collaboratively developing computational artifacts.
2-AP-16 Incorporate existing code, media, and libraries into original programs, and give attribution.
2-CS-02 Design projects that combine hardware and software components to collect and exchange data.
2-AP-13 Decompose problems and subproblems into parts to facilitate the design, implementation, and review of programs.