약 3주간, 8번의 수업(총 16시간)일자로 디자이너/기획자(!!!)들에게 C/C++를 가르칠 일이 있었습니다.
Rhea君에게도 실험적이었던 이 기간 동안 나름 성공적인 결과를 볼수 있었습니다.
따라서 이 포스트는 프로그래머는 아니지만 프로그래밍을 공부하게 된 분들 혹은,
그러한 분들에게 C/C++과 같은 프로그래밍 언어를 가르치게 된 분들에게 도움이 되리라 생각해서 적어봅니다.
아, 그리고 이건 100% 개인적 의견이니 일부 난독증을 가진 분들은 열폭하진 마세요. ^-')
Rhea君에게도 실험적이었던 이 기간 동안 나름 성공적인 결과를 볼수 있었습니다.
따라서 이 포스트는 프로그래머는 아니지만 프로그래밍을 공부하게 된 분들 혹은,
그러한 분들에게 C/C++과 같은 프로그래밍 언어를 가르치게 된 분들에게 도움이 되리라 생각해서 적어봅니다.
아, 그리고 이건 100% 개인적 의견이니 일부 난독증을 가진 분들은 열폭하진 마세요. ^-')
강의의 대상층은 미국의 모대학교에 국비로 컴퓨터 그래픽과정 유학을 가는 분들이었습니다.
그런데 과연 미국답게 그 대학교에서는 어떤 주문이 있었습니다.
바로 "디자이너/기획자라도 컴퓨터 그래픽 수업을 위해 C언어를 먼저 선행학습을 하고 올 것"이라는 주문이었죠.
참으로 감탄이 가지 않을수 없었습니다!!
아직도 시대의 흐름과 컴퓨터 그래픽의 의미를 깨닫지 못한채, "디자이너는 그림만 잘그리면 돼"라는 선입견에 빠진 정박아 디자이너나 "내가 왜 프로그래밍을 알아야하지?"라는 미친 기획자가 즐비한 대한민국의 실태에 핵폭탄을 날리는 사건입니다.
그림만 그리겠다면 순수미술을 하면 되고, 기획만 하겠다면 소설가가 되면 됩니다.
컴퓨터로 영상을 만들고 게임을 만들겠다면, 그 과정과 끝은 다름아닌 컴퓨터라는 도구입니다.
그리고 도구의 본질을 알지못한채, 무언가를 하겠다는 것은 정말로 위태로운 일이지요.
또한 셰이더의 발달로 디자이너도 실시간 렌더링에 관여하지 않을 수 없게 되었고,
각종 스크립트 언어의 발전은 기획자에게 PPT문서가 아닌 컨텐츠를 만들도록 유도하고 있습니다.
이런 시대에 가장 기초가 되는 기본 프로그래밍조차 살짝 건드리지 않겠다면 공짜밥을 먹겠다는 소리이고 퇴출의 0순위라 생각합니다.
셰이더와 스크립트가 멀게 느껴지는 비프로그래머라면,
플래시의 경우가 좋은 예가 될수 있는데 액션스크립트는 누구의 영역인가라는 질문이 그것이지요.
모두가 알고 있다시피, 실시간으로 움직이는 영상을 위해서는 단순히 그림만 잘 그려서는 안됩니다.
그런 이유로, 첫 의뢰(?)를 받자마자 머리에 떠오른 생각은 실질적인 C개발자를 만드는 것이 아니라,
프로그래밍이 무엇인지 맛을 보여주자였었고 아마 미국에서도 같은 의도이었을 거라 생각됩니다.
따라서,
1) 포인터와 참조를 제외한다.
2) 자료형과 변수/함수를 선언하게 할줄 안다.
3) 기본 예약어로 논리있는 프로그램을 짤수 있는 정도의 맛보기
4) 클래스와 객체가 무엇인지 확실하게 안다.
비록 클래스 설계까지 못하더라도 스크립트 내장 객체를 설계한 마인드는 유추해볼수 있는 훈련을 한다.
이와 같은 목표를 잡았습니다.2) 자료형과 변수/함수를 선언하게 할줄 안다.
3) 기본 예약어로 논리있는 프로그램을 짤수 있는 정도의 맛보기
4) 클래스와 객체가 무엇인지 확실하게 안다.
비록 클래스 설계까지 못하더라도 스크립트 내장 객체를 설계한 마인드는 유추해볼수 있는 훈련을 한다.
우선 포인터와 참조를 수업에서 제외시킨 것은 잘했다는 생각이 듭니다.
대상분들은 앞으로 마야 스크립트 등, 그래픽툴에서 제공되는 스크립트를 주종목으로 하실 분들인데,
굳이 포인터와 참조가 필요한 것은 아니지요.
덕분에 문자열(char*)나 scanf()와 같이 참조개념이 들어간 함수 역시 수업중 캔슬이 되었습니다.
모든 변수의 지정은 i = 10; 으로 했지요.
교재는 국내에서 가장 쉬운 C책인, 성안당의 C가 보이는 그림책으로 설정했습니다.
(알게 모르게 성안당 책들만 포스트에 자꾸 언급하는듯.)
그리고 코딩을 두려워하고 싫어하는 비프로그래머 지망생들에게 왜 프로그래밍 언어를 배워야 하는지를
매시간 정신교육 시켰습니다.
전체 커리컬룸은 다음과 같았습니다. 초기 계획이 아닌 마친 후의 모습입니다.
강의 1) C/C++언어의 소개와 족보 / C문법을 왜 배워야 하는지 설명 / main() 함수와 #include 설명
개발툴 미설치로 http://codepad.org/ 이용.
강의 2) 드디어 VS가 설치되었다.
VC++ 2008로 프로젝트 만들기 / 파일 구성 설명 / 어제 한거 다시 한번더.
강의 3) 변수 개념 설명 / printf() 간단 사용법 / 산술 연산자 설명 / &&, ||, ! 등의 논리연산자 설명
전체 수업은 int 형 하나로만 진행하였다. 당연히 printf()등에서도 %d만 사용.
원래 변수를 먼저 설명하고 함수를 설명하는게 정석이나
전체 프로그램의 큰 그림을 보라고 일부러 함수 먼저 가르친 것임.
또한 포인터를 안하니 연산자 우선순위 관련한 퀴즈나 설명해줄게 없음. ㅋ
연산자로 간단한 계산기, boolean 연습함
강의 4) 대망의 if()문.
강의 3)에서 배운 산술/논리연산자를 훈련시킴.
강의 5) 순환문. for(), while(), do~while(), switch() 등을 훈련시킴
이때 처음으로 간단한 퀴즈내줌.
강의 4)에서 배운 if()문을과 for()문을 이용한 구구단에서 간단한 퀴즈을 냄. 물론 전원 다 틀림.
강의 6) 배열 / 구조체
배열을 배우며 강의 5)에서 익힌 순환문을 다시 연습.
구조체를 하며 클래스 개념 설명.
크리스마스 이브(- -;;;;)라 30분 일찍 마침. 따라서 1시간 30분 가량 수업한셈.
강의 7) 클래스 설계 및 객체 개념
클래스의 설계와 객체 개념을 가르침.
IS~A 관계를 이용한 초보적인 클래스 상속과정을 보여줌.
물론 내장 객체를 이용해 프로그래밍할 분들이라,
클래스 자체에 대한 이야기가 아닌 객체의 메서드를 다룰때
해당 내장 객체를 설계한 사람이 무슨 의도로 그렇게 설계하였을까?를 유추할수 있는 계기를 마련해줌.
강의 8) 복습용 문제 풀이
문제는 별도.
개발툴 미설치로 http://codepad.org/ 이용.
강의 2) 드디어 VS가 설치되었다.
VC++ 2008로 프로젝트 만들기 / 파일 구성 설명 / 어제 한거 다시 한번더.
강의 3) 변수 개념 설명 / printf() 간단 사용법 / 산술 연산자 설명 / &&, ||, ! 등의 논리연산자 설명
전체 수업은 int 형 하나로만 진행하였다. 당연히 printf()등에서도 %d만 사용.
원래 변수를 먼저 설명하고 함수를 설명하는게 정석이나
전체 프로그램의 큰 그림을 보라고 일부러 함수 먼저 가르친 것임.
또한 포인터를 안하니 연산자 우선순위 관련한 퀴즈나 설명해줄게 없음. ㅋ
연산자로 간단한 계산기, boolean 연습함
강의 4) 대망의 if()문.
강의 3)에서 배운 산술/논리연산자를 훈련시킴.
강의 5) 순환문. for(), while(), do~while(), switch() 등을 훈련시킴
이때 처음으로 간단한 퀴즈내줌.
강의 4)에서 배운 if()문을과 for()문을 이용한 구구단에서 간단한 퀴즈을 냄. 물론 전원 다 틀림.
강의 6) 배열 / 구조체
배열을 배우며 강의 5)에서 익힌 순환문을 다시 연습.
구조체를 하며 클래스 개념 설명.
크리스마스 이브(- -;;;;)라 30분 일찍 마침. 따라서 1시간 30분 가량 수업한셈.
강의 7) 클래스 설계 및 객체 개념
클래스의 설계와 객체 개념을 가르침.
IS~A 관계를 이용한 초보적인 클래스 상속과정을 보여줌.
물론 내장 객체를 이용해 프로그래밍할 분들이라,
클래스 자체에 대한 이야기가 아닌 객체의 메서드를 다룰때
해당 내장 객체를 설계한 사람이 무슨 의도로 그렇게 설계하였을까?를 유추할수 있는 계기를 마련해줌.
강의 8) 복습용 문제 풀이
문제는 별도.
이 과정중, (누구나 궁금해할) 여자분은 총 3분이 계셨는데,
2분은 빨리 미국 다녀와 취업해서 키를 늘리는 수술을 받아야 할 잉여 대학원생들이었고,
한분은 이미 충분히 미국인 체형을 갖춘 분이었기 때문에 패스~~*
그리고 중요한 것은 결국 마지막 수업에는 전원 남자들만 남았다는 사실입니다!!!!
왜 프로그래머는 여자가 없는지를 다시금 확인사살 할수 있는 계기였습니다.
귀찮고 어려운데다, 합격/불합격을 따지는 것도 아니고 숙제고 없고, 오빠 코딩를 부탁할 사람도 없으니 남아있을리가 만무하지요. 며칠간이라도 들어주신데 감사할 따름입니다.
다른 말로 하자면, 마지막 수업에서야 비로소, "본격 프로그래밍 수업"같은 모습이 연출된 것입니다. ㅠㅠ
아뭏든 3주간의 수업이 끝났습니다.
Rhea君 특유의 개드립에도 불구하고 열심히 공부해주신 분들께 감사드리며 C언어 문법보다 왜 프로그래밍 배우고 해야 하는지를 느꼈으면 하는 바입니다.
마지막으로 아까 드렸던 말씀이지만, 컴퓨터에서 쉬운 길과 어려운 길이 있을땐, 무조건 남들 피하는 어려운 길로 가는게 정석이다라는 사실을 잊지말았으면 합니다.
이것으로 이 포스트는 마치기로 하죠, 혹시나 검색어에 걸려 프로그래밍을 공부하시는 비프로그래머 지망생분이나 그들을 가르쳐야하는 분들에게 도움이 되길 바랍니다.
부록 : 복습겸 마지막 퀴즈
