E D R , A S I H C RSS

Toy Problems

ꡬꡬ단, μ†Œμˆ˜, ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄ κ΅¬ν•˜κΈ° λ“±μ˜ κ°„λ‹¨ν•˜κ³  μ‰¬μš΄ λ¬Έμ œλ“€


자주 μ‚¬μš©λ˜λŠ” ToyProblems:
  • Hello World
  • ꡬꡬ단
  • μ†Œμˆ˜
  • ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄
  • ν…μŠ€νŠΈ λ„ν˜• μž‘λ„
  • μˆ«μžμ•Όκ΅¬


당신은 μ΄μ œκΉŒμ§€ 이런 λ¬Έμ œλ“€μ„ ν›„λ°°λ“€μ—κ²Œ κ°€λ΄μΉ˜λ©΄μ„œ 그듀을 μ •μ‹ μ˜ 감μ˜₯ 속에 가둬넣지 μ•Šμ•˜μŠ΅λ‹ˆκΉŒ? μ΄μ œκΉŒμ§€ ꡬꡬ단 문제λ₯Ό 정말 μƒμ†Œν•œ λ°©λ²•μœΌλ‘œ ν•΄κ²°ν•œ ν›„λ°°λ₯Ό λ³Έ 적이 μžˆμŠ΅λ‹ˆκΉŒ? λͺ¨λ‘ for 루프λ₯Ό μ“°μ§€ μ•Šλ˜κ°€μš”? λ„€. 당신은 μ΄μ œκΉŒμ§€ 후배듀을 μžμ‹ μ˜ ν˜‘μ†Œν•œ νŒ¨λŸ¬λ‹€μž„μœΌλ‘œ μ„Έλ‡Œμ‹œμΌœμ™”μŠ΅λ‹ˆλ‹€. (사싀, μ‹œκ°„μ„ 써가며 ν›„λ°°λ“€μ—κ²Œ μžμ‹ μ˜ 지식을 λ² ν‘ΈλŠ” 선배듀은 정말 ν›Œλ₯­ν•˜κ³  그런 μ‚¬λžŒλ“€μ„ ν„ν•˜ν•  생각은 μ „ν˜€ μ—†μŠ΅λ‹ˆλ‹€. μΌλΆ€λŸ¬ μ€ κ³Όμž₯을 ν•΄μ„œ μΌμŠ΅λ‹ˆλ‹€.) --JuNe

ToyProblemsμ—λŠ” 단점이 μžˆλ‹€. λ„ˆλ¬΄ κ°„λ‹¨ν•˜λ‹€. λ°°μš°λŠ” μ‚¬λžŒμ€ μ§€λ£¨ν•˜κ³  μ‹œμ‹œν•˜κ²Œ λŠλ‚„ 수 있고, 문제λ₯Ό 풀어봐야 별 감ν₯이 μ—†μœΌλ©°, μƒˆλ‘œμš΄ κ±Έ 배운 λŠλ‚Œμ΄ λ“€μ§€ μ•ŠλŠ”λ‹€. κ·ΈλŸ¬λ‚˜ κ·Έλ“€μ—κ²Œ 아직 λ³΅μž‘ν•œ λ¬Έμ œλŠ” μ‹œκΈ°μƒμ‘°μ΄λ‹€. 이 λ”œλ ˆλ§ˆλ₯Ό μ–΄λ–»κ²Œ 깨트릴까.

ToyProblemsλ₯Ό ν’€κ²Œ ν•˜λ˜ λ‹€μŒ 방법을 μ΄μš©ν•œλ‹€. Seminar:TheParadigmsOfProgramming (pdf)을 ν•™μŠ΅ν•˜κ²Œ ν•˜λŠ” 것이닀.

  1. 일단 μžμ‹ μ΄ μ•„λŠ” 방법을 μ΄λ™μ›ν•΄μ„œ 문제λ₯Ό ν’€κ²Œ ν•œλ‹€.
  2. μ„ λ°°κ°€ 이 κ°„λ‹¨ν•œ 문제λ₯Ό λ‹€μ–‘ν•œ νŒ¨λŸ¬λ‹€μž„μœΌλ‘œ λ‹€λ΄κ²Œ ν’€ 수 μžˆλ‹€λŠ” 것을 보여주고 κ°„λž΅νžˆ μ„€λͺ…ν•œλ‹€. μ΄λ•Œ, λŒ€λΆ€λΆ„μ˜ 경우 κΈ΄ μ„€λͺ…이 ν•„μš”μ—†λ‹€. 이미 문제λ₯Ό ν’€μ–΄λ΄€κΈ° λ•Œλ¬Έμ΄κΈ°λ„ ν•˜κ³ , 문제 μžμ²΄κ°€ κ°„λ‹¨ν•˜κΈ° λ•Œλ¬Έμ΄κΈ°λ„ ν•˜λ‹€.
  3. μ΄λ²ˆμ—λŠ” ν•΄λ‹Ή νŒ¨λŸ¬λ‹€μž„μ„ μ΄μš©ν•΄μ„œ μ•žμ„œ 1λ²ˆμ—μ„œ ν’€μ—ˆλ˜ λ¬Έμ œμ™€ μœ μ‚¬ν•˜μ§€λ§Œ λ‹€λ₯Έ 문제λ₯Ό ν’€κ²Œ ν•œλ‹€.

이런 μ‹μœΌλ‘œ νŒ¨λŸ¬λ‹€μž„μ„ μ—¬λŸ¬κ°€μ§€ μ†Œκ°œν•œλ‹€. 예λ₯Ό λ“€μ–΄ ꡬꡬ단 같은 λ¬Έμ œλŠ” μ΅œμ†Œ 10κ°€μ§€ μ΄μƒμ˜ νŒ¨λŸ¬λ‹€μž„μœΌλ‘œ ν’€ μˆ˜κ°€ μžˆλ‹€.

학생은 이 κ²½ν—˜μ„ 톡해 ν”„λ‘œκ·Έλž˜λ° "κ°œλ…"κ³Ό "νŒ¨λŸ¬λ‹€μž„"듀을 ν•™μŠ΅ν•˜κ²Œ 되며, μ–΄λ–€ κ²½μš°μ— μ–΄λ–€ νŒ¨λŸ¬λ‹€μž„μ΄ 더 μ μ ˆν•œμ§€ νŒλ‹¨ν•  λŠ₯λ ₯이 생기고, 무엇보닀도 ν•œκ°€μ§€ νŒ¨λŸ¬λ‹€μž„μ— λŒ€ν•œ 초기 각인(μƒˆλΌμƒˆκ°€ 처음 λ³Έ 흰색을 무쑰건 어미라고 μƒκ°ν•˜λŠ” 효과)을 깨트리고, μ€ λ” μžμœ λ‘œμ›Œμ§ˆ 수 μžˆλ‹€ -- ν•œκ°€μ§€ νŒ¨λŸ¬λ‹€μž„λ§Œ μ•„λŠ” μ‚¬λžŒλ³΄λ‹€λŠ” μ—¬λŸ¬κ°€μ§€ νŒ¨λŸ¬λ‹€μž„μ„ μ•„λŠ” μ‚¬λžŒμ΄ 더 개방적이고 포용λ ₯이 λ„“λ‹€. --JuNe

κ³ ν•™λ…„(저학년을 κ°€λ΄μΉ  μ‚¬λžŒλ“€) λŒ€μƒμœΌλ‘œ κ°•μ˜λ₯Ό 해쀄 μš©μ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. λ§Œλ§Œν•œ λ¬Έμ œκ°€ κ²°μ½” λ§Œλ§Œν•œ 게 μ•„λ‹ˆλΌλŠ” 것, κ°„λ‹¨ν•œ κ²ƒμ—μ„œ 정말 μ—„μ²­λ‚˜κ²Œ λ§Žμ€ κ±Έ 배울 수 μžˆλ‹€λŠ” 것 등을 느끼게 될 κ²ƒμž…λ‹ˆλ‹€. --JuNe
μš”μ„Έ 저도 μœ„μ™€ 같은 것 λ•Œλ¬Έμ— κ³ λ―Ό ν–ˆλŠ”λ° ν•΄κ²°ν•˜κΈ°κ°€ 쉽지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€. ν›„λ°°λ“€μ—κ²Œ μ€ λ” λ§Žμ€ κ±Έ 배울 수 μžˆλŠ” λ¬Έμ œμ— κ΄€ν•˜μ—¬μ„œ... 그런데 μ–΄λ €μš΄ λ¬Έμ œλŠ” μ’Œμ ˆν•  κ±° κ°™κ³  κ·Έλ ‡λ‹€κ³  μ‰¬μš΄ λ¬Έμ œλŠ” λ°°μš°λŠ” 게 μ–Όλ§ˆ μ—†λŠ” κ±° κ°™κ³ ... μ—¬λŸ¬ κ°€μ§€ νŒ¨λŸ¬λ‹€μž„μ„ ν†΅ν•΄μ„œ 고민을 ν•΄κ²°ν•  수 μžˆλ‹€λ©΄ 이번 κΈ°νšŒμ— ν•œ 번 μ‹œλ„ 해보고 μ‹ΆμŠ΅λ‹ˆλ‹€. --μž¬λ™

ToyProblems Lab

  • λ‚ μ§œ: 6μ›” 1일 μ˜€μ „ 10μ‹œ
  • μž₯μ†Œ: μ€‘μ•™λŒ€ κ³΅λŒ€ 7μΈ΅ 컴퓨터 곡학과 PCμ‹€ (μ—¬λŸ¬ λŒ€μ˜ 컴퓨터와 ν™”μ΄νŠΈ λ³΄λ“œκ°€ μ΄κ³³λ°–μ—λŠ”...)
  • μ€λΉ„λ¬Ό: 기본적으둜 μ΄ν΄λ¦½μŠ€μ™€ Python 2.3b1( + idlefork), NetMeeting μ„€μΉ˜
  • 강사: κΉ€μ°½μ€
  • 쑰ꡐ: κ°•κ·œμ˜

  • μ°Έκ°€μž 자격: ν›„λ°°λ₯Ό κ°€λ΄μ³λ΄€κ³ , μ•žμœΌλ‘œλ„ κ°€λ΄μΉ  μ‚¬λžŒ.
  • μ‹ μ²­μž:
    1. λ₯˜μƒλ―Ό : μš”μ¦˜ 쑰금 λ°”μ˜μ§€λ§Œ, μ‹œκ°„μ΄ λ§žλŠ”λ‹€λ©΄, λ‹Ήμ—°νžˆ! μ•ˆλ§žμœΌλ©΄ λ§žμΆ”μ–΄μ„œ~ λ‹Ήμ—°νžˆ!
    2. 인수
    3. μž„μΈνƒ
    4. μ‹ μž¬λ™
    5. 채희상
    6. 1002
    7. μƒμš± : 늦게 μ˜¬λ €μ„œ μ£„μ†‘ν•΄μš”... μ°Έκ°€ κ·Έλž˜λ„ κ°€λŠ₯ν•˜κ² μ£ ?? γ…‘.γ…œ
      일이 μƒκ²¨μ„œ λͺ»κ°€κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. γ…œ.γ…‘ --μ°½μ„­
      μž˜ν•˜λ©΄ 갈 수 μžˆμ„ 지도 λͺ¨λ΄κ² μŠ΅λ‹ˆλ‹€. -_-; μ§€κΈˆ μ‹œκ°„ μ‘°μœ¨μ€‘μ΄λΌ..;; κΌ­ κ°€κ³  μ‹Άμ–΄μ„œ.;; μ£„μ†‘ν•©λ‹ˆλ‹€. μ΄λž¬λ‹€ μ €λž¬λ‹€ ν•΄μ„œ..; λ˜λ„λ‘ 가도둝 ν•˜λ €κ΅¬μš”.. μž¬λ°Œμ„ κ±° 같은데..;;

ToyProblemsλ₯Ό ν’€λ©΄μ„œ μ ‘ν•˜κ²Œ 될 νŒ¨λŸ¬λ‹€μž„λ“€(μ•„λ§ˆλ„): CSP, Generators, Coroutines, Various Forms of Recursion, Functional Programming, OOP, Constraint Programming, State Machine, Event Driven Programming, Metaclass Programming, Code Generation, Data Driven Programming, AOP, Generic Programming, Higher Order Programming, Lazy Evaluation, Declarative Programming, ...

Programme
  • 전체 μ§„ν–‰ 2μ‹œκ°„ 30λΆ„
  • ToyProblems 후보 : ꡬꡬ단, μ†Œμˆ˜κ΅¬ν•˜κΈ°, SpiralArray, μ‚Όκ°ν˜• 그리기, (기타 μ°Έκ°€μžκ°€ μ›ν•˜λŠ” 것 μΆ”κ°€ κ°€λŠ₯. 단 쑰건은 1학년이 ν•œ μ‹œκ°„ 내에 ν’€ 수 μžˆλŠ” κ°„λ‹¨ν•œ 문제)
  • PairProgramming
  • μžμ‹ μ΄ μ›ν•˜λŠ” μ–Έμ–΄ (python recommended)

  1. μ—¬κΈ°μ—μ„œ 두 κ°€μ§€ 정도λ₯Ό κ³ λ₯Έ λ‹€μŒ
  2. κ·Έ 쀑 ν•˜λ‚˜μ— λŒ€ν•΄ 슀슀둜 문제λ₯Ό ν’€κ²Œν•œλ‹€ 10m.
  3. 비ꡐ해 λ³Έλ‹€. λͺ‡ κ°€μ§€ νŒ¨λŸ¬λ‹€μž„μ΄ λ‚˜μ™”λ‚˜(μ•„λ§ˆλ„ ν•˜λ‚˜λ‚˜ λ‘˜μ„ λ„˜μ§€ μ•Šμ„ 것이닀) 10m
  4. μ „ν˜€ μƒˆλ‘œμš΄ νŒ¨λŸ¬λ‹€μž„μœΌλ‘œ 동일 문제λ₯Ό ν‘ΈλŠ” 과정을 보여μ€λ‹€ 10m
  5. λΉ„μŠ·ν•˜μ§€λ§Œ μ•½κ°„ λ‹€λ₯Έ 문제λ₯Ό ν’€κ²Œν•œλ‹€ 10m
  6. 비ꡐ해 λ³Έλ‹€. 5m
  7. 또 λ‹€λ₯Έ νŒ¨λŸ¬λ‹€μž„μœΌλ‘œ 동일 문제λ₯Ό ν‘ΈλŠ” 과정을 보여μ€λ‹€ 10m
  8. λΉ„μŠ·ν•˜μ§€λ§Œ μ•½κ°„ λ‹€λ₯Έ 문제λ₯Ό ν’€κ²Œν•œλ‹€ 10m
  9. 1λ²ˆμ—μ„œ κ³ λ₯Έ λ‚˜λ¨Έμ§€ 문제λ₯Ό κ°€λŠ₯ν•˜λ©΄ λ‹€μ–‘ν•œ λ°©λ²•μœΌλ‘œ μ—¬λŸ¬λ²ˆ ν’€κ²Œν•œλ‹€. 각자 λͺ‡ 개의 μ „ν˜€ λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€μ–΄ λ‚΄λŠ”κ°€? 60m
  10. λΉ„κ΅ν•œλ‹€. 10m
  11. ν† λ‘  15m

감상
인수 - μ‹ κΈ°ν–ˆλ‹€. CSPκ°€ 재미 μžˆμ—ˆλ‹€. μ§‘μ—μ„œ 해봐야겠닀.
희상 - CSPλ₯Ό μ‘μš©ν•΄ 문제λ₯Ό ν‘ΈλŠ” 것을 λ“£κ³  λ‚œ ν›„ Alan Kayκ°€ Paradigm이 Powerful Idea라고 ν–ˆλ˜ 것에 고개λ₯Ό 끄덕끄덕 ν•  수 μžˆμ—ˆλ‹€. κ·Έλ™μ•ˆ FPλ₯Ό λ§›λ§Œ λ³΄μ•˜μ§€ μ œλŒ€λ‘œ νƒκ΅¬ν•˜μ§€ μ•Šμ•˜λ˜ 것이 아쉬웠닀. FP에 λŒ€ν•œ 관심이 더 μ»μ‘Œλ‹€.
μƒμš± - μƒˆλ‘œμš΄ μƒˆκ³ λ°©μ‹μ„ μ•Œμ•„ κ°„λ‹€λŠ” 것은 μž¬λ―Έμžˆμ—ˆλ‹€.
지원 - FP Skill 을 배우게 된 것이 μ’‹μ•˜λ‹€.
μ°½μ€
늦게 온 μ‚¬λžŒμ΄ 쀑간에 μ°Έμ—¬ν•˜λŠ” 것은 λ¬Έμ œκ°€ μžˆλ‹€. κ·Έ μ‚¬λžŒμ€ μ•žλΆ€λΆ„μ„ λͺ¨λ΄κΈ° λ•Œλ¬Έμ— μ–΄λ–€ λΆ€μž‘μš©μ΄ μžˆλ‹€.
μ½”λ”© μ‹œκ°„μ΄ λΆ€μ‘±ν–ˆλ‹€. Code Kataλ₯Ό 해보지 λͺ»ν•΄μ„œ 아쉽닀.
ν•œλ¬Έμ œ μ—¬λŸ¬λ²ˆ ν‘ΈλŠ” 것은 μ—­μ‹œ 쒋은것 κ°™λ‹€.
상민 - μƒˆλ‘œμš΄ μ‚¬κ³ λž€, μƒˆλ‘œμš΄ 사고법이라 λΆˆλ¦¬μš°λŠ” 것이, λ―Έλ¬˜ν•œ 차이λ₯Ό μΈμ§€ν•˜λŠ” κ²ƒμ—μ„œ μ˜¨λ‹€λŠ” 사싀을 μ•Œμ•˜λ‹€. κ²Έμ†ν•œ μžμ„Έκ°€ μ€‘μš”ν•œκ²ƒ κ°™λ‹€.
- μ°½μ€ - Higher Order Programmingκ³Ό λ‘œμš°λ ˆλ²¨μ—μ„œμ˜ μ„€λͺ…(μ˜ˆμ»¨λŒ€ λ‹¨μˆœν•œ ν•¨μˆ˜ ν¬μΈν„°λ‘œ μ„€λͺ…ν•˜λŠ” 것)의 μ°¨μ΄λŠ” λ―Έλ¬˜ν•˜κ³ , 또 크닀. 동사(달리닀)λ₯Ό λͺ…사(달림)의 ν’ˆ μ•ˆμ— λ„£λŠ” 것이닀. 이 μ‚¬κ³ μ—μ„œ μ—„μ²­λ‚œ 차이가 생길 수 μžˆλ‹€.
μž¬λ™ - ν•œλ¬Έμ œ λ‹€μ‹œ ν’€κΈ°κ°€ μž¬λ―Έμžˆμ—ˆλ”°. μ‚¬κ³ μ˜ κ³ μ •ν™”λ₯Ό 경계해야 κ² λ‹€. μ‹œκ°„μ•ˆμ— λͺ»ν•΄μ„œ 좩격 μ΄μ—ˆλ‹€.
- μ°½μ€ - 타인을 κ°€λ΄μΉ˜κΈ° μœ„ν•΄, μ—¬λŸ¬κ°€μ§€λ‘œ ν’€ κ°€λŠ₯성이 μ£Όμ–΄μ§€λŠ” 것을 문제둜 λ§Œλ“€μž.
μ„μ²œ - 늦으면 μ•ˆλœλ‹€. Python μ‚¬μš©μ€‘ μ•„λŠ” 것과 μ“°λŠ” κ²ƒμ˜ μ»λ‹€λž€ 차이λ₯Ό λŠκΌˆλ‹€. κΈ°μ΄ μ‚¬κ³ μ— κ°‡ν˜€λ²„λ € μƒˆλ‘œμš΄ μ‚¬κ³ λ‘œ 전이 λͺ»ν•˜λŠ” κ²ƒμ—μ„œ 어렀움을 λŠκΌˆλ‹€.
- μ°½μ€ - ꡐ윑의 3단계 μ–ΈκΈ‰ Romance(μ‹œ, Disorder)-Discipline(예, Order)-Creativity(μ•…, Order+Disorderλ₯Ό λ„˜λŠ” 무언가) , μƒˆλ‘œμš΄ 것을 λ°°μšΈλ•ŒλŠ” κΈ°μ΄ μ‚¬κ³ λ₯Ό λ²—μ–΄λ‚˜ μƒˆλ‘œμš΄ κ²ƒλ§Œμ„ μƒκ°ν•˜λŠ” λ°°μš°λŠ” μžμ„Έκ°€ ν•„μš”ν•˜λ‹€. ( 예-μ΅œλ°°λ‹¬ μœ λ„λ₯Ό λ°°μš°λŠ” κ³Όμ •μ—μ„œ μœ λ„μ˜ κ·œμΉ™λ§Œμ„ μ§€ν‚€λ©° μ‹Έμš°λŠ” λͺ¨μŠ΅), disciplineμ—μ„œ creativity둜 λ„˜μ–΄κ°€λŠ” 것이 μ€‘μš”ν•˜λ‹€.
규영 - κ°€λ΄μΉ˜λŠ” κ²ƒμ˜ 어렀움. μ–΄μ„€ν”„κ²Œ κ°€λ΄μΉ˜λ €λ‹€κ°€ μ–΄λ–€ λ©΄μ—μ„œλŠ” ν”Όν•΄λ₯Ό 쀄 μˆ˜λ„ μžˆκ² λ‹€λŠ” 생각을 ν–ˆλ‹€. 그리고 μˆ˜ν•™μ΄λ‚˜ 논리적 μ‚¬κ³ μ˜ μ€‘μš”μ„±μ„ κΉ¨λ‹¬μ•˜λ‹€.
인택 - κ°€λ΄μΉ˜λŠ” 것 μ—­μ‹œ λ°°μš°λŠ” 과정이닀. Metaphore의 ν•„μš”μ„±


Higer order programmingμ—μ„œ μ€‘μš”ν•œ 것은 동사λ₯Ό λͺ…사화해μ€λ‹€λŠ” 것인데, Command Pattern도 이와 λΉ„μŠ·ν•œ 것 κ°™μŠ΅λ‹ˆλ‹€.
CP도 Functor 의 일쒅이닀. ( 예 - Spiral Matrixλ₯Ό Vector의 λ°©λ²•μœΌλ‘œ ν’€κΈ°). CPλΆ€ν„° 배우면 CPμ—μ„œ μ œμ‹œν•˜λŠ” μ˜ˆμ—μ„œλ§Œ μ μš©ν•˜λŠ” κ²ƒμœΌλ‘œ κ°‡νžμˆ˜ μžˆλ‹€.

μΆ”μ²œμ±… 3ꢌ
κ·Έμ™Έ μ–ΈκΈ‰λœ μ±…λ“€
  • HowToSolveIt
  • ChapterZero
  • How to Prove it
  • How to Read and Do Proofs
  • Proofs and Refutations (λ²ˆμ—­νŒ 있음)
  • λ¬Έμ œν•΄κ²°μ˜ μˆ˜ν•™μ  μ „λž΅
  • The Art and Craft of Problem Solving


  • JuNeλ‹˜ μ†ŒμŠ€ 곡개 ν•΄μ£Όμ…”μš”. _temp에 있던 μ½”λ“œλ“€μ΄ 눈 μ•žμ— μ•„λ₯Έκ±°λ €μš”. :) --κ°•κ·œμ˜
  • νŒ¨λŸ¬λ‹€μž„ ν”„λ‘œκ·Έλž˜λ° μž¬λ―Έμžˆμ–΄ λ³΄μ΄λ„€μš”. 2011λ…„ λ°λΈ”μŠ€ 캠프에 μ‹œλ„ν•΄λ³΄λ©΄ μ’‹κ² μŠ΅λ‹ˆλ‹€ - μ„œμ§€ν˜œ
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:17
Processing time 0.0317 sec