인공지능 가르치기 프로젝트 - 01

Kim Ju Young·2022년 5월 25일
0

배우는 아버지

목록 보기
1/2
post-thumbnail

시작하기 전에

아부지가 인공지능 프로그래밍에 관심 있으시다. 그래서 프로그래밍을 배우고 싶다고 조르셨다. 매 주 일요일마다 나에게 배우기로 했다.

20년 정도 길게 배움을 받을 생각이 있다고 하셔서 가르쳐드리고 있다. 벌써 2달 정도 지났다.

하지만, 나도 인공지능 프로그래머도 아니다. 내가 Java 웹 프로그래머니 Java를 먼저 배우자고 제안 드렸고, Java를 가르쳐드리고 있다. 일주일에 한 시간만 주어진 상태에서 어떻게하면 최대한 많이 가르쳐드릴 수 있을까 고민하는 글이다.

아빠, 일주일에 1시간은 부족해요

이게 사실이다. 하지만, 그렇기 때문에 도전이라고 생각한다. 1주일에 1시간이라도 배우겠다는 의지가 있다면 그 1시간을 최대한 노력해서 가르쳐드려야 한다고 생각한다. 지금까지 가르쳐드린 걸 회고하며 앞으로 가르쳐드릴 것도 준비해야한다.

목표

원하시는 웹사이트부터 하나 만드시고 띄우게 도와드리려고 한다. 그 후, 인공지능 서비스를 넣는 그런 프로젝트를 생각하고 있다.

학습계획표

과거

1달 - 실력을 확인하는 시간을 가졌다.
과거 2달 전까진, 책을 보는 것으로만 실력을 연마하고 계셨다.

처음엔, 책으로 배워 프로그래밍 기본은 하실 줄 아신다고 하셨다. 그래서 첫 시간부터 클래스를 가르쳐드렸다. 하지만 계속 가르치다보니 for문과 switch문, while문등 쓰시는게 부족했다. 변수 쓰는 것부터 다시 가르치기로 계획을 바꾸었다.

  • String과 같은 참조형, byte, short, int, long 형등 기본 자료형을 가르쳤다.
  • for문, while문을 언제 쓰는지 가르쳐드렸다.
    (for문 - 반복이 정해져있을 때) (while문 - 반복횟수가 정해지지 않은 반복일 때)
  • if문과 switch문의 흐름제어도 가르쳐드렸다.

2달 - 입력, for문, while문 연습하기
input을 받아 쓰는 이중 for문은 생각보다 많이 어렵다.

Input을 쓰는 것부터 Java에선 빠른 BufferedReader를 사용해야 하지만, 쉽게 이해하게 만드는데 실패해서 Scanner를 쓰게 되었다. Scanner도 나쁘지 않은 패키지라고 생각한다.

*
**
***
****
*****

5를 입력받으면 나오는 별찍기를 연습해드리고 있었다.

이 단계를 넘어갈 때, 분명한 건 for문의 진행순서같은 건 확실히 떼고 넘어가야한다는 것이다. 삼각형의 넓이 구하기처럼 간단한 프로그램을 작성하고 있다.

  • Scanner를 배우셨다.
  • for문에 대해 '아~ 이제야 좀 알겠다'고 말하셨다.

앞으로의 계획

2022/05/29 - for문 연습 01, 기본 프로그램 작성 연습 01
이중 for문에서 살짝 응용하여, 다른 별찍기 문제를 내드릴 생각이다.

5를 입력했을 때, 다음과 같이 출력해라.

*****
 ****
  ***
   **
    *

과연 이 문제를 푸실 수 있을까? 솔직하게 문제를 못 푸실 확률이 매우 높다. 못 푸신다면 다음시간에도 꾸준히 for문을 내드릴 생각이다.

기본 프로그램 작성 연습으로는 초등학교 수학 문제에서 볼 수 있는, 원뿔 겉넓이 구하기나 트럭의 이동거리등을 내려고한다.

2022/06/04 - for문 연습 02, 기본 프로그램 작성 연습 02, 배열 01
배열은 반드시 알아야한다. for문과 연계해서 배열을 쓰셔야하니...
어느 때, 배열을 쓰셔야하는지 이해가 필요하므로, 연속적인 데이터를 저장하는 문제를 풀게 유도할 것이다.

최적의 문제로, 15개 정도 데이터를 입력받고, 그 데이터의 합을 구하는 문제가 있겠다.

2022/06/11 - 클래스를 통한 기본 프로그램 작성 연습 01, 배열 02
클래스는 Java의 기본이다.

지금까지 OOP가 아닌 순차적 프로그래밍의 유산인 Main 함수만을 썼더라면, 이젠 인스턴스를 생성하여 진정한 Java를 사용하게 유도해야한다.

스피커라는 클래스에서 Samsong 스피커, RG 스피커 등을 인스턴스로 선언하는 예제를 내드리면 되겠다.

중간평가로 반복문을 사용해서 이 인스턴스를 이용하시게 체크해보고, 이해도를 판명한다.

2022/06/18 - 클래스를 통한 기본 프로그램 작성 연습 02, static에 대한 이해
아부지가 static을 이해할 수 있을까 고민이 있다. 사실 Java를 쓰는 사용자는 static에 익숙해질 수 밖에 없다.

Main함수 자체에서 static을 사용하기 때문이다. Main함수에서 사용자 정의함수를 쓸 때도, Main함수가 static 키워드에 의해 컴파일이 미리되기 때문에 사용자 정의함수에도 static을 사용해야한다.

이를 어떻게 잘 설명할지 추가적인 이해와 비유가 필요하다. static 변수나 함수처럼 클래스 변수, 함수에 대한 설명도 해야한다.

계획 평가

언제쯤 웹사이트를 작성할 수 있을까? 그래도 학습이 너무 늘어지면 안되니, 적어도 다음달까진 인터페이스와 상속에 대한 이해를 마칠 수 있도록 해야겠다. 물론, 안되면 미뤄지겠지만 말이다. 다음 계획 평가를 적을 땐, 이번 달 계획이 얼마나 이뤄졌는지에 대해서도 적을 생각이다.

마무리하며

정말 아부지가 인공지능을 배우실 때까지 이 프로젝트가 이어질 수 있을까 궁금하다.

이것은 나에게도 큰 도전이다. 아부지도 배우시지만, 나 또한 아부지가 배우실 수 있게 훨씬 더 실전적인 지식을 쌓아야하니 말이다.

Java책 한 줄이라도 다시 뒤적거려 봐야겠다.

profile
호호선생

0개의 댓글