E D R , A S I H C RSS

Seminar How To Program It

애들러의 How to Read a Book과 폴리야의 How to Solve it의 전통을 컴퓨터 프로그래밍 쪽에서 잇는 세미나가 2002년 4월 11일 중앙대학교에서 있었다.


프로그래밍이란 것을 어떻게 하는가? 어떤 사고의 과정을 거치는가? 어떤 인지적 보조물의 도움을 받을 수 있는가? 어떻게 하면 프로그래밍을 더 잘할 수 있을까?

  • CrcCard (Index Card -- The finalist of Jolt Award for "design tools" along with Rational Rose Enterprise Edition)
  • Paper Shell Programming -- Becoming a Pseudo-Turing Machine Yourself
  • TestDrivenDevelopment -- 프로그래밍의 코페르니쿠스적 전환
  • Stepwise Refinement -- 진부한 미래, 신선한 과거 (see also NoSmok:ProgrammingOnPurpose )
  • White Board -- Communicate with the Board
  • PairProgramming -- 1+1 > 2
  • Refactoring -- 후각 개발법
  • DesignPatterns -- 디자인패턴 공부 절대로 하지 마라
  • Coding Style -- esp. How to Name it (프로그래머를 위한 정명학. "子曰 必也正名乎...名不正則言不順 言不順則事不成" <논어> 자로편)
  • Managing To Do List -- How to Become More Productive Only With a To-do List While Programming
  • Programmer's Journal -- Keeping a Diary (see also NoSmok:KeepaJournalToLiveBetter )
  • Lifelong Learning as a Programmer -- Teach Yourself Programming in Ten Years (http://www.norvig.com/21-days.html )
  • What to Read -- Programmer's Reading List

위의 것을 두시간 동안 다 한다는 것은 -- 세미나 이전과 이후에 사람이 달라지는 수준에서 -- 불가능하고, TDD와 PP, 그리고 DP(RF)를 집중적으로 다루겠습니다. 가능하면 제 구두설명은 짧게 줄이고 나머지 시간은 이 세가지를 직접 실습, 토론하는 시간이 되도록 하겠습니다. 할 것은 많고 시간은 짧습니다. 요즘 저의 "세미나 화두"는 어떻게 하면 "적게 전달"하고 깊이 깨닫게 하거나 혹은 반성하고 또 다양하게 실험해 볼 여지를 많이 제공할 수 있을까 하는 것입니다.

대상은 프로그래밍 경험이 부족한 분, 혹은 너무 많은 분.

세미나는 실습/토론 중심의 핸드온 세미나가 될 것이며, 따라서 인원제한이 있어야 할 것임. 약 20명 내외가 적당할 듯. ("Tell me and I forget, teach me, and I may remember, involve me and I learn." -- Benjamin Franklin)

협동적 학습을 목표로 함 -- 저는 서로 얼마나 많은 것을 배울 수 있는지 매번 놀랍니다.

--김창준


시간과 장소

  • 장소: 중앙대학교 공대(봅스트홀) 7층 PC실 (4744)
  • (공식적) 시간:4월 11일 7시 30분~9시 30분 (토론은 9시 30분에서 10시까지 진행될 예정)
  • 대상: 중앙대학교 컴퓨터 공학과 제로페이지 회원 및 비회원, 혹은 타과, 타학교 학생/교수/일반인
  • 교통편 : 212, 21번 흑석동 중대입구. 지하철 7호선 상도역 하차 (상도역에서 20분 거리)

프로그램 (pun intended)

준비
  • 7:00-7:30 세미나 준비, 환경 설치, 자리 선택, 각 언어 그룹별 xUnit(or assert) 사용법 정리/스터디

본 세미나
  • 7:30-7:50 강사 도착. TDD 및 RF 시연(Python). 대형 화면을 보고 원하는 커플은 따라할 수 있음.
  • 7:50-8:00 PP에 대한 간략한 소개, 주의점 등.
  • 8:00-8:10 커플별로 TDD 실습
  • 8:10-8:30 그룹 나누기, Crc Card 소개, 프로젝트 요구사항 소개 및 그룹별 토의
  • 8:30-9:30 그룹별 개발 진행 (개발 중 고객의 요구사항 수정)

토론
  • 9:30-9:35 그룹별 (내부) 토론, 평가
  • 9:35-10:00 프로그램 시연, 설명, 전체 토론

준비 사항

  • PC 미리 셋팅 - 프로젝션 할 컴퓨터 : Idle Fork + Python 2.2
  • 기타 다른 컴퓨터들은 어떻게 할까요? 기본으로 Visual Studio 는 깔려있을 것이므로 C, C++ 는 되겠지만, Java 쓰시는 분들은?
    • 기본적으로 Idle Fork와 Python 2.2는 모두 깔아야 함. (강사가 Python으로 시범을 보일 것이고, 이걸 보면서 그대로 따라하고 싶은 커플은 그렇게 할 수 있도록)
    • Java 3대 : JDK 1.3.1_02, eclipse 2.0 SDK(pre-release), Editplus 설치 및 세팅
    • C++ 3대 : VC++ 6.0 (설치 되어 있는 상태 확인차원)
    • python 4대 : Python 2.2, Idle Fork


~cpp 
7시 ~ 7시 30분 중비 과정 (준비 인원은 3~4명이 적당할듯 합니다.)

0. 청소, 정리
1. user 제외 공유 점검 & 바이러스 체크(v3 디스켓)
2. 자리 배치
    Java 3대 : JDK 1.3.1_02,   eclipse 2.0 SDK(pre-release),   Editplus 설치 및 세팅
    C++ 3대 : VC++ 6.0 (설치 되어 있는 상태 확인)
     python 4대 : Python 2.2, Idle Fork
     프로젝션 할 컴퓨터 : Idle Fork + Python 2.2
3. 프로젝트 설치

0,1,2 번 인원이 될경우 동시 진행, 2번 과정 병렬 수행 3번 단일
기타 사항 :
해당 날짜에 7층의 PC실에 세미나 공고를 붙여도 된다고 허락 받았습니다. 저보다 먼저 pc실에 도착해 시간이 있으신분들은 적당한 공고를 7층 PC실 문에 붙여 주세요. PC의 확보역시 자율적이지만, 마찬가지 입니다. --상민

Thread

장소 관련 여담 : 덕준이와, 석천이가 2층을 대여를 위해 알아 보았지만, 학생의 권한으로는 빌릴수 없다고 했습니다. 수고 하셨습니다. 만약 다음에 필요할때는 학과장님께 해당 행사의 문서 제출후에 장소 확보가 가능할듯 합니다. 과사에서 문서에 대한 일반적인 양식은 존재하지 않는다고 합니다.(과거 PC 빌렸을때 처럼) --상민

4월 12일은 총MT와 겹치고, 나머지, 9일이나 11일이 좋을거 같은데요.. 세미나 기대되는데요..^^ - 상협

흑.. 정말 하고 싶은데.. 9일은 회의가(기총부) 아아악.. 어..어쩌면 좋지요.. 저는..?? ㅠ.ㅠ --선호

회의 째고 와~ 난 기숙사 동기회 째고 가는구만.. 회의랑 동기회랑 비교해보면.. 동기회가 훨씬더 타격이 커. -상협

오예~~~ 이제 기숙사 동기회 안빠져도 되네요... 9일날 동기회 였는데.. -상협


정말 재밌을 것 같습니다. 나도 갈 수 있으면 좋을텐데... 참석하지 못하는 사람들을 위해 소중한 세미나 자료를 공유해주시면 감사하겠습니다. 창준군을 만난 건 여러분이나 저나 참 행운입니다. 24시간 가르쳐달라고 하세요. ^^ 이런 강의는 학교졸업하면 다시는 접하지 못할 것입니다. ^^ (그나저나 제로페이저도 아닌데 글을 올려도 되는 건지 모르겠군요.) - 박지훈
neocoin:위키에 특정 로그인이 존재 하지 않고,열어논 이유가 글을 쓰고 의견을 주십사 해서 입니다. 저번달 누군가 함부로 지우는 사태가 발생해서 일단 지우는 권한에 대하여 HGC(Human Garbage Collector- 아니라 KHGC인가.--a)체제로 바꾸었지만요. --상민

타학교 학생의 참석을 가능케해주셔서 눈물나게 감사해하고 있습니다. ^^; --채희상
DeleteMe) 앗! 희상씨닷; 부지런도 하셔라; -- 석천

강의를 녹화해서 다른 사람도 볼 수 있게 하고자 합니다. 괜찮겠습니까? --정희록
앗.. ㅡ.ㅡ녹화.. 좀. 빼입고 가야하나.. --선호

사람이 많아 지니 참가에 대하여 불안한 감이 드네요. zp회원에 한하여 늦게 오는 사람 음료수 사기!!! --상민

저도 타학교생이거든요.. 희상이형 후배랍니다. 실력이 안되서 직접 참가는 못하고 참관해보고 싶네요. 잘부탁드립니다. ()(__)() -- 최유환

vim 쓰시는 분들은 여기를.

순번 참가 신청자
1 이선우
2 최광식
3 박혜영
4 강석천
5 남상협
6 강인수
7 류상민
8 임구근
9 정진균
10 이봐라
11 김남훈
12 이정직
13 신재동
14 이창섭
15 이선호
16 채희상
17 이덕준
18 임차섭
19 김형용
20 김승범
21 서지원
22 홍성두


순번참관 신청자
1 최태호
2 정희록
3 박지환
4 최유환
5 이한주
6 김정준
7 김용기

  • 참가자(aka Player) : 직접 학습에 동참하고 함께 토론하고 한바탕 재미있게 놀아볼 사람.
  • 참관자(aka Spectator) : 그들을 구경할 사람. (이 분들은 이 팀과 저 팀은 어떻게 다르게 하더라, 그 팀은 뭐를 하고, 그 팀은 뭐를 안하더라, 그랬더니 나중에 요렇게 저렇게 고생을 하더라 등의 관찰을 하고, 토론시에 언급해 주시면 모두에게 도움이 되겠습니다)

무엇을 좀 더 집중적으로 즐기고 싶습니까? 2가지만 고른다면? (무기명 투표; n++ )
Crc Card & Index Card & White Board1
Paper Shell Programming 1
TestDrivenDevelopment 5
Stepwise Refinement 1
PairProgramming 6
Refactoring 3
DesignPatterns 4
Coding Style 2
Managing To Do List 3
Programmer's Journal, Lifelong Learning & What to Read2

짝짓기


C
  • 김남훈, 이정직

C++
  • 강인수, 신재동
  • 이선호, 남상협
  • 이창섭, 박혜영

Java
  • 이선우, 임차섭
  • 이덕준, 임구근
  • 최광식, 정진균

Python
  • 채희상, 김승범
  • 강석천, 이봐라
  • 김형용, 류상민
  • 홍성두, 서지원

팀 선정

해당 팀은 개발 환경, 언어 선정부터, 프로그램 디자인, 코딩까지 모두 함께 하게 됩니다. 한가지 문제 상황이 주어질 것이고, 제가 고객역할을 합니다. 개발 진행 중에 몇번의 요구사항 수정이 있을 것이므로, "적응도"에 대한 테스트가 자동으로 이루어 질 것입니다. 개발 완료 후에는 각각 다른 언어로 구현된 프로그램들을 살펴보며 비교 토론을 할 것입니다.

Lemon Team 김남훈, 신재동, 남상협, 이선우, 이창섭

Orange Team 이정직, 강인수, 이선호, 이덕준

Cocoa Team 최광식, 정진균, 임구근, 임차섭, 박혜영

Pipe Team 채희상, 강석천, 류상민, 김형용

Snake Team 김승범, 이봐라, 서지원, 홍성두


처음에는 신입생 대상으로 Python 강의가 있다고 해서, 거기에 보탬이 될까 하는 마음으로 세미나를 해드리겠다고 했는데, 어떻게 중간에서 "프로그래밍 전반"에 대한 세미나로 성격이 변한 것 같습니다. 실습 중심으로 하게 될 것이고, 아무리 Python이 배우기 쉬운 언어라고 해도 Python에 익숙한 사람이 하나도 없는 페어가 두시간 안에 뭔가 다른 것을 (Python을 통해) 익힌다는 것은 어렵고, 또 효율적이지 못하기 때문에, 여러분들 자신이 가장 "자신있는" 언어를 사용하도록 하는 게 좋겠다는 생각을 합니다.

이 때, OOP가 가능한 언어를 추천하고, 해당 언어의 xUnit 사용법을 미리 익혀오기 바랍니다. (반나절 정도가 필요할 겁니다) http://www.xprogramming.com/software.htm 에서 다운 받을 수 있습니다.
(See Also PyUnit, UnitTest, JUnit, CppUnit. C 언어를 사용하시는 분들은 ASSERT 문으로 UnitTest 부분을 어느정도 대신할 수 있습니다.)

하지만 동적 자료형 언어를 접하는 것 자체가 큰 장점일 수가 있습니다. 특히 TDD와 Refactoring은 동적 자료형 언어에서 빛을 발하고, 대다수의 DP는 언어 수준에서 지원이 되거나 아주 간단합니다. 20분 정도면 Python을 간략하게 훑을 수는 있습니다.

여러분의 생각은 어떻습니까?

00학번 김남훈입니다. C 로도 상관없을까요?
괜찮습니다만, 가능하다면 OOP언어를 권합니다. 그리고 자신이 선택한 언어와 동일한 언어를 선택한 사람이 최소한 한명은 더 있어야 합니다.

세미나 전에 페어를 짜는게 좋겠군요.. -남훈
이 페이지를 통해 짜는 게 좋겠습니다. 가능하면 서로 잘 모르는 사람끼리가 좋습니다. 배울 것이 더 많습니다.

참관자 최태호 윤정수 소스코드: VendingMachine_참관자


see also 02_Python

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:00
Processing time 0.0435 sec