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.0405 sec