Programming
Programming¶
๋จ์ผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ด์ํ๋ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ๋ณธ ๊ฐ๋ , ์๋ฆฌ, ๋ฐฉ๋ฒ๋ก ์ ๋ํ ํฌ๊ด์ ์ธ ๊ฐ์ด๋์ ๋๋ค. ์ด ํ ํฝ์ ๊ณ์ฐ์ ์ฌ๊ณ ์ ํจ๋ฌ๋ค์๋ถํฐ ํด๋ฆฐ ์ฝ๋ ์ค์ฒ๋ฒ, ํ ์คํ ์ ๋ต, ๋์์ฑ ํจํด, ์ํํธ์จ์ด ์ํคํ ์ฒ์ ์ด๋ฅด๊ธฐ๊น์ง ๊ท ํ ์กํ ์ํํธ์จ์ด ๊ฐ๋ฐ์๊ฐ ๋๊ธฐ ์ํ ํ์ ์ง์์ ๋ค๋ฃน๋๋ค.
ํ์ต ๋ด์ฉ¶
์ด ํ ํฝ์ ์ธ์ด ๋ ๋ฆฝ์ ์ธ ๋ค์ ๋ด์ฉ์ ์ ๊ณตํฉ๋๋ค: - ํต์ฌ ๊ฐ๋ : ๊ณ์ฐ์ ์ฌ๊ณ (Computational thinking), ์ถ์ํ(Abstraction), ์๊ณ ๋ฆฌ์ฆ, ์๋ฃ๊ตฌ์กฐ - ํจ๋ฌ๋ค์: ๋ช ๋ นํ(Imperative), ๊ฐ์ฒด์งํฅ(Object-oriented), ํจ์ํ(Functional), ์ ์ธํ(Declarative) ํ๋ก๊ทธ๋๋ฐ ์ ๊ทผ๋ฒ - ์ฝ๋ ํ์ง: ํด๋ฆฐ ์ฝ๋ ์์น, ๋์์ธ ํจํด, SOLID ์์น, ๋ฆฌํฉํ ๋ง - ์ ๋ฌธ์ ์ค์ฒ๋ฒ: ํ ์คํ , ๋๋ฒ๊น , ์ฑ๋ฅ ์ต์ ํ, API ์ค๊ณ, ๋ฒ์ ๊ด๋ฆฌ ์ํฌํ๋ก์ฐ - ์ํํธ์จ์ด ์ํคํ ์ฒ: ๋ชจ๋๋ฆฌ์ค, ๋ง์ดํฌ๋ก์๋น์ค, ๊ณ์ธตํ ์ํคํ ์ฒ, ์ํคํ ์ฒ ํจํด - ์ค๋ฆฌ์ ์ปค๋ฆฌ์ด: ๊ฐ๋ฐ์ ์ค์ฒ๋ฒ, ์คํ ์์ค, ์ํํธ์จ์ด ์ค๋ฆฌ, ์ง์์ ํ์ต
๋ ์จ ๋ชฉ๋ก¶
| # | ์ ๋ชฉ | ์ค๋ช |
|---|---|---|
| 01 | What Is Programming | ๊ณ์ฐ์ ์ฌ๊ณ , ์ถ์ํ, ๋ฌธ์ ํด๊ฒฐ, ์๊ณ ๋ฆฌ์ฆ |
| 02 | Programming Paradigms | ๋ช ๋ นํ, OOP, ํจ์ํ, ์ ์ธํ ์ ๊ทผ๋ฒ |
| 03 | Data Structures Fundamentals | ๋ฐฐ์ด, ๋ฆฌ์คํธ, ์คํ, ํ, ํธ๋ฆฌ, ๊ทธ๋ํ, ํด์ ํ ์ด๋ธ |
| 04 | Algorithms Fundamentals | ๋ณต์ก๋ ๋ถ์, ๊ฒ์, ์ ๋ ฌ, ์ฌ๊ท |
| 05 | Clean Code Principles | ๋ค์ด๋ฐ, ํจ์, ์ฃผ์, ํฌ๋งทํ , ์๋ฌ ์ฒ๋ฆฌ |
| 06 | Design Patterns | ์์ฑ, ๊ตฌ์กฐ, ํ์ ํจํด; Gang of Four |
| 07 | SOLID Principles | ๋จ์ผ ์ฑ ์, ๊ฐ๋ฐฉ-ํ์, ๋ฆฌ์ค์ฝํ ์นํ, ์ธํฐํ์ด์ค ๋ถ๋ฆฌ, ์์กด์ฑ ์ญ์ |
| 08 | Testing Fundamentals | ๋จ์, ํตํฉ, E2E ํ ์คํ ; TDD, BDD; ํ ์คํธ ๋๋ธ |
| 09 | Debugging Techniques | ๋๋ฒ๊น ์ ๋ต, ๋๊ตฌ, ๋ก๊น , ํ๋กํ์ผ๋ง |
| 10 | Refactoring | ์ฝ๋ ์ค๋ฉ, ๋ฆฌํฉํ ๋ง ๊ธฐ๋ฒ, ์ธ์ ์ด๋ป๊ฒ ๋ฆฌํฉํ ๋งํ ์ง |
| 11 | Concurrency and Parallelism | ์ค๋ ๋, ํ๋ก์ธ์ค, ๋น๋๊ธฐ, ๊ฒฝ์ ์กฐ๊ฑด, ๋๊ธฐํ |
| 12 | Performance Optimization | ํ๋กํ์ผ๋ง, ์๊ณ ๋ฆฌ์ฆ ์ต์ ํ, ์บ์ฑ, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ |
| 13 | API Design | REST, RPC, GraphQL; ๋ฒ์ ๊ด๋ฆฌ, ๋ฌธ์ํ, ๋ชจ๋ฒ ์ฌ๋ก |
| 14 | Version Control Workflows | Git ์ํฌํ๋ก์ฐ, ๋ธ๋์นญ ์ ๋ต, ์ฝ๋ ๋ฆฌ๋ทฐ, CI/CD |
| 15 | Software Architecture | ๋ชจ๋๋ฆฌ์ค, ๋ง์ดํฌ๋ก์๋น์ค, ๊ณ์ธตํ/์ก๊ฐํ/ํด๋ฆฐ ์ํคํ ์ฒ |
| 16 | Developer Practices | ๊ธฐ์ ๋ถ์ฑ, ๋ฌธ์ํ, ์คํ ์์ค, ์ค๋ฆฌ, ์ปค๋ฆฌ์ด ์ฑ์ฅ |
์ ์ ์ง์¶
- ๊ธฐ๋ณธ ํ๋ก๊ทธ๋๋ฐ ์ง์: ์ต์ ํ๋์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ ์๋ จ๋ (Python, JavaScript, Java, C++ ๋๋ ์ ์ฌ ์ธ์ด)
- ๊ธฐ๋ณธ ๋ฌธ๋ฒ ์ดํด: ๋ณ์, ์ ์ด ํ๋ฆ, ํจ์, ๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ
- ๋ฌธ์ ํด๊ฒฐ ์ฌ๊ณ ๋ฐฉ์: ์ฝ๋์ ์ค๊ณ์ ๋ํด ๋นํ์ ์ผ๋ก ์๊ฐํ๋ ค๋ ์์ง
ํน์ ์ธ์ด ์ ๋ฌธ์ฑ์ ํ์ํ์ง ์์ต๋๋ค. ์์ ๋ ์ธ์ด ๋ ๋ฆฝ์ ์ธ ๊ฐ๋ ์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ์ฌ๋ฌ ์ธ์ด๋ก ์ ๊ณต๋ฉ๋๋ค.
์์ ์ฝ๋¶
์ฌ๋ฌ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ฑธ์น ๊ฐ๋
์ ๋ณด์ฌ์ฃผ๋ ์ค์ฉ์ ์ธ ์์ ๋ examples/Programming/์์ ํ์ธํ ์ ์์ต๋๋ค. ์ด ์์ ๋ค์ ๊ธฐ๋ณธ ํ๋ก๊ทธ๋๋ฐ ์์น์ด ํน์ ์ธ์ด๋ฅผ ์ด์ํ๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค.
ํ์ต ๊ฒฝ๋ก¶
์ด ํ ํฝ์ ์ ์ง์ ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค:
- ๊ธฐ์ด (๋ ์จ 1-4): ํต์ฌ ๊ฐ๋ , ํจ๋ฌ๋ค์, ์๋ฃ๊ตฌ์กฐ, ์๊ณ ๋ฆฌ์ฆ
- ์ฝ๋ ํ์ง (๋ ์จ 5-7): ํด๋ฆฐ ์ฝ๋, ๋์์ธ ํจํด, SOLID ์์น
- ๊ฐ๋ฐ ์ค์ฒ๋ฒ (๋ ์จ 8-10): ํ ์คํ , ๋๋ฒ๊น , ๋ฆฌํฉํ ๋ง
- ๊ณ ๊ธ ์ฃผ์ (๋ ์จ 11-12): ๋์์ฑ๊ณผ ์ฑ๋ฅ ์ต์ ํ
- ์ ๋ฌธ๊ฐ ๊ธฐ์ (๋ ์จ 13-16): API ์ค๊ณ, ๋ฒ์ ๊ด๋ฆฌ, ์ํคํ ์ฒ, ์ค๋ฆฌ
๋ ์จ์ ์์ฐจ์ ์ผ๋ก ๋ฐ๋ผ๊ฐ๊ฑฐ๋ ํ์์ ๋ฐ๋ผ ํน์ ์ฃผ์ ๋ก ๋ฐ๋ก ์ด๋ํ ์ ์์ต๋๋ค.
์ถ์ฒ ์๋ฃ¶
- ๋์: "Clean Code" (Martin), "Design Patterns" (Gang of Four), "The Pragmatic Programmer" (Hunt & Thomas)
- ์ค์ต: LeetCode, HackerRank, Project Euler์์ ์๊ณ ๋ฆฌ์ฆ ์ค์ต
- ์ปค๋ฎค๋ํฐ: Stack Overflow, Reddit r/programming, GitHub discussions
๊ด๋ จ ํ ํฝ¶
- ์ธ์ด๋ณ ํ ํฝ: Python, C_Programming, CPP (C++)
- ๊ณ ๊ธ ํ ํฝ: Algorithm, Machine_Learning, System_Design
- ๋๊ตฌ: Git, Docker, Linux
๋ผ์ด์ ์ค: ์ฝํ ์ธ ๋ CC BY-NC 4.0 ๋ผ์ด์ ์ค๋ก ์ ๊ณต๋ฉ๋๋ค