팝콘쌤의 융합 수업 사례
수업 개요
1.
언제: 23년도 2학기
2.
어디서: 부천 창의융합상상소(구 부천 영재교육원)
3.
무엇을: 생물을 주제로 한 산출물
4.
어떻게: 생물원리를 중심으로 정보활용능력을 사용하여 산출물 작성
성취 수준 및 과제 수행수준 요약
영재교육원마다 진행방식이 다르겠지만 제가 있었던 영재교육원에서는 위와같이 성취 수준 및 과제 수행 수준을 미리 작성하였습니다. 강의가 시작하기 전에 융합 수업을 하시는 선생님과 따로 모여서 교육과정을 작성하였습니다.
하지만 학생들이 산출물을 만들어야 한다는 것 때문에 인공지능 수업은 할 수 없었고…. 그냥, 생물을 주제로 한 연구 주제에 에듀테크를 넣는 방식으로 융합 수업을 하였습니다.
대표적인 산출물 결과_예시
주제: 방울토마토의 공기뿌리가 생기지 않는 최적의 습도량
1. 토양 수분 함량에 따라 자동으로 물을 주는 화분 비교
•
1번 화분(토양 수분 30%), 2번 화분(토양 수분 50%), 3번 화분(토양 수분 70%)
※ 토양 수분 함량(30%) 플랜투이노 코드
융합 수업 1학기 때 활용했던 플랜투이노를 연구에 사용하였습니다. 학생들 스스로 토양 수분 함량의 기준(#define SOIL WATER REF 숫자)의 숫자를 바꿔서 연구 산출물을 작성하였습니다.
2. 식물 줄기 길이_스프레드시트 표 활용
학생들이 서로 다른 화분길이의 식물 줄기를 스프레드시트 표를 사용하여 작성하였습니다. 정보수업에서는 스프레드시트 활용하는 법(표 작성하는 법, 표 편집하는 법, 함수 활용 등)을 학생들에게 가르쳤습니다.
3. 식물의 줄기 길이 선그래프_스프레드시트 그래프 활용
생각보다 학생들이 표를 그래프로 나타내는 것에 어려움을 느꼈습니다. 학생들의 이해를 돕기 위해 차트 스타일, 차트 및 축 제목, 선 색상을 나타내는 법을 학생들에게 가르쳐 주었습니다. 다행히 수업을 받은 후에는 학생들이 직접 작성한 데이터를 그래프로 시각화할 수 있었습니다.
4. 연구 결과
아쉬운 점
기존에 인공지능 융합 수업을 기획하였지만 수업시수 부족, 산출물 작성에 치중된 영재교육 수업으로 인해 계획했던 수업을 하기가 어려웠습니다. 오렌지3를 활용하여 학생들이 선택한 다양한 주제를 그래프로 시각화하고 결과를 예측하도록 하려고 했지만 그렇게 하지 못했습니다. 즉, 이번 융합 수업은 정보활용 수업에만 치중되었습니다.
다음에 융합 수업을 기획한다면 좀 더 계획을 세밀하게 준비하여 수업을 진행할 것 같습니다. 일단, 인공지능이 무엇인지 인공지능을 활용하면 어떠한 점이 좋은지 학생들과 의견을 나눌 것입니다. 더 나아가 생물 분야에서 인공지능을 어떻게 활용하는지를 중점으로 학생들과 학습한다면 좀 더 인공지능요소가 들어있는 산출물이 나올 수 있지 않을까 생각됩니다.
프레첼쌤의 융합 수업 사례 공유
저와 케이크쌤 역시 팝콘쌤처럼 2023년도에 창의융합상상소(구 영재교육원)에서 중학교 1학년, 2학년 대상으로 영재수업을 진행했었는데요. 팝콘쌤은 실제 수업사례를 공유해 주셨지만 저는 지난 수업을 돌아보니 융합적인 측면에서 아쉬움이 남아 2024년에 제가 실시할 예정인 융합 수업 계획을 공개하려고 합니다!
2023년에는 기초 파이썬 문법 수업을 끝낸 후 다음과 같이 총 12차시 동안 파이썬 터틀 수업을 진행했었는데요. 수업을 진행한 후 생각해보니 너무 디자인적으로 그림을 그리는 것에만 초점을 맞춰 수업한 점을 보완하고 싶었습니다. 그래서 파이썬 터틀의 기본적인 명령어 학습 및 응용하여 디자인 그리는 활동을 1-6차시 정도 진행하고, 이를 응용하여 수학 함수를 그려보는 것은 어떨까 생각하며 수업을 계획하였습니다.
수업 개요
1.
주제: 파이썬 터틀을 활용한 이차함수 그래프 그리기
2.
융합 교과: 수학, 정보
3.
사용하고자 하는 툴: 구글 코랩
사전 학습
처음 코랩 환경에서 코랩 터틀을 사용하기 위해서는 설치 및 불러오기 과정이 반드시 필요합니다.
# 코랩 터틀 설치(실행버튼 누르기)
!pip3 install colabTurtlePlus
# Turtle 모듈 불러오기(실행버튼 누르기)
from ColabTurtlePlus.Turtle import *
Python
복사
그리고 파이썬 터틀과 달라서 initializeTurtle() 명령어를 사용해야만 다음 셀을 실행할 때 이전 실행한 결과가 겹쳐서 보이지 않을 수 있으므로 꼭 모든 셀 시작에는 initializeTurtle()을 넣을 수 있도록 연습시켜주세요~
initializeTurtle()
Python
복사
코랩 터틀 설치(실행버튼 누르기)
!pip3 install colabTurtlePlus
Python
복사
Turtle 모듈 불러오기(실행버튼 누르기)
from ColabTurtlePlus.Turtle import *
Python
복사
1. x, y축 그리기
코랩 터틀에서는 축을 나타내는 명령어가 없다 보니 함수 그래프를 그리기 위해서는 축을 먼저 그려야 합니다. 이 부분을 설명하고 반복적으로 사용될 수 있으니 함수로 구현하여 사용하는 것이 편리하다는 것을 학생들에게 제시합니다.
# x, y축을 그리는 함수
def draw_axis():
goto(-400, 0)
forward(800)
goto(0, 0)
goto(0, -300)
left(90)
forward(600)
draw_axis()
Python
복사
2. 일차함수 표현하기
x의 초기 값은 임의의 값으로 설정하면 된다는 점을 학생들에게 알려주면서 코랩 터틀의 좌표 범위(-400, -300) ~ (400, 300)를 안내해 주시면 좋을 것 같습니다. 아래 코드와 같이 작성할 경우 터틀은 좌표 밖의 범위를 넘어간다는 점도 인지시켜 줄 수 있습니다.
penup()
x = -100
y = 2*x + 100
goto(x, y)
pendown()
for x in range(-100, 100):
y = 2*x + 100
goto(x, y)
Python
복사
이렇게 실습을 했다면 이제는 X의 계수와 Y절편을 입력 받아 그래프를 그리는 도전 과제를 제시해 주면 좋습니다! 물론 정답 코드는 다양하지만 아래처럼 구현할 수도 있습니다.
# y = ax + b의 형식으로 값을 입력받는 경우
f1, f2 = input("y = ax + b의 형식에 맞춰 그리고자 하는 함수식을 입력하세요: ").split("=")
a, f3 = f2.split("x")
f4, b = f3.split("+")
a = int(a)
b = int(b)
penup()
x = -100
y = a*x + b
goto(x, y)
pendown()
for x in range(-100, 100):
y = a*x + b
goto(x, y)
Python
복사
3. 이차함수 그리기
이차함수도 y = ax^2 + bx + c형식으로 입력받으면 좋겠지만, split 과정이 지나치게 지저분하여 계수를 따로 입력 받는 코드로 학생들에게 설명했습니다.
# y = ax^2 + bx + c의 형식으로 값을 입력받는 경우
a = int(input("x^2의 계수를 입력하세요: "))
b = int(input("x의 계수를 입력하세요: "))
c = int(input("y절편 값을 입력하세요: "))
penup()
# 2차 함수의 경우 x값대비 y값의 변화량이 크기 때문에 시작값을 -50으로 조정합니다
x = -50
y = a*x**2 + b*x + c
goto(x, y)
pendown()
for x in range(-50, 50):
y = a*x**2 + b*x + c
goto(x, y)
Python
복사
이 외에도 터틀은 좌표 기반으로 이동하기 때문에 각종 함수 그래프를 표현하는 데 아주 적합합니다. 다만 코랩 터틀의 범위가 넓지 않아 그래프가 예쁘게 표현되기는 어렵다는 점을 유념해서 수업하시면 좋을 것 같습니다.
사실 수학 교과와 제대로 된 융합이 진행되기 위해서는 이차 함수의 꼭짓점을 출력하거나 접선의 기울기 등 구체적인 수식을 채워야 하지만 영재 수업의 대상이 중학생인 점을 고려하여 해당 부분까지 수업하는건 무리이지 않을까 싶긴 합니다. 그래도 고등학교 선생님들은 수업을 재구성하여 활용하시면 좋을 것 같습니다!
케이크쌤의 융합 수업 사례
수업 개요
1.
주제: vpython을 이용한 완전탄성충돌 구현
2.
대상 학생 및 수업시기: 고3, 2023학년도 1학기
3.
융합 교과: 물리, 정보
4.
사용 툴 및 언어: 파이썬 및 vpython 모듈, glowscript 환경
저의 2023학년도를 키워드로 정리하면 여러 단어가 있지만 그중에 vpython을 빼놓을 수가 없는데요. 그만큼 vpython을 활용한 수업 연구에 몰두했던 한해였습니다. vpython은 3D 시각화를 가능하게 하는 파이썬 라이브러리로 glowscript 환경에서 프로그래밍을 하면 다른 프로그램 설치 없이 쉽게 이용하고, 자신의 결과물을 url로 다른 사람들과 쉽게 공유할 수 있다는 장점이 있습니다. 특히, 자유낙하운동이나 용수철 운동 등 물리 교과 내용을 프로그래밍으로 구현하고 관찰하는 것이 매우 용이하다는 장점이 있습니다.
완전 탄성 충돌은 반발계수(e)가 1인 충돌로, 두 물체가 충돌할 때 충돌 전의 운동에너지의 합과 충돌 후의 운동에너지의 합이 보존되는 충돌을 말합니다.
충돌 전후의 운동량이 보존되기 때문에 다음 식을 만족하고,
충돌 전후의 운동에너지가 같기 때문에 다음 식을 만족합니다.
마주 보며 움직이는 두 공의 질량(m)과 속도(v)를 안다면 위의 두 식을 풀어서 충돌 후의 속도(v1 prime, v2 prime)를 구할 수 있습니다.
자 그럼 Vpython을 이용해서 색상이 다른 두 개의 구를 만들고, 충돌 이후 완전 탄성 충돌이 되도록 속도를 반영한 코드는 아래와 같습니다.(코드 중간 중간 이해가 잘 가지 않는 부분이 있으시다면 chatGPT의 도움을 받으시길 추천드립니다~!)
Web VPython 3.2
# 충돌시킬 구 2개 생성
b1 = sphere(pos = vec(-10, 0, 0), color = color.green, m1 = 1, v1 = 5)
b2 = sphere(pos = vec(10, 0, 0), color = color.yellow, m2 = 1, v2 = -5)
# 위에서 질량인 m1, m2와 속도인 v1, v2 값을 바꿔가며 충돌을 관찰할 수 있음!!!
# 거리 5마다 점 표시
for i in range(-5, 6):
box(pos = vec(i * 5, 0, 0), size = vec(1, 1, 1))
# 라벨 생성
n1 = label(pos = vec(b1.pos.x, 5, 0), text = "m = {} \n v = {}".format(b1.m1, b1.v1))
n2 = label(pos = vec(b2.pos.x, 5, 0), text = "m = {} \n v = {}".format(b2.m2, b2.v2))
# 식1-운동량보존 m1*v1 = m2*v2
# 식2-운동에너지보존 1/2*m1*v1*v1 + 1/2*m2*v2*v2 = 1/2*m1*x*x + 1/2*m2*y*y
# 여기서 x, y는 충돌 후 b1, b2의 속도
# 충돌 후의 속도 vp1, vp2(식1과 식2의 연립방정식을 풀어 계산한 것)
vp1 = (b1.m1 - b2.m2)*b1.v1/(b1.m1 + b2.m2) + 2*b2.m2*b2.v2/(b1.m1 + b2.m2)
vp2 = 2*b1.m1*b1.v1/(b1.m1 + b2.m2) - (b1.m1 - b2.m2)*b2.v2/(b1.m1 + b2.m2)
# 공의 움직임 구현
while True :
rate(100)
b1.pos.x = b1.pos.x + b1.v1/100
b2.pos.x = b2.pos.x + b2.v2/100
# 충돌 여부 확인
distance = mag(b1.pos - b2.pos)
if distance <= b1.radius + b2.radius :
print("bang!!!!")
b1.v1 = vp1
b2.v2 = vp2
n1.text="m = {} \n v = {}".format(b1.m1, b1.v1)
n2.text="m = {} \n v = {}".format(b2.m2, b2.v2)
Python
복사
•
실행 화면 보기
•
초기 속도 5, -5일 때 충돌 후의 모습
→ 충돌 후의 속도는 -5와 5로 속도가 반전된 것을 알 수 있다.
•
초기 속도 10, 5일 때 충돌 후의 모습(초록 공의 질량 = 0.1)
•
초기 속도 1, -5일 때 충돌 후의 모습(초록 공의 질량 = 10)