CS50๋Š” ํ•˜๋ฒ„๋“œ ๋Œ€ํ•™๊ต์˜ ์ปดํ“จํ„ฐ๊ณผํ•™ ๊ฐ•์ขŒ๋ช…์ด๋‹ค. ๋‚ด๊ฐ€ ์ด ์˜จ๋ผ์ธ ๊ฐ•์ขŒ๋ฅผ edX๋ผ๋Š” MOOC ํ”Œ๋žซํผ์„ ํ†ตํ•ด ์ˆ˜๊ฐ•ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ๋Š” ํŽ˜์ด์Šค๋ถ SW๊ต์œก์„ ์ค€๋น„ํ•˜๋Š” ์„ ์ƒ๋‹˜๋“ค์˜ ๋ชจ์ž„ ๊ทธ๋ฃน์—์„œ ์ด๋Ÿฐ ๊ฐ•์˜๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์šฐ์—ฐํžˆ ์•Œ๊ฒŒ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด ๊ธ€์„ ๋ณธ ๊ฒƒ์ด ์˜ฌํ•ด ์ดˆ์˜€์œผ๋‹ˆ ๋งˆ์ง€๋ง‰ ๊ณผ์ œ๋ฅผ ์ œ์ถœํ•˜๊ธฐ๊นŒ์ง€ ๊ฑฐ์˜ 1๋…„์ด ๊ฑธ๋ ธ๋‹ค. ์ค‘๊ฐ„ ์ค‘๊ฐ„ ๋‹ค๋ฅธ ์ผ๋“ค์ด ์žˆ๊ธฐ๋„ ํ–ˆ๊ณ  ๋˜ ์˜์š•์ด ์ถฉ๋งŒํ–ˆ๋‹ค๊ฐ€ ์‚ฌ๋ผ์กŒ๋‹ค๊ฐ€๋ฅผ ๋ฐ˜๋ณตํ–ˆ์œผ๋‹ˆ ๋‹น์—ฐํ•œ ๊ฒฐ๊ณผ๋ผ๋Š” ์ƒ๊ฐ๋„ ๋“ค์ง€๋งŒ ์–ด์จŒ๋“  ์˜ฌํ•ด ๋ชฉํ‘œ๋กœ ์žก์•˜๋˜ CS50 ๊ณผ์ •์„ ๋ฌด์‚ฌํžˆ ์ˆ˜๋ฃŒํ–ˆ๋‹ค.

ํ˜น์‹œ๋‚˜ ์ด ๊ณผ์ •์— ๋„์ „ํ•  ๋‹ค๋ฅธ ๋ถ„๋“ค์—๊ฒŒ ๋„์›€์ด ๋ ๊นŒ ์‹ถ์–ด CS50์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

๋ฏธ๋ฆฌ ์•Œ์•„๋‘๋ฉด ์ข‹์€ ์ 

  • CS50๋Š” ๋ฌด๋ฃŒ๋กœ ์ˆ˜๊ฐ•์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ self paced course, ์ฆ‰ ์ž์‹ ์ด ์›ํ•˜๋Š” ๋•Œ์— ์–ธ์ œ๋“ ์ง€ ๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ๊ณผ์ œ๋ฅผ ์ œ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ชจ๋“  ๊ฐ•์˜๋Š” ์˜์–ด๋กœ ์ง„ํ–‰๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์˜์–ด ๋“ฃ๊ธฐ ๋ฐ ๋…ํ•ด ๋Šฅ๋ ฅ์„ ํ•„์š”๋กœ ํ•œ๋‹ค. ๋‹ค๋งŒ, ๋™์˜์ƒ์˜ ๊ฒฝ์šฐ ์ŠคํŠธ๋ฆฌ๋ฐ์ด ์•„๋‹ˆ๋ผ ๋‹ค์šด๋กœ๋“œ๋ฅผ ํ†ตํ•ด ์‹œ์ฒญํ•  ์ˆ˜๋„ ์žˆ๋Š”๋ฐ ์ด๋•Œ ํ•œ๊ธ€ ์ž๋ง‰์„ ๋ฐ›์•„์„œ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ๋ชจ๋“  ๊ฐ•์˜์˜ ๊ณผ์ œ๋Š” ์˜์–ด๋กœ ์„ค๋ช…๋˜์–ด ์žˆ๊ณ  ์ œ์ถœ๋„ ์˜์–ด๋กœ ํ•ด์•ผ ํ•œ๋‹ค.
  • โ€˜์ด ๊ฐ•์˜๋ฅผ ๋“ฃ๊ธฐ ์œ„ํ•ด ์„ ์ˆ˜์ง€์‹์ด ํ•„์š”์—†๋‹ค.โ€˜๊ณ  ์ ์–ด๋„ ๊ทธ๋“ค์€ ์ฃผ์žฅํ•œ๋‹ค. ์‹ค์ œ๋กœ ๊ฐ•์˜๋ฅผ ๋ณด๋ฉด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‚˜ ์–ด๋–ค ์›๋ฆฌ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ๋•Œ ์ตœ๋Œ€ํ•œ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋„๋ก ์‹ค๋ฌผ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํ•™์ƒ๋“ค์ด ์ง์ ‘ ์ฒดํ—˜ํ•˜๊ฒŒ ํ•˜๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐœ์ธ์ ์œผ๋กœ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋‚˜ ์ปดํ“จํ„ฐ์˜ ๋™์ž‘์›๋ฆฌ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ์ดํ•ด๊ฐ€ ์žˆ์–ด์•ผ ์ˆ˜๊ฐ•์ด ์ˆ˜์›”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.
  • ๋ชจ๋“  ๊ฐ•์˜ ์˜์ƒ๊ณผ ๊ฐ•์˜ ์ž๋ฃŒ ๋“ฑ์€ ๊ณต๊ฐœ๋˜์–ด ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๊ณผ์ •์˜ ์ด์ˆ˜๋ณด๋‹ค๋„ ์–ด๋–ค ์‹์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฐ€๋ฅด์น˜๋Š”์ง€์— ๋Œ€ํ•œ ํžŒํŠธ๋ฅผ ์–ป๊ณ  ์‹ถ์€ ์„ ์ƒ๋‹˜์ด ๊ณ„์‹ ๋‹ค๋ฉด ์ด ๊ฐ•์˜๋ฅผ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. ๋Œ€ํ•™์ƒ์„ ์ƒ๋Œ€๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ค€์˜ ์ฐจ์ด๋Š” ์žˆ๊ฒ ์ง€๋งŒ ํ•™์ƒ๋“ค์—๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์›๋ฆฌ๋ฅผ ์ดํ•ด์‹œํ‚ค๊ณ ์ž ํ•  ๋•Œ ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€์ง€์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๊ณ„๊ธฐ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.
  • ์ด ๊ฐ•์˜๋Š” 2015๋…„ 12์›” 31์ผ์ด ๋งˆ๊ฐ์ผ์ด๋‹ค. ๋งŒ์•ฝ ์ด์ˆ˜ํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋ฉด ์ง€๊ธˆ๋ถ€ํ„ฐ 12์›” 31์ผ ์‚ฌ์ด์— ๋ชจ๋“  ๊ณผ์ œ๋ฅผ ์™„๋ฃŒํ•ด์•ผ ํ•œ๋‹ค. ๋‹ค๋งŒ ์ด ๊ฐ•์˜๋Š” ๋งค๋…„ ์ƒˆ๋กญ๊ฒŒ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ฌํ•ด๋ฅผ ๋†“์ณค๋‹ค๋ฉด ๋‚ด๋…„์ดˆ๋ฅผ ๊ธฐ์•ฝํ•˜๋ฉด ๋œ๋‹ค.

edX์—์„œ CS50 ์ˆ˜๊ฐ•ํ•˜๊ธฐ

๋จผ์ € edx์— ๊ฐ€์ž…์„ ํ•˜๊ณ  ์‚ฌ์ดํŠธ์—์„œ cs50๋กœ ๊ฒ€์ƒ‰์„ ํ•˜๊ฑฐ๋‚˜ https://www.edx.org/course/introduction-computer-science-harvardx-cs50x ์— ์ ‘์†ํ•œ ํ›„ โ€˜Enroll Nowโ€™ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋œ๋‹ค.

๋” ์ด์ƒ์˜ ์„ค๋ช…์€ ์ƒ๋žตํ•œ๋‹ค.

๊ฐ•์˜ ๊ฐœ์š”

์•„๋ž˜๋Š” CS50์˜ ์†Œ๊ฐœ ์˜์ƒ์ด๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰๊นŒ์ง€ ๊ฐ•์˜๋ฅผ ์ด๋Œ์–ด๋‚˜๊ฐ€๋Š” David J. Malan ๊ต์ˆ˜์˜ ์ด์•ผ๊ธฐ๋ฅผ ์ง์ ‘ ๋“ค์–ด๋ณด์ž.

๊ฐ•์˜๋Š” WEEK0๋ถ€ํ„ฐ WEEK12๊นŒ์ง€ ์ด 13์ฃผ์ฐจ์˜ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ์ง€๋งŒ WEEK11์€ ํœด์ผ์ด์–ด์„œ 12์ฃผ๋กœ ํŽธ์„ฑ๋˜์–ด์žˆ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. ๋ณดํ†ต ํ•œ ์ฃผ์ฐจ์— 2๊ฐœ์˜ ๊ฐ•์˜(Lecture, Lecture continued)๊ฐ€ ์žˆ๊ณ  ํ•œ ๊ฐ•์˜๊ฐ€ ๋ณดํ†ต 1์‹œ๊ฐ„ ๋‚ด์™ธ์˜ ๋ถ„๋Ÿ‰์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. Lecture์™ธ์— Workthroughs, Section, Shorts ๋“ฑ์ด ์žˆ๋Š”๋ฐ ์ด๋Š” ๊ธฐ๋ณธ ๊ฐ•์˜๋ฅผ ๋„์™€์ฃผ๋Š” ๋ณด์กฐ ๊ฐ•์˜๋“ค๋กœ ๋ณธ์ธ์ด ์ž˜ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๊ผญ ๋“ฃ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

๋Œ€๋ถ€๋ถ„ ์ฃผ๋‹น ํ•œ ๊ฐ€์ง€์˜ ๊ณผ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ Problem Set์—์„œ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. Problem Set์€ 0๋ถ€ํ„ฐ 8, ๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ง ๊ณผ์ œ(Final Project)๊นŒ์ง€ ์ด 10๊ฐœ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๊ฐ๊ฐ์˜ Problem Set์€ ๋˜ ๋‹ค์‹œ ์ž‘์€ ๋ช‡ ๊ฐ€์ง€์˜ ๋ฌธ์ œ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. Problem Set 1๋ถ€ํ„ฐ 5๊นŒ์ง€๋Š” ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ œ์ถœํ•˜๋ฉด ์ปดํ“จํ„ฐ๊ฐ€ ์ง์ ‘ ์ฑ„์ ํ•ด์„œ ๋ฐ”๋กœ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ  ๊ทธ ์™ธ ๊ณผ์ œ๋“ค์€ ์ œ์ถœํ•˜๋ฉด ์ตœ๋Œ€ 2์ฃผ์•ˆ์— CS50 ์Šคํƒญ์ด ์ฑ„์ ํ•˜์—ฌ Gradebook์„ ํ†ตํ•ด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฃผ์š” ๋‚ด์šฉ

๋ณดํ†ต โ€˜ํ”„๋กœ๊ทธ๋ž˜๋ฐโ€™ํ•˜๋ฉด ๋Œ€ํ•™์—์„œ๋Š” C์–ธ์–ด๋ฅผ ๋งŽ์ด ๋‹ค๋ฃฌ๋‹ค. ๊ต๋Œ€ ์žฌํ•™์‹œ์ ˆ์—๋„ ์ปดํ“จํ„ฐ๊ต์œก์ด ์ „๊ณต์ด์–ด์„œ C์–ธ์–ด๋ฅผ ํ•œ ํ•™๊ธฐ๋™์•ˆ ๋ฐฐ์šด์ ์ด ์žˆ๋Š”๋ฐ CS50๋Š” ์ด์— ๋น„ํ•ด ์ƒ๋‹นํžˆ ๋งŽ์€ ์ฃผ์ œ์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐ๋ณด๋‹ค ๊นŠ๊ฒŒ ๋ฐฐ์šด๋‹ค. ํ•œ๋งˆ๋””๋กœ ๋นก์„ธ๋‹ค. ๊ฐ„๋žตํ•˜๊ฒŒ ์†Œ๊ฐœํ•˜์ž๋ฉด ์ด ๊ฐ•์˜๋Š” C์–ธ์–ด, ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์ž๋ฃŒ๊ตฌ์กฐ, ๋””๋ฒ„๊น…, ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™”, ๋„คํŠธ์›Œํฌ, ์›น ๊ฐœ๋ฐœ, MVC ๋“ฑ์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ๋‹ค. ์•„๋ž˜์˜ ๊ฐ•์˜ ๊ณ„ํš์„ ๋ณด๋ฉด ๊ต‰์žฅํžˆ ๋งŽ์€ ๊ฐœ๋…๋“ค์„ ์งง์€ ์‹œ๊ฐ„์•ˆ์— ์†Œํ™”ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

Week 1
Linux. C. Compiling. Libraries. Types. Standard output.

Week 2
Casting. Imprecision. Switches. Scope. Strings. Arrays. Cryptography.

Week 3
Command-line arguments. Searching. Sorting. Bubble sort. Selection sort. Insertion sort. O. ฮฉ .ฮ˜. Recursion. Merge Sort.

Week 4
Stack. Debugging. File I/O. Hexadecimal. Strings. Pointers. Dynamic memory allocation.

Week 5
Heap. Buffer overflow. Linked lists.

Week 6
Hash tables. Tries. Trees. Stacks. Queues.

Week 7
TCP/IP. HTTP. HTML. CSS.

Week 8
PHP. MVC. SQL.

Week 9
JavaScript. Ajax.

Week 10
Security. Guest Lecture.

Week 11
holiday

Week 12
Exciting conclusion.

๊ณผ์ œ๋“ค

๊ฐ ์ฃผ๋ณ„๋กœ ์ฃผ์–ด์ง€๋Š” ๊ณผ์ œ๋Š” ๊ฐ•์˜์—์„œ ๋ฐฐ์› ๋˜ ๋‚ด์šฉ๋“ค์„ ์ž˜ ์ดํ•ดํ•˜๊ณ  ์‘์šฉํ•ด์•ผ๋งŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋“ค๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์ธ์ƒ๊นŠ์—ˆ๋˜ ๊ฒƒ์€ CS50์˜ ๋ฌธ์ œ๋“ค์€ ๋‹จ์ˆœํžˆ ์ ์ˆ˜๋ฅผ ๋งค๊ธฐ๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ด ๋˜ํ•œ ๋ฐฐ์›€์˜ ์—ฐ์žฅ์ด๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค๊ฒŒ๋” ๋งŒ๋“ค์–ด์ ธ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฐœ๋…์„ ์„ค๋ช…ํ•œ ๋™์˜์ƒ๊ณผ ์ž๋ฃŒ๋“ค์ด ๋ฌธ์ œ ์†์— ๋งŽ์ด ํฌํ•จ๋˜์–ด ์žˆ๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋‹จ์„œ์™€ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ž˜ ์ œ๊ณตํ•ด์ฃผ๊ณ  ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๊ฐ๊ฐ์˜ ๋ฌธ์ œ๋ฅผ ๊ฐ„๋žตํžˆ ์‚ดํŽด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • Problem Set 0: Scratch
  • ์กฐ๊ฑด์— ๋งž๊ฒŒ ์Šคํฌ๋ž˜์น˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๋Š” ๋ฌธ์ œ
  • Problem Set 1: C
  • ์ฃผ์–ด์ง„ ๋†’์ด๋งŒํผ ๋งˆ๋ฆฌ์˜ค ์‚ฐ(?)์„ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ
  • ์ž”๋ˆ์„ ๊ฑฐ์Šฌ๋Ÿฌ ์ค„ ๋•Œ ๋™์ „์ด ๋ช‡ ๊ฐœ ํ•„์š”ํ•œ์ง€ ๊ณ„์‚ฐํ•˜๋Š” ๋ฌธ์ œ
  • Problem Set 2: Crypto
  • ์ฃผ์–ด์ง„ ๋ฌธ์žฅ์„ ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์•”ํ˜ธํ™” ํ•˜๋Š” ๋ฌธ์ œ
  • Problem Set 3: Breakout
  • ๊ฒ€์ƒ‰, ์ •๋ ฌ์— ๊ด€ํ•œ ๋ฌธ์ œ
  • ๋ฒฝ๋Œ๊นจ๊ธฐ ๊ฒŒ์ž„์„ ์™„์„ฑํ•˜๋Š” ๋ฌธ์ œ
  • Problem Set 4: Forensics
  • BMP ํŒŒ์ผ์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์•”ํ˜ธํ™” ๋˜์–ด ์žˆ๋Š” ์‚ฌ์ง„ ํŒŒ์ผ์„ ๋ณต๊ตฌํ•˜๋Š” ๋ฌธ์ œ
  • BMP ํŒŒ์ผ์„ resizeํ•˜๋Š” ๋ฌธ์ œ
  • ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์นด๋“œ์—์„œ ์‚ญ์ œ๋œ ํŒŒ์ผ๋“ค์„ ๋ณต๊ตฌํ•˜๋Š” ๋ฌธ์ œ
  • Problem Set 5: Mispellings
  • ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์‚ฌ์ „ ํŒŒ์ผ์„ ํ™œ์šฉํ•˜์—ฌ ํ…์ŠคํŠธ ํŒŒ์ผ์˜ ๋งž์ถค๋ฒ•์„ ๊ฒ€์‚ฌํ•˜๋Š” ๋ฌธ์ œ
  • Problem Set 6: Web Server
  • HTTP 1.1์˜ ๋ช…์„ธ๋ฅผ ์ดํ•ดํ•˜๊ณ  ๋ฏธ์™„์„ฑ ์›น์„œ๋ฒ„์˜ ๊ธฐ๋Šฅ์„ ์™„์„ฑํ•˜๋Š” ๋ฌธ์ œ
  • Problem Set 7: C$50 Finance
  • HTML/CSS, PHP, MySQL ๋“ฑ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ๊ธฐ๋ณธ์ ์ธ CRUD๋ฅผ ๋‹ค๋ฃจ๋Š” ์›น์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฌธ์ œ
  • Problem Set 8: Mashup
  • ๊ตฌ๊ธ€์˜ ๋‰ด์Šค์™€ ์ง€๋„ API๋ฅผ ํ™œ์šฉํ•ด ๋งค์‹œ์—… ์‚ฌ์ดํŠธ๋ฅผ ์ œ์ž‘ํ•˜๋Š” ๋ฌธ์ œ
  • Final Project
  • ๊ธฐ๋ง ๊ณผ์ œ๋Š” ์‹ค์ œ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ์‚ฌ์šฉ ์–ธ์–ด๋‚˜ ํ˜•ํƒœ์˜ ์•„๋ฌด๋Ÿฐ ์ œํ•œ ์—†์ด ์ž์‹ ๋งŒ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฌธ์ œ๋‹ค.
  • ์•ž์˜ ๋ฌธ์ œ๋“ค์ฒ˜๋Ÿผ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ œ์ถœํ•  ํ•„์š”๋Š” ์—†๋‹ค. ๋Œ€์‹  2๋ถ„ ์ด๋‚ด์˜ ์˜์ƒ์„ ๋งŒ๋“ค์–ด์„œ ๋ณธ์ธ์˜ ์ด๋ฆ„, ์‚ฌ๋Š” ๊ณณ๊ณผ ํ”„๋กœ์ ํŠธ๋ช…, ๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด์„œ ์•Œ๋ฆฌ๊ณ  ์‹ถ์€ ๋‚ด์šฉ๋“ค์„ ๋‹ด์œผ๋ฉด ๋œ๋‹ค.
  • ๋‚˜๋Š” ์ดˆ๋“ฑํ•™๊ต ๊ต์œก๊ณผ์ • ์ค‘์— ์ง€์—ญ์— ๋Œ€ํ•ด์„œ ์†Œ๊ฐœํ•˜๋Š” ํŽธ์ง€๋ฅผ ๊ตํ™˜ํ•˜๋Š” ๋‚ด์šฉ์ด ์žˆ๋Š” ๊ฒƒ์— ์ฐฉ์•ˆํ•˜์—ฌ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ํ•™๊ธ‰ ๊ต๋ฅ˜๋ฅผ ๋„์™€์ค„ ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ํฌ๋กœ์Šค(https://cross.zzolab.com) ์ฐธ๊ณ .
  • ํฌ๋กœ์Šค ๊ฐœ๋ฐœ ํ›„๊ธฐ๋Š” ์กฐ๋งŒ๊ฐ„ ๋‚จ๊ฒจ๋ณผ ์ƒ๊ฐ์ด๋‹ค.

ํŽ˜์ด์Šค๋ถ์— ์†Œ๊ฐœํ•œ ๊ธ€

ํฌ๋กœ์Šค๋Š” ํ•™๊ธ‰๊ฐ„ ๊ต๋ฅ˜๋ฅผ ๋„์™€์ฃผ๋Š” ์„œ๋น„์Šค์ด๋‹ค. ์ดˆ๋“ฑํ•™๊ต ๊ต๊ณผ์„œ๋ฅผ ๋ณด๋ฉด ์ง€์—ญ ์‚ฌํšŒ์˜ ์ž์—ฐํ™˜๊ฒฝ๊ณผ ์ธ๋ฌธํ™˜๊ฒฝ์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๋ฉด์„œ ์ง€์—ญ์„ ์†Œ๊ฐœํ•˜๋Š” ํŽธ์ง€๋ฅผ ๊ตํ™˜ํ•˜๊ฑฐ๋‚˜ ๊ธฐํ–‰๋ฌธ์„ ๊ตํ™˜ํ•˜๋Š” ๋“ฑ์˜ ํ™œ๋™์ด ์žˆ๋Š”๋ฐ ์ด๋Ÿฐ ํ™œ๋™์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋“œ๋Š” ๊ต์‚ฌ์˜ ๋…ธ๋ ฅ์„ ์ข€ ์ค„์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค์ด๋‹ค. ๋ฌผ๋ก  ์ด ์™ธ์—๋„ ํ”„๋กœ์ ํŠธ ์ˆ˜์—…์„ ํ•œ๋‹ค๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์ง€์—ญ์˜ ํ•™๊ธ‰๊ณผ ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•จ๊ป˜ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” ์–ธ์ œ๋“ ์ง€ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด ์„œ๋น„์Šค์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ํ•™๊ธ‰ ๊ต๋ฅ˜ ํฌ๋ง์„ ์ง€๋„๋ฅผ ํ†ตํ•ด ์ง๊ด€์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋ณดํ†ต ํ•™๊ธ‰ ๊ต๋ฅ˜๋ฅผ ํฌ๋งํ•˜๋Š” ๊ธ€์€ ์ธ๋””์Šค์ฟจ ๊ฐ™์€ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ฒŒ์‹œํŒ์„ ํ†ตํ•ด ๋งŽ์ด ๊ฒŒ์‹œ๋˜๊ณ  ์žˆ๋Š”๋ฐ ํ•œ ๋ฒˆ์— ํ™•์ธํ•˜๊ธฐ๋„ ์–ด๋ ค์šธ ๋ฟ๋”๋Ÿฌ ์ด๋ฏธ ๋งˆ๊ฐ์ด ๋œ ๊ฒƒ์ธ์ง€ ์•„๋‹Œ์ง€๋„ ํ™•์ธํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค. ํฌ๋กœ์Šค๋Š” ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
์‚ฌ์šฉ๋ฒ•๋„ ๊ฐ„๋‹จํ•˜๋‹ค. ๋จผ์ € ๋ณธ์ธ์ด ํฌ๋งํ•˜๋Š” ๋‚ด์šฉ๋Œ€๋กœ ํ•™๊ธ‰๊ต๋ฅ˜๋ฅผ ์‹ ์ฒญํ•˜๊ณ  ๋‹ค๋ฅธ ์„ ์ƒ๋‹˜์˜ ์‹ ์ฒญ์— ๊ต๋ฅ˜ ํฌ๋ง ์˜์‚ฌ๋ฅผ ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ๋‚˜์—๊ฒŒ ๋“ค์–ด์šด ํฌ๋ง์„ ์ˆ˜๋ฝํ•˜๋ฉด ๊ต๋ฅ˜๊ฐ€ ์ด๋ฃจ์–ด์ง„๋‹ค. ์ด๋•Œ ์ƒ๋Œ€ ํ•™๊ธ‰ ์„ ์ƒ๋‹˜์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ ๋˜๋Š” ํœด๋Œ€ํฐ ๋ฒˆํ˜ธ ๋“ฑ์„ ๊ฐ€์ž…ํ•  ๋•Œ ๋“ฑ๋กํ•œ ์ด๋ฉ”์ผ์„ ํ†ตํ•ด ์•ˆ๋‚ดํ•ด ์ฃผ๊ฒŒ ๋œ๋‹ค. ๋‚˜์—๊ฒŒ ๋‹ค๋ฅธ ์„ ์ƒ๋‹˜์ด ๊ต๋ฅ˜๋ฅผ ํฌ๋งํ•  ๋•Œ์—๋„ ์ด๋ฉ”์ผ์ด ๋ฐœ์†ก๋œ๋‹ค.

์ •๋ฆฌํ•˜๋ฉฐ

๋‚˜๋Š” ์ดˆ๋“ฑํ•™๊ต ๋•Œ๋ถ€ํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ–ˆ๊ณ  ์ค‘ํ•™๊ต, ๊ณ ๋“ฑํ•™๊ต, ๋Œ€ํ•™๊ต์— ๊ฐ€์„œ๋„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋‚˜ ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์ ‘ํ•  ๊ธฐํšŒ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ๊นŒ์ง€ ์—ฌ์ „ํžˆ ์ปดํ“จํ„ฐ ๊ด€๋ จ ์ผ๋“ค์„ ์กฐ๊ธˆ์”ฉ ํ•˜๊ณ  ์žˆ๋‹ค. ์ด๋Ÿฐ ์ž…์žฅ์—์„œ CS50์˜ ๊ฐ•์˜ ๊ณ„ํš์„ ์ฒ˜์Œ ๋ดค์„ ๋•Œ๋Š” ์‚ฌ์‹ค โ€˜์ด์ •๋„์•ผ ๊ธฐ๋ณธ์ด์ง€โ€™ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์ง€๋งŒ ๋ง‰์ƒ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๋ฌธ์ œ๋ฅผ ํ•˜๋‚˜์”ฉ ํ•ด๊ฒฐํ•˜๋‹ค๋ณด๋‹ˆ ๋‚ด๊ฐ€ ์ƒ๊ฐ๋ณด๋‹ค ๊นŠ์ด ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ๋“ค์ด ๋ˆˆ์— ๋“ค์–ด์˜ค๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ๊นŠ์ด ํŒŒ๊ณ ๋“ค์–ด๊ฐ€๋ ค๋ฉด ํ•œ์—†์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋ฌผ๋ก  ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€๋Š” ์•Š์•˜๋‹ค. ์˜ค๋•ํ›„๊ฐ€ ๋ ๊นŒ๋ด.

์Šคํƒ์ด๋‚˜ ํ, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ๊ฐ™์€ ์ž๋ฃŒ๊ตฌ์กฐ์•ผ ์›Œ๋‚™ ์œ ๋ช…ํ•œ ๊ฒƒ๋“ค์ด์ง€๋งŒ Trie ๊ฐ™์€ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋˜๊ณ  ์ง์ ‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•ด๋ณธ ๊ฒƒ์€ ์ข‹์€ ๊ฒฝํ—˜์ด์—ˆ๋‹ค. ๋˜ ํฌ๋ Œ์‹ ๋ถ€๋ถ„์—์„œ ์•”ํ˜ธํ™”๋œ ์‚ฌ์ง„์„ ๋ณตํ˜ธํ™” ํ•œ๋‹ค๊ฑฐ๋‚˜ ์›น์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์„ ์ง์ ‘ ์™„์„ฑํ•ด๋ณด๋Š” ๊ฒƒ๋„ ํฅ๋ฏธ๋กœ์› ๋‹ค. SW๊ต์œก์ ์ธ ์ธก๋ฉด์—์„œ๋Š” Malan ๊ต์ˆ˜๊ฐ€ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋ฉด์„œ ํ•™์ƒ๋“ค์„ ์ง์ ‘ ๋ฌด๋Œ€ ์œ„๋กœ ๋ถˆ๋Ÿฌ ์ˆซ์ž๋‚˜ ๋ฌธ์ž๊ฐ€ ์ธ์‡„๋œ ์ข…์ด๋ฅผ ํ•˜๋‚˜์”ฉ ๋“ค๊ณ  ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๊ณผ์ •์„ ๋ˆˆ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•œ ๊ฒƒ์ด ์ธ์ƒ์ ์ด์—ˆ๋‹ค. ๋ฌธ์ž๋กœ ๋ณด๊ฑฐ๋‚˜ ๋ง๋กœ๋งŒ ์„ค๋ช…์„ ๋“ฃ๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ์ง๊ด€์ ์ด๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์› ๋‹ค.

๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๊นŒ์ง€ ์ œ์ถœํ•˜๊ณ  ๋‚˜๋‹ˆ ์˜ฌ ํ•œ ํ•ด๋Š” ๋‚ด๊ฐ€ ํ•˜๊ณ  ์‹ถ์€ ๊ณต๋ถ€๋ฅผ ์ง„๋“ํ•˜๊ฒŒ ํ•ด๋ƒˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด์„œ ์ •๋ง ์Šค์Šค๋กœ์—๊ฒŒ ๋ฐ•์ˆ˜๋ฅผ ์ณ์ฃผ๊ณ  ์‹ถ๋‹ค. ์ž˜ํ–ˆ๋‹ค ์ •๋ง!!