[CS50] CS50x 2026 - Lecture 0 - Scratch

μ°Έκ³ μλ£
- Harvard CS50: Introduction to Computer Science (https://cs50.harvard.edu/)
- μλ³Έ μμ: [νκΈλλΉ] βAIκ° μ½λ© λ€ νλλ° μ λ°°μμ?β νλ²λ κ΅μμ μ¬μ΄λ€ μ°Έκ΅μ‘ (https://www.youtube.com/watch?v=7ZJ4oo4h8vI)

λ³Έ μμμ μ΄λ―Έμ§ μΆμ²λ μμ 첨λΆν μ νλΈ μμμ λλ€.
μλ‘
βAIκ° μ½λ©μ λ€ ν΄μ£Όλλ° μ νλ‘κ·Έλλ°μ λ°°μμΌ νλμ?β
μ΄ μ§λ¬Έμ ChatGPT, Claude κ°μ λκ·λͺ¨ μΈμ΄ λͺ¨λΈ(LLM)μ΄ λ±μ₯ν μ΄ν κ°μ₯ λ§μ΄ λ°λ μ§λ¬Έ μ€ νλμ λλ€. νλ²λ λνκ΅μ CS50 κ°μλ₯Ό μ΄λλ David Malan κ΅μλ μ΄ μ§λ¬Έμ λν΄ λͺ μΎν λ΅λ³μ μ μν©λλ€. AIμ νμ°μ λλ €μν νμμ΄ μλλΌ μ€νλ € ν₯λ―Έμ§μ§ν κΈ°νμ΄λ©°, κ·ΈλΌμλ λΆκ΅¬νκ³ μ»΄ν¨ν° κ³Όνμ κΈ°λ³ΈκΈ°λ μ¬μ ν νμμ μ΄λΌλ κ²μ λλ€.
μ΄ κΈμμλ CS50 κ°μμ ν΅μ¬ λ΄μ©μ λ°νμΌλ‘ μ AI μλμλ μ»΄ν¨ν° κ³Όν κ΅μ‘μ΄ μ€μνμ§, κ·Έλ¦¬κ³ μ»΄ν¨ν°κ° μΈμμ μ΄λ»κ² νννκ³ λ¬Έμ λ₯Ό ν΄κ²°νλμ§ μ΄ν΄λ³΄κ² μ΅λλ€.
AI μλμ νλ‘κ·Έλλ°: λ³λͺ©μμ νμ μΌλ‘
μΈκ°μ΄λΌλ λ³λͺ© νμ
μννΈμ¨μ΄ κ°λ° μ κ³μμλ μμ λ λμ μΈκ°μ΄ μ§μ μ νμ λ§λ€κ³ λ¬Έμ λ₯Ό ν΄κ²°ν΄ μμ΅λλ€. κ·Έλ¬λ μ¬κΈ°μλ κ·Όλ³Έμ μΈ νκ³κ° μμμ΅λλ€. ν루 λμ μΌν μ μλ μκ°μ μ νμ μ΄κ³ , νμ μλ νμ λμ΄ μμ΅λλ€. λ°λ©΄ ν΄κ²°ν΄μΌ ν λ²κ·Έμ ꡬννκ³ μΆμ κΈ°λ₯μ νμ λμ³λ¬μ΅λλ€. μΈκ° μμ²΄κ° λ³λͺ©(bottleneck)μ΄μλ κ²μ λλ€.

AIμ λ±μ₯μ μ΄ λ³λͺ© νμμ κ·Όλ³Έμ μΌλ‘ λ³νμν€κ³ μμ΅λλ€. μ΄μ κ°λ°μλ AIλ₯Ό νμ©νμ¬ μ½λμ λ²κ·Έλ₯Ό μ°Ύμλ΄κ±°λ, μλ‘μ΄ κΈ°λ₯μ μΆκ°νλ μμ μ ν¨μ¬ ν¨μ¨μ μΌλ‘ μνν μ μκ² λμμ΅λλ€.
νΈλ€μ μ¬μ ν μΈκ°μ΄ μ‘μμΌ νλ€
κ·Έλ λ€λ©΄ AIκ° λͺ¨λ κ²μ ν΄κ²°ν΄ μ€ μ μμκΉμ? Malan κ΅μλ λ¨νΈνκ² βμλλ€βλΌκ³ λ΅ν©λλ€. CS50μ΄ βComputer ScienceβλΌλ μ΄λ¦μ κ°μ§ μ΄μ κ° λ°λ‘ μ¬κΈ°μ μμ΅λλ€. μ΄ μμ μ λ¨ ν λ²λ λ¨μν μ½λ© κΈ°μ μ κ°λ₯΄μΉλ μμ μ΄ μλμμ΅λλ€. μ½λ© λ₯λ ₯μ μ»΄ν¨ν° κ³Όνμ λ°°μ°λ κ³Όμ μμ μμ°μ€λ½κ² λ°λΌμ€λ λΆμ°λ¬ΌμΌ λΏμ λλ€.
CS50μ μ§μ ν λͺ©νλ μ¬κ³ νλ λ°©λ²μ κ°λ₯΄μΉλ κ²μ λλ€. μ λ ₯μ λ°μμ μ¬λ°λ₯Έ μΆλ ₯μ λ§λ€μ΄λ΄λ λ², κ·Έλ¦¬κ³ μ΄λ₯Ό μν λꡬλ€μ λ§μ€ν°νλ λ²μ λ°°μ°λ κ²μ΄ ν΅μ¬μ λλ€. μ¬λ¬λΆμ μμ€ν μ λλ €λ€λλ μΉκ°μ΄ μλλΌ, μ΄ μμ€ν μ μμ ν μ₯μ ν μ€κ³μκ° λμ΄μΌ ν©λλ€.
κ³μ°κΈ°μ κ΅ν
μ΄λ° μν©μ κ³Όκ±°μλ μμμ΅λλ€. κ³μ°κΈ°κ° μ²μ λ±μ₯νμ λ λ§μ μ¬λλ€μ΄ λ μ΄μ μμ°μ λ°°μΈ νμκ° μλ€κ³ μκ°νμ΅λλ€. κ·Έλ¬λ μμ λ μ΄ μ§λ μ§κΈλ λ§μ κ³Ό λΊμ μ μ리λ₯Ό μ΄ν΄νλ κ²μ μ¬μ ν κ°μΉ μλ μΌμ λλ€. λ§μ°¬κ°μ§λ‘, AIκ° μ½λλ₯Ό μμ±ν΄ μ£ΌλλΌλ κ·Έ μ½λκ° λ¬΄μμ νλμ§, μ΄λ€ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλμ§ μ΄ν΄νλ κ²μ μΈκ°μ λͺ«μ λλ€.
ν΅μ¬ μ리λ₯Ό λ§μ€ν°ν νμλ AIλΌλ μ‘°μμκ² κΈ°λμ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ©΄ λ©λλ€. νμ§λ§ κ·Έ μ μ κΈ°λ³ΈκΈ°λ₯Ό κ°μΆλ κ²μ΄ νμμ μ λλ€.
λ°μ΄ν°μ νν: μ»΄ν¨ν°λ μΈμμ μ΄λ»κ² μ΄ν΄νλκ°

μ΄μ§λ²μ μ리
μ»΄ν¨ν°λ μμ΄λ, νκ΅μ΄λ, μ°λ¦¬κ° μΌμμμ μ¬μ©νλ 10μ§λ² μ«μλ μ§μ μ μΌλ‘ μ΄ν΄νμ§ λͺ»ν©λλ€. μ»΄ν¨ν°κ° μ΄ν΄νλ κ²μ μ€μ§ λ κ°μ§ μνλΏμ λλ€. μ€μμΉκ° μΌμ§ μν(1)μ κΊΌμ§ μν(0)μ λλ€. μ΄ νλνλμ λ¨μλ₯Ό λΉνΈ(bit)λΌκ³ λΆλ₯΄λ©°, μ΄λ Binary Digitμ μ€μλ§μ λλ€.
μκ°λ½μΌλ‘ μ«μλ₯Ό μΈλ λ°©μμ μκ°ν΄ λ΄ μλ€. μΌλ°μ μΌλ‘ μκ°λ½ λ€μ― κ°λ‘ 1λΆν° 5κΉμ§λ§ μ μ μμ΅λλ€. νμ§λ§ μκ°λ½μ ν¨ν΄μ νμ©νλ©΄ μ΄λ¨κΉμ? κ° μκ°λ½μ μλ―Έλ₯Ό λΆμ¬νμ¬ μμ§λ 1, κ²μ§λ 2, μ€μ§λ 4μ κ°μ΄ μ€μ νλ©΄, ν μμΌλ‘ 0λΆν° 31κΉμ§ μ΄ 32κ°μ§ μ«μλ₯Ό ννν μ μμ΅λλ€.

μ»΄ν¨ν°λ λμΌν μ리λ₯Ό μ¬μ©ν©λλ€. μ ꡬ μΈ κ°κ° μλ€λ©΄, κ°κ° 1μ μ리, 2μ μ리, 4μ μ리λ₯Ό λνλ λλ€. λͺ¨λ κΊΌμ Έ μμΌλ©΄ 0, 맨 μ€λ₯Έμͺ½λ§ μΌμ§λ©΄ 1, κ°μ΄λ°λ§ μΌμ§λ©΄ 2, λ λ€ μΌμ§λ©΄ 3μ λλ€. μ΄λ° μμΌλ‘ μ ꡬ μΈ κ°λ§μΌλ‘ 0λΆν° 7κΉμ§ 8κ°μ§ μ«μλ₯Ό ννν μ μμ΅λλ€.

λ°μ΄νΈμ λΉνΈμ νμ₯
λΉνΈλ₯Ό 8κ° λͺ¨μΌλ©΄ 1λ°μ΄νΈ(byte)κ° λ©λλ€.

1λ°μ΄νΈλ‘λ 0λΆν° 255κΉμ§ μ΄ 256κ°μ§ κ°μ ννν μ μμ΅λλ€. μλ μ»΄ν¨ν°κ° 256κ°μ§ μμλ§ νμν μ μμλ μ΄μ , GIF μ΄λ―Έμ§κ° 256μμΌλ‘ μ νλλ μ΄μ κ° λ°λ‘ μ¬κΈ°μ μμ΅λλ€.

π‘ TIPS
GIF μ΄λ―Έμ§κ° 256μ(8λΉνΈ)μΌλ‘ μ νλλ μ΄μ λ 1987λ κΈ°μ κ°λ° λΉμμ μ μ₯ κ³΅κ° μ μ½ λ° μ μ‘ μλ ν₯μ(ν¨μ¨μ±)μ΄ μ£Ό λͺ©μ μ΄μκΈ° λλ¬Έμ λλ€.
32λΉνΈμ 64λΉνΈμ μ°¨μ΄λ λ¨μν λ λ°°κ° μλλλ€.
32λΉνΈλ‘ ννν μ μλ μ«μλ μ½ 40μ΅(2322^{32}232)μ΄λ©°, μ΄λ μ½ 4GBμ ν΄λΉν©λλ€. κ³Όκ±° μ»΄ν¨ν°κ° RAMμ 4GB μ΄μ μΈμνμ§ λͺ»νλ μ΄μ μ λλ€.

λ°λ©΄ 64λΉνΈλ 2642^{64}264, μ¦ μ½ 18κ²½(18,446,744,073,709,551,616)μ΄λΌλ μ²λ¬Ένμ μ«μλ₯Ό ννν μ μμ΅λλ€.

λΉνΈ μλ₯Ό λ λ°°λ‘ λλ Έμ λΏμΈλ°, νν κ°λ₯ν λ²μλ κΈ°νκΈμμ μΌλ‘ μ¦κ°ν κ²μ λλ€.
λ¬Έμμ νν: ASCIIμ Unicode
μ«μλ§μΌλ‘λ μ΄λ©μΌ, λ¬Έμ, λ©μμ§λ₯Ό ννν μ μμ΅λλ€. κ·Έλμ μ»΄ν¨ν° κ³Όνμλ€μ μ½μμ λ§λ€μμ΅λλ€. νΉμ μ«μλ₯Ό νΉμ λ¬Έμμ λμμν€κΈ°λ‘ ν κ²μ λλ€. μ΄ μ½μμ΄ λ°λ‘ ASCII(American Standard Code for Information Interchange)μ λλ€.

ASCIIμμ 65λ λλ¬Έμ A, 66μ B, 67μ Cλ₯Ό λνλ λλ€. βHi!βλΌλ λ¨μ΄λ μ»΄ν¨ν° λ΄λΆμμ 72(H), 105(i), 33(!)μ΄λΌλ μ«μμ λμ΄λ‘ μ μ₯λ©λλ€. μ¬λ¬λΆμ΄ 보λ΄λ ν μ€νΈ λ©μμ§, μ΄λ©μΌ, λ¬Έμλ κ²°κ΅ μλ§μ 0κ³Ό 1μ΄ λ§λ€μ΄λΈ μ«μ λ©μ΄λ¦¬μΌ λΏμ΄λ©°, μ°λ¦¬ λμλ§ κΈμλ‘ λ³΄μ΄λλ‘ μ½μλμ΄ μλ κ²μ λλ€.

ASCIIλ λ―Έκ΅μμ λ§λ€μ΄μ Έ μμ΄ μνλ²³λ§ ννν μ μλ€λ νκ³κ° μμμ΅λλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ Unicodeκ° λ±μ₯νμ΅λλ€. Unicodeλ 8λΉνΈλ³΄λ€ ν¨μ¬ λ§μ λΉνΈλ₯Ό μ¬μ©νμ¬ μ μΈκ³ λͺ¨λ μΈμ΄μ μ΄λͺ¨μ§κΉμ§ ννν μ μμ΅λλ€.

2015λ μ₯μ€ν¬λ μ¬μ μ΄ βκΈ°μ¨μ λλ¬Όμ ν리λ μΌκ΅΄β μ΄λͺ¨μ§(π)λ₯Ό μ¬ν΄μ λ¨μ΄λ‘ μ μ ν κ²μ λ¬Ένμ μΌλ‘ μ΄λͺ¨μ§κ° μ΄λ―Έ λ¬Έμλ‘ μΈμ λ°μμμ 보μ¬μ€λλ€. νμ§λ§ μ»΄ν¨ν° κ³Όνμ κ΄μ μμ μ΄λͺ¨μ§λ κ·Έλ¦Όμ΄ μλλΌ μ½μλ λ²νΈμ λΆκ³Όν©λλ€.

μ΄λ―Έμ§μ μμμ νν
μ¬μ§μ μ΄λ»κ² ννλ κΉμ? μ΄λ―Έμ§λ₯Ό κ·Ήλ¨μ μΌλ‘ νλνλ©΄ μλ§μ μ λ€μ΄ 보μ λλ€. μ΄ μ νλνλλ₯Ό ν½μ (pixel, Picture Element)μ΄λΌκ³ λΆλ¦ λλ€. κ° ν½μ μ μμ μ 보λ₯Ό κ°μ§κ³ μμΌλ©°, μ»΄ν¨ν°λ μ΄λ₯Ό RGB(Red, Green, Blue) μΈ κ°μ§ μ«μλ‘ ννν©λλ€.

μλ₯Ό λ€μ΄, λΉ¨κ° 72, μ΄λ‘ 200, νλ 0μ΄λΌλ μΈ μ«μμ μ‘°ν©μ νΉμ ν λ Έλμμ λ§λ€μ΄λ λλ€. λΉμ μΈκ³μμλ λΉ¨κ°κ³Ό μ΄λ‘μ μμΌλ©΄ λ Έλμμ΄ λκ³ , μΈ κ°μ§λ₯Ό λͺ¨λ μ΅λλ‘ μμΌλ©΄ ν°μμ΄ λ©λλ€. μ΄ μ리λ₯Ό μ΄μ©νλ©΄ μΈ κ°μ μ«μλ§μΌλ‘ μΈμμ λͺ¨λ μμμ ννν μ μμ΅λλ€.

λμμμ μ΄ μ리μ νμ₯μ λλ€. μ μ§ μ΄λ―Έμ§(μ«μ λ©μ΄λ¦¬)λ₯Ό 1μ΄μ 30λ² λλ 60λ²μ© λΉ λ₯΄κ² λ°κΏμΉκΈ°νλ©΄ μμ§μ΄λ κ²μ²λΌ 보μ΄λ μ°©μκ° λ°μν©λλ€. κ²°κ΅ νλ©΄μ 보μ΄λ λͺ¨λ κ²(μΌκ΅΄, λ°°κ²½, μλ§)μ μλ°±λ§ κ°μ ν½μ λ‘ κ΅¬μ±λκ³ , κ° ν½μ μ RGB μ«μλ‘ μ΄λ£¨μ΄μ§λ©°, κ·Έ μ«μλ€μ κ°μ₯ λ°λ°λ₯μμ μλ§μ μ κΈ° μ νΈκ° μΌμ§κ³ κΊΌμ§λ μ΄μ§λ²μ μΆ€μ λΆκ³Όν©λλ€.
μκ³ λ¦¬μ¦: λ¬Έμ ν΄κ²°μ ν΅μ¬
μκ³ λ¦¬μ¦μ΄λ 무μμΈκ°
μκ³ λ¦¬μ¦(Algorithm)μ΄λΌλ λ¨μ΄λ κ±°μ°½νκ² λ€λ¦¬μ§λ§, λ³Έμ§μ μΌλ‘λ λ¬Έμ λ₯Ό ν΄κ²°νλ λ¨κ³λ³ μ§μΉ¨μ λλ€. μ λ ₯(input)μ λ°μμ μνλ μΆλ ₯(output)μ λ§λ€μ΄λ΄λ λ μνΌμ κ°μ΅λλ€.

μ νλ²νΈλΆμμ νΉμ μΈλ¬Όμ μ°Ύλ λ¬Έμ λ₯Ό μλ‘ λ€μ΄ λ΄ μλ€. μ λ ₯μ μ νλ²νΈλΆμ΄κ³ , μνλ μΆλ ₯μ βMike Smithμ μ νλ²νΈβ λλ βμ΄ μ± μ Mike Smithλ μλ€βλΌλ κ²°κ³Όμ λλ€.

첫 λ²μ§Έ μκ³ λ¦¬μ¦: μμ°¨ νμ
κ°μ₯ λ¨μν λ°©λ²μ 첫 νμ΄μ§λΆν° ν μ₯μ© λκΈ°λ κ²μ λλ€. Aλ‘ μμνλ νμ΄μ§, Bλ‘ μμνλ νμ΄μ§β¦ μ΄λ κ² λκΈ° μκ² λκΈ°λ©΄ Mike Smithκ° μ± μ μλ ν λ°λμ μ°ΎμλΌ μ μμ΅λλ€.
μ΄ μκ³ λ¦¬μ¦μ μ ν(correct)ν©λλ€. νμ§λ§ ν¨μ¨μ (efficient)μΌκΉμ?
μ ν μλλλ€.
1,000νμ΄μ§ μ± μ΄λΌλ©΄ μ΅μ μ κ²½μ° 1,000λ²μ λκ²¨μΌ ν©λλ€. μ± μ ν¬κΈ°μ λΉλ‘νμ¬ μκ°μ΄ μ νμΌλ‘ μ¦κ°νλ O(n)O(n)O(n) μκ³ λ¦¬μ¦μ λλ€.
λ μ₯μ© λκΈ°λ©΄ μ΄λ¨κΉμ? μλλ λ λ°° λΉ¨λΌμ§μ§λ§, μ°Ύλ μ΄λ¦μ΄ 건λλ΄ νμ΄μ§μ μμ μ μλ€λ μΉλͺ μ μΈ λ²κ·Έκ° μμ΅λλ€. 건λλ΄ νμ΄μ§λ₯Ό λ€μ νμΈνλ λ‘μ§μ μΆκ°ν΄λ μ¬μ ν O(n)O(n)O(n)μ μκ° λ³΅μ‘λλ₯Ό λ²μ΄λμ§ λͺ»ν©λλ€.
λ λ²μ§Έ μκ³ λ¦¬μ¦: μ΄μ§ νμ
μ°λ¦¬λ λ³Έλ₯μ μΌλ‘ λ λλν λ°©λ²μ μκ³ μμ΅λλ€. μ νλ²νΈλΆμ μ€κ°μ ν΄μ νμ¬ μμΉκ° μ°Ύλ μ΄λ¦λ³΄λ€ μμΈμ§ λ€μΈμ§ νμΈνκ³ , νμ μλ μ λ°μ λ²λ¦¬λ κ²μ λλ€.
μ€κ°μ ν΄μ Tλ‘ μμνλ νμ΄μ§κ° λμλ€λ©΄, Mike Smith(MμΌλ‘ μμ)λ μΌμͺ½μ μμ΅λλ€. μ€λ₯Έμͺ½ μ λ°μ μμ ν λ²λ¦΄ μ μμ΅λλ€. μ΄μ λ¨μ μ λ°μμ κ°μ κ³Όμ μ λ°λ³΅ν©λλ€. μ€κ°μ ν΄μ Jκ° λμλ€λ©΄ Mμ μ€λ₯Έμͺ½μ μμΌλ―λ‘ μΌμͺ½ μ λ°μ λ²λ¦½λλ€.
μ΄ κ³Όμ μ λ°λ³΅νλ©΄ κ²°κ΅ λ¨ ν μ₯μ μ’ μ΄λ§ λ¨κ² λκ³ , κ±°κΈ°μ Mike Smithκ° μμ΅λλ€.

μκ³ λ¦¬μ¦μ κ΅¬μ± μμ
μ΄ μ νλ²νΈλΆ νμ μκ³ λ¦¬μ¦μ λ€ κ°μ§ ν΅μ¬ μμλ‘ κ΅¬μ±λ©λλ€.
첫째, ν¨μ(Function)μ λλ€.
- βμ§μ΄λ€μ΄λΌβ, βνΌμ³λΌβμ κ°μ λμμ λνλ λλ€.

λμ§Έ, 쑰건문(Conditional)μ λλ€.
- βλ§μ½ Smithκ° νμ΄μ§μ μλ€λ©΄ μ νν΄λΌβ, βSmithκ° μΌμͺ½μ μλ€λ©΄β¦βκ³Ό κ°μ λΆκΈ° λ‘μ§μ λλ€.

μ μ§Έ, λΆλ¦¬μΈ(Boolean)μ λλ€.
- βSmithκ° μ¬κΈ° μλκ°?βλΌλ μ§λ¬Έμ μ(True) λλ μλμ€(False)λ‘ λ΅νλ μ°Έ/κ±°μ§ κ°μ λλ€.

λ·μ§Έ, 루ν(Loop)μ λλ€.
- β3λ²μ§Έ μ€λ‘ λμκ°λΌβμ²λΌ μ¬λμ μ°Ύμ λκΉμ§ κ³μν΄μ λ°λ³΅νλ ꡬ쑰μ λλ€.

μκ° λ³΅μ‘λμ κ·Ήμ μΈ μ°¨μ΄
λ μκ³ λ¦¬μ¦μ μ°¨μ΄λ₯Ό κ·Έλνλ‘ κ·Έλ €λ³΄λ©΄ λͺ νν΄μ§λλ€.
- μμ°¨ νμμ λ°μ΄ν°κ° λμ΄λλ©΄ μκ°λ λκ°μ΄ λμ΄λλ μ§μ (O(n)O(n)O(n))μ 그립λλ€.
- λ°λ©΄ μ΄μ§ νμμ λ°μ΄ν°κ° μ무리 λμ΄λλ μκ°μ κ±°μ λμ΄λμ§ μλ λ‘κ·Έ 곑μ (O(logβ‘n)O(\log n)O(logn))μ 그립λλ€.

μ΄ μ°¨μ΄λ₯Ό κ·Ήλ¨μ μΌλ‘ 보μ¬λλ¦¬κ² μ΅λλ€. μ νλ²νΈλΆμ 40μ΅ λͺ (μ μΈκ³ μΈκ΅¬ λλ Facebook/Google μ¬μ©μ μ)μ μ΄λ¦μ΄ μλ€κ³ κ°μ ν©μλ€. μμ°¨ νμμΌλ‘ Mike Smithλ₯Ό μ°ΎμΌλ €λ©΄ μ΅μ μ κ²½μ° 40μ΅ λ²μ λκ²¨μΌ ν©λλ€.

λ°λ©΄ μ΄μ§ νμμ μ¬μ©νλ©΄ 40μ΅μ λ°μΌλ‘ μ€μ΄κ³ , 20μ΅, 10μ΅, 5μ΅β¦ μ΄λ κ² κ³μ λ°μΌλ‘ μ€μ¬λκ°λ©΄ λ¨ ν λͺ μ΄ λ¨μ λκΉμ§ λ¨ 32λ²μ΄λ©΄ μΆ©λΆν©λλ€. logβ‘2(4Γ109)β32\log_2(4 \times 10^9) \approx 32log2β(4Γ109)β32μ΄κΈ° λλ¬Έμ λλ€.

40μ΅ λ² λ 32λ². μ΄κ²μ λ¨μν μλμ μ°¨μ΄κ° μλλλ€. μ°¨μμ΄ λ€λ₯Έ κ²μ λλ€. μ무리 λΉ λ₯Έ μνΌμ»΄ν¨ν°λ₯Ό κ°μ Έμλ λΉν¨μ¨μ μΈ μκ³ λ¦¬μ¦μ μ¬μ©νλ€λ©΄, ν¨μ¨μ μΈ μκ³ λ¦¬μ¦μ μ¬μ©νλ λ‘μ λ ΈνΈλΆμ μ λ μ΄κΈΈ μ μμ΅λλ€.
Scratchλ₯Ό ν΅ν νλ‘κ·Έλλ° ν΅μ¬ κ°λ νμ΅
Scratchμ κ΅μ‘μ κ°μΉ
CS50μμλ 본격μ μΈ ν μ€νΈ κΈ°λ° νλ‘κ·Έλλ° μΈμ΄(C, Python λ±)μ λ€μ΄κ°κΈ° μ μ MIT Media Labμμ κ°λ°ν μκ°μ νλ‘κ·Έλλ° μΈμ΄μΈ Scratchλ₯Ό λ¨Όμ λ€λ£Ήλλ€. Scratchλ₯Ό μ¬μ©νλ μ΄μ λ μ€κ΄νΈ, κ΄νΈ, μΈλ―Έμ½λ‘ κ°μ λ¬Έλ²μ μμμ μ κ²½ μ°μ§ μκ³ νλ‘κ·Έλλ°μ ν΅μ¬ κ°λ μ μ§μ€ν μ μκΈ° λλ¬Έμ λλ€.
Scratchμμλ νΌμ¦ μ‘°κ°μ²λΌ μκΈ΄ λΈλ‘λ€μ λλκ·Έ μ€ λλ‘μΌλ‘ μ°κ²°νμ¬ νλ‘κ·Έλ¨μ λ§λλλ€. μ΄ λΈλ‘λ€μ μμλ³λ‘ κΈ°λ₯μ΄ κ΅¬λΆλμ΄ μμ΄ μ§κ΄μ μΌλ‘ μ΄λ€ μ’ λ₯μ κΈ°λ₯μΈμ§ νμ ν μ μμ΅λλ€.
ν΅μ¬ νλ‘κ·Έλλ° κ°λ μ μκ°ν
Scratchλ₯Ό ν΅ν΄ λ°°μ°λ ν΅μ¬ κ°λ λ€μ λͺ¨λ νλ‘κ·Έλλ° μΈμ΄μμ λμΌνκ² μ μ©λ©λλ€.
ν¨μ(Function)λ νΉμ μμ μ μννλ λμμ λλ€. Scratchμ βsayβ λΈλ‘μ νλ©΄μ λ§νμ μ νμνλ ν¨μμ΄λ©°, μ΄ ν¨μλ μ λ ₯(argument)μ λ°μ λΆμ ν¨κ³Ό(side effect)λ₯Ό λ°μμν΅λλ€. λΆμ ν¨κ³Όλ νλ©΄μ 무μΈκ°κ° νμλκ±°λ μ€νΌμ»€μμ μλ¦¬κ° λλ κ²μ²λΌ μ¬μ©μκ° μΈμ§ν μ μλ κ²°κ³Όλ₯Ό μλ―Έν©λλ€.
λ³μ(Variable)λ κ°μ μ μ₯νλ 컨ν μ΄λμ λλ€. μνμμ xxx, yyy, zzzκ° μ«μλ₯Ό λ΄λ―μ΄, νλ‘κ·Έλλ°μμ λ³μλ μ«μλΏ μλλΌ ν μ€νΈ, μ¬μ©μ μ λ ₯ λ± λ€μν κ°μ μ μ₯ν μ μμ΅λλ€. Scratchμμ βaskβ λΈλ‘μ μ¬μ©νλ©΄ μ¬μ©μμ λ΅λ³μ΄ βanswerβλΌλ λ³μμ μλμΌλ‘ μ μ₯λ©λλ€.
λ°νκ°(Return Value)μ ν¨μκ° μ»΄ν¨ν°μκ² λλ €μ£Όλ κ°μ λλ€. λΆμ ν¨κ³Όμ λ¬λ¦¬ λ°νκ°μ μ¬μ©μ λμ 보μ΄μ§ μκ³ μ½λ λ΄λΆμμλ§ μ¬μ©λ©λλ€. μ΄ κ°μ λ€λ₯Έ ν¨μμ μ λ ₯μΌλ‘ μ λ¬νμ¬ λ 볡μ‘ν λμμ ꡬμ±ν μ μμ΅λλ€.
λ°λ³΅μ λ¬Έμ μ 루ν
κ³ μμ΄κ° μΈ λ² μΌμΉνκ² λ§λ€κ³ μΆλ€λ©΄, κ°μ₯ λ¨μν λ°©λ²μ βplay sound meowβ λΈλ‘μ μΈ λ² λ³΅μ¬νλ κ²μ λλ€. νμ§λ§ μ΄ λ°©μμ μ ν(correct)νμ§λ§ μ μ€κ³λμ§ μμ(poorly designed) μ½λμ λλ€.
μ λ¬Έμ μΌκΉμ? λ§μ½ μΌμΉ μ¬μ΄μ λκΈ° μκ°μ 1μ΄μμ 2μ΄λ‘ λ°κΎΈκ³ μΆλ€λ©΄, λͺ¨λ κ³³μμ μμ ν΄μΌ ν©λλ€. 6κ°μ λΈλ‘μ΄ μλλΌ 60κ°, 600κ°, 6000κ°λΌλ©΄ μ΄λκ°μμ λ°λμ μ€μκ° λ°μν©λλ€.
μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ κ²μ΄ λ°λ‘ 루ν(Loop)μ λλ€. βrepeat 3β λΈλ‘ μμ μΌμΉ λμμ λ£μΌλ©΄, ν κ³³μμλ§ νμλ λκΈ° μκ°μ μμ ν΄λ μ 체μ μ μ©λ©λλ€. μ½λλ₯Ό λͺ¨λν(modularize)νμ¬ κ³΅ν΅ κΈ°λ₯μ ν κ³³μ λͺ¨μΌλ©΄ μ μ§λ³΄μκ° ν¨μ¬ μ¬μμ§λλ€.
μΆμνμ μ¬μ©μ μ μ λΈλ‘
λ λμκ°, βmeowβλΌλ λμ μ체λ₯Ό νλμ λΈλ‘μΌλ‘ λ§λ€ μ μμ΅λλ€. Scratchμ βMake a Blockβ κΈ°λ₯μ μ¬μ©νλ©΄ MITκ° λ§λ€μ§ μμ μλ‘μ΄ νΌμ¦ μ‘°κ°μ μ§μ μ μν μ μμ΅λλ€.
βdefine meowβλΌλ λΈλ‘μ λ§λ€κ³ κ·Έ μμ μ리 μ¬μκ³Ό λκΈ° λμμ λ£μΌλ©΄, μ΄μ νλ‘κ·Έλ¨ μ΄λμλ βmeowβ λΈλ‘ νλλ§ μ¬μ©νλ©΄ λ©λλ€. ꡬν μΈλΆμ¬νμ μμΌμμ μ¬λΌμ§κ³ , μ°λ¦¬λ βκ³ μμ΄κ° μΌμΉνλ€βλ λμ μμ€μ κ°λ λ§ λ€λ£¨λ©΄ λ©λλ€.
μ¬κΈ°μ μΈμ(argument)λ₯Ό μΆκ°νλ©΄ λμ± κ°λ ₯ν΄μ§λλ€. βmeow n timesβλΌλ λΈλ‘μ λ§λ€λ©΄ μΌμΉ νμλ₯Ό λ§€κ°λ³μλ‘ λ°μ μνλ λ§νΌ λ°λ³΅ν μ μμ΅λλ€. μ΄κ²μ΄ λ°λ‘ μΆμν(Abstraction)μ ν΅μ¬μ λλ€. μ μμ€μ ꡬν μΈλΆμ¬νμ κ°μΆκ³ , κ³ μμ€μ κ°λ λ§μΌλ‘ νλ‘κ·Έλλ°ν μ μκ² ν΄μ€λλ€.
쑰건문과 μ΄λ²€νΈ κΈ°λ° νλ‘κ·Έλλ°
쑰건문(Conditional)μ νλ‘κ·Έλ¨μ΄ μν©μ λ°λΌ λ€λ₯΄κ² λμνλλ‘ ν©λλ€. βif touching mouse pointer, then play sound meowβλΌλ λ‘μ§μ λ§μ°μ€ 컀μκ° κ³ μμ΄ μμ μμ λλ§ μΌμΉ μ리λ₯Ό λ λλ€. λ§μΉ κ³ μμ΄λ₯Ό μ°λ€λ¬λ κ²κ³Ό κ°μ ν¨κ³Όμ λλ€.
νμ§λ§ μ΄ μ‘°κ±΄λ¬Έμ βforeverβ λΈλ‘ μμ΄ μ¬μ©νλ©΄ λ¬Έμ κ° μκΉ λλ€. νλ‘κ·Έλ¨μ λ무 λΉ¨λΌμ μ΄λ‘ κΉλ°μ ν΄λ¦ν μκ°μλ§ μ‘°κ±΄μ νμΈνκ³ μ¦μ μ’ λ£λ©λλ€. κ·Έ μκ° λ§μ°μ€κ° κ³ μμ΄ μμ μμλ€λ©΄ μ무 μΌλ μΌμ΄λμ§ μμ΅λλ€.
βforeverβ λΈλ‘μΌλ‘ κ°μΈλ©΄ νλ‘κ·Έλ¨μ μ§μμ μΌλ‘ 쑰건μ νμΈν©λλ€. μ¬μ©μκ° μΈμ κ³ μμ΄λ₯Ό μ°λ€λ¬λ κ·Έ μκ°μ κ°μ§ν μ μμ΅λλ€.
μ€μ νλ‘μ νΈ κ΅¬μΆ: Oscar Time κ²μ
Malan κ΅μλ μμ μ΄ μ½ 20λ μ μ λ§λ βOscar Timeβμ΄λΌλ κ²μμ μμλ‘ λ³΄μ¬μ€λλ€. νλμμ λ¨μ΄μ§λ μ°λ κΈ°λ₯Ό Oscarμ μ°λ κΈ°ν΅μΌλ‘ λλκ·Ένμ¬ μ μλ₯Ό μ»λ κ²μμ λλ€. 8~12μκ°μ΄ κ±Έλ¦° μ΄ νλ‘μ νΈλ 볡μ‘ν΄ λ³΄μ΄μ§λ§, μ€μ λ‘λ κΈ°λ³Έμ μΈ κ΅¬μ± μμλ€μ μ‘°ν©μ λλ€.
νλ‘μ νΈ λΆν΄ κ³Όμ :
- Oscar 0: κ°μ₯ λ¨μν λ²μ . μ½λ μμ΄ μ€νλΌμ΄νΈμ λ°°κ²½λ§ λ°°μΉ
- Oscar 1: Oscarμ 쑰건문 μΆκ°. λ§μ°μ€κ° λΏμΌλ©΄ λκ»μ΄ μ΄λ¦¬λ μ λλ©μ΄μ
- Oscar 2: μ°λ κΈ°μ λ³λ ¬ μ€ν¬λ¦½νΈ μΆκ°. λλκ·Έ κ°λ₯νκ² μ€μ νκ³ , λλ€ μμΉμμ λ¨μ΄μ§λ©°, Oscarμ λΏμΌλ©΄ λ€μ μλ‘ ν λ ν¬νΈ
- Oscar 3: κ³΅ν΅ μ½λλ₯Ό βgo to topβμ΄λΌλ μ¬μ©μ μ μ λΈλ‘μΌλ‘ μΆμΆνμ¬ μ€λ³΅ μ κ±°
- Oscar 4: score λ³μ μΆκ°. μ°λ κΈ°κ° Oscarμ λΏμ λλ§λ€ μ μ μ¦κ°
μ΄κ²μ΄ λ°λ‘ μ μ§μ κ°λ°(Incremental Development)μ λλ€. κ±°μ°½ν λͺ©νκ° μλλΌλ μμ λ¬Έμ λΆν° ν΄κ²°νκ³ , ν μ ν¬κΈ°λ‘ μ§μ μ μ΄λ£¨μ΄ μ΅μ’ μ루μ μ λλ¬ν©λλ€.
IVYβs Hardest Game: κ³ κΈ κ°λ μ μ©
CS50 μ λ°°κ° λ§λ βIVYβs Hardest Gameβμ λ 볡μ‘ν κ²μ λ©μ»€λμ 보μ¬μ€λλ€.
ν€λ³΄λ μ λ ₯ μ²λ¦¬: βlisten for keyboardβ ν¨μλ νμ΄ν ν€ μ λ ₯μ κ°μ§νκ³ μ€νλΌμ΄νΈμ μ’νλ₯Ό λ³κ²½ν©λλ€. μμͺ½ νμ΄νκ° λ리면 Yλ₯Ό 1 μ¦κ°μν€κ³ , μ€λ₯Έμͺ½ νμ΄νκ° λ리면 Xλ₯Ό 1 μ¦κ°μν΅λλ€.
λ²½ μΆ©λ μ²λ¦¬: βfeel for wallsβ ν¨μλ μ€νλΌμ΄νΈκ° λ²½μ λΏμλμ§ νμΈν©λλ€. μ€λ₯Έμͺ½ λ²½μ λΏμΌλ©΄ Xλ₯Ό -1λ§νΌ λ³κ²½νμ¬ ν겨 λμ€κ² ν©λλ€. μ΄λ―Έ λ²½ μμ μ΄μ§ μ¬λΌκ°κΈ° λλ¬Έμ ν ν½μ λ€λ‘ λ¬Όλ¬λλ κ²μ λλ€.
μμ¨ μ΄λ μ : Yale μ€νλΌμ΄νΈλ μΌμͺ½ λ²½μ΄λ μ€λ₯Έμͺ½ λ²½μ λΏμΌλ©΄ 180λ νμ νκ³ , κ·Έλ μ§ μμΌλ©΄ κ³μ ν κ±Έμμ© μ΄λν©λλ€. μ΄λ μλλ₯Ό 10 stepsλ‘ λμ΄λ©΄ κ²μμ΄ λ μ΄λ €μμ§λλ€.
μΆμ AI: MIT μ€νλΌμ΄νΈλ βpoint towards Harvardβμ βmove 1 stepβμ forever 루ν μμμ μ€νν©λλ€. νλ μ΄μ΄λ₯Ό κ³μ μΆμ νλ μ μ ꡬνν κ²μ λλ€. νμ§λ§ μ΄λ μλλ₯Ό 10μΌλ‘ λμ΄λ©΄ μκ°μ λ²κ·Έκ° λ°μν©λλ€. λ무 빨리 μ΄λνλ€ λ³΄λ νλ μ΄μ΄λ₯Ό μ§λμ³λ²λ¦¬κ³ , λ€μ λμμ€κ³ , λ μ§λμΉλ κ²μ λ°λ³΅νλ©° λλ λ λ κ²μ²λΌ 보μ λλ€.
μΆμνμ κ³μΈ΅: 0κ³Ό 1μμ AIκΉμ§
μ»΄ν¨ν°κ° μ΄ν΄νλ κ²μ μ€μ§ 0κ³Ό 1λΏμ λλ€. βHello Worldβλ₯Ό μΆλ ₯νλ νλ‘κ·Έλ¨μ‘°μ°¨ μ€μ λ‘λ νΉμ ν¨ν΄μ 0κ³Ό 1λ‘ μ΄λ£¨μ΄μ Έ μμ΅λλ€. Intel, AMD, NVIDIA κ°μ νμ¬λ€μ μ΄λ€ λΉνΈ ν¨ν΄μ΄ λ§μ μ μλ―Ένκ³ , μ΄λ€ ν¨ν΄μ΄ νλ©΄ μΆλ ₯μ μλ―Ένλμ§ κ²°μ ν©λλ€.
μ΄μ°½κΈ° νλ‘κ·Έλλ¨Έλ€μ νμΉ μΉ΄λλ‘ μ΄ λΉνΈ ν¨ν΄μ μ§μ μμ±νμ΅λλ€. νμ§λ§ μ΄κ²μ λ무 μ§λ£¨νκΈ° λλ¬Έμ λκ΅°κ°κ° μ»΄νμΌλ¬(Compiler)λ₯Ό λ°λͺ νμ΅λλ€. μ»΄νμΌλ¬λ ν μΈμ΄λ₯Ό λ€λ₯Έ μΈμ΄λ‘ λ²μνλ νλ‘κ·Έλ¨μ λλ€.
C μΈμ΄λ‘ μμ±λ μ½λλ μ»΄νμΌλ¬μ μν΄ κΈ°κ³μ΄(0κ³Ό 1)λ‘ λ³νλ©λλ€. Python μ½λλ (λ¨μννλ©΄) Cλ‘ λ³νλκ³ , λ€μ κΈ°κ³μ΄λ‘ λ³νλ©λλ€. κ·Έλ¦¬κ³ OpenAIμ API μμμ μ°λ¦¬λ λ¨ 10μ€μ μ½λλ‘ μ±λ΄μ λ§λ€ μ μμ΅λλ€.
μ΄κ²μ΄ μΆμνμ νμ λλ€. κ³Όκ±°μ μ΄λ €μ΄ λ¬Έμ λ€μ λκ΅°κ°κ° μ΄λ―Έ ν΄κ²°ν΄ λμκ³ , κ·Έ μμ λ μ¬μ΄ λꡬλ₯Ό λ§λ€μκ³ , μ°λ¦¬λ κ·Έ λꡬλ€μ μ‘°ν©νμ¬ λ 볡μ‘ν κ²μ λ§λλλ€. Scratchμ βsayβ λΈλ‘μ΄ μ΄λ»κ² ꡬνλμλμ§, OpenAIμ GPTκ° λ΄λΆμ μΌλ‘ μ΄λ»κ² μλνλμ§ μ νμ μμ΄ μ°λ¦¬λ κ·Έκ²λ€μ μ¬μ©ν μ μμ΅λλ€.
κ²°λ‘ : μ»΄ν¨ν° κ³Όνμ λ³Έμ§
μ»΄ν¨ν° κ³Όνμ λ³Έμ§μ μ»΄ν¨ν μ¬κ³ (Computational Thinking)μ λλ€. μ΄λ μ»΄ν¨ν° κ³Όνμμ μ»μ ν΅μ°°λ ₯μ νμ€ μΈκ³μ λ¬Έμ ν΄κ²°μ μ μ©νλ μ¬κ³ λ°©μμ λλ€. νλ‘κ·Έλλ°μ κ·Έ κ³Όμ μμ μ¬μ©νλ λκ΅¬μΌ λΏμ λλ€.
AI μλμλ μ»΄ν¨ν° κ³Όν κ΅μ‘μ΄ μ€μν μ΄μ λ λͺ νν©λλ€. AIλ κ°λ ₯ν λꡬμ΄μ§λ§, κ·Έ λꡬλ₯Ό ν¨κ³Όμ μΌλ‘ νμ©νλ €λ©΄ κΈ°λ³Έ μ리λ₯Ό μ΄ν΄ν΄μΌ ν©λλ€. λ°μ΄ν°κ° μ΄λ»κ² ννλλμ§, μκ³ λ¦¬μ¦μ΄ μ΄λ»κ² μλνλμ§, μ μ΄λ€ λ°©λ²μ΄ λ€λ₯Έ λ°©λ²λ³΄λ€ ν¨μ¨μ μΈμ§λ₯Ό μ΄ν΄ν΄μΌ AIλΌλ μ‘°μλ₯Ό μ λλ‘ νμ©ν μ μμ΅λλ€.
μ°λ¦¬λ μμ€ν μ λλ €λ€λλ μΉκ°μ΄ μλλΌ, μμ€ν μ μμ ν μ₯μ ν μ€κ³μκ° λμ΄μΌ ν©λλ€. κ·Έκ²μ΄ λ°λ‘ μ½λ©μ νκΈ° μ μ μκ³ λ¦¬μ¦μ λ°°μμΌ νλ μ΄μ μ΄μ, μ»΄ν¨ν° κ³Όνμ μ§μ ν κ°μΉμ λλ€.
CS50 μ λͺ ν κ°μλΌλ κ²μ μμ λΆν° μκ³ μμλλ°, μ λ§ μ½κ² μ μ€λͺ ν΄μ£Όμλκ±° κ°λ€μ :)
λ³Έ κ°μλ CS50μ Introduction Sectionμ μνλ λ΄μ©μ λλ€. (CS50x 2026 - Lecture 0 - Scratch) μ΄μ΄μ§λ μ리μ¦λ‘ CS50 μ½μ€ μ 체 νλ² μμ±ν΄λ³΄λλ‘ νκ² μ΅λλ€!
μ½μ΄μ£Όμ μ κ°μ¬ν©λλ€ πΎ