본문 바로가기
방법론

[방법론] 프로그래밍 공부법

by cogito21_python 2024. 5. 12.
반응형
 Index
 1. 프로그래밍 언어 학습법
 2. 자료구조/알고리즘 학습법
 3. 프레임워크 학습법
 4. 프로젝트 진행법
 5. 프로그래밍 공부법

1. 프로그래밍 언어 학습법

프로그래밍 언어 학습법

기본언어

- C 언어: 컴퓨터 언어의 근본적인 원리에 대해서 이해하고 싶은 경우, 필수적으로 학습하는 것을 추천

- C++: 컴퓨터 언어의 근본적인 원리에 대해서 이해하고 싶은 경우, 필수적으로 학습하는 것을 추천

- Python: 데이터 분석 및 인공지능 개발에 관심이 있는 경우, 빠르게 결과물을 제작하여 보고 싶은 경우

- Java: 웹 개발에 있어 Backend부분을 담당하고 싶은 경우, 컴퓨터 공학에 관심이 있고 보이지 않는 서버 개발에 관심이 있는 경우

- Javascript: 웹 개발에 있어 Frontend부분을 담당하고 싶은 경우, UI/UX에 관심이 있고 결과물을 시각적으로 보는 것을 선호하는 경우

- Kotlin: 안드로이드 앱 개발에 관심이 있는 경우

- Swift: IOS 앱 개발에 관심이 있는 경우

- C#: 게임 서버 개발에 관심이 있는 경우, VR/AR 개발에 관심이 있는 경우

 

1. 기본 언어 선택

- 시간이 없다면 Python을 선택하여 빠르게 학습하는 것을 추천

- 시간적인 여유가 있다면 분야별로 많이 사용되는 언어 선택

    - 게임 개발: C/C++(Unreal Engine), C#(Unity)

    - 모바일 개발: Kotlin(Android), Swift(IOS)

    - 웹 프론트 개발: Javascript(React.js)

    - 웹 백엔드 개발: Java(Spring), Python(Django), C#(ASP.NET), Javascript(Node.js/Express.js)

    - 임베디드 개발: C/C++

    - 인공지능 개발: Python(Tensorflow/PyTorch)

    - 데이터 분석: Python(Scikit-Learn)

 

2. 언어 선택후 기본 개념 학습

- 언어의 특징 및 환경 설정

- 변수: 변수 선언, 자료형(크기), 형변환, 자료형 확인, primitive 자료구조

- 연산자: 산술, 조건, 논리, 비트

- 제어문: 조건문, 반복문

- 함수: 함수 정의, 함수 사용, 인자, 가변인자, 매개변수, 반환값, 데코레이터, 제너레이터, 이터레이터

- 포인터: 포인터, 주소 참조, 값 참조, 레퍼런스 참조, 함수 포인터

- 구조체

- 동적 할당

- 클래스: 클래스 정의, 속성, 메서드, 상속, 추상클래스, 인터페이스, 메타 클래스, 내부 클래스

- 예외처리: 에러 클래스, 에러 발생

- 입출력: 버퍼와 입출력

- 파일 입출력: 바이너리파일, 텍스트 파일

- 자료구조: 리스트, 튜플, 맵(해시), 집합(셋)

- 표준 라이브러리

 

3. 기본 개념 학습 후 간단한 예제 작성해보기

- 메모장 개발

- 전화번호부 개발 

- 간단한 게임 개발

- 라이브러리 재현 해보기

 

2. 자료구조/알고리즘 학습법

자료구조/알고리즘 학습법

1. 자료구조 학습

선형 자료구조

- 배열: 동일한 자료형의 묶음. 연속된 메모리 사용

- 링크드 리스트: 다양한 자료형 사용 가능. 분산된 메모리 사용

- 스택: FILO(LIFO) 구조, top과 botton으로 구성

- 큐: FIFO(LILO) 구조, front와 rear로 구성

- 덱: 스택+큐 구조, 양방향 모두 입출력 가능

비선형 자료구조

- 트리

- 그래프

- 힙

 

2. 자료구조 구현

- 프로그래밍 언어를 이용하여 자료구조를 구현해보기

 

3. 알고리즘 학습

- 탐욕법

- Brute Force

- 동적 계획법

- 재귀

- 정렬: 선택 정렬, 버블 정렬, 삽입 정렬, 퀵 정렬, 병합 정렬, 힙 정렬, 계수 정렬, 기수 정렬

- 백트래킹

- 비트 마스크

- 순열과 조합, 유클리드 호제법(최대공약수, 최소공배수)

- 탐색: 순차 탐색, 이진 탐색, DFS, BFS

- 최단 경로 탐색: Dijkstra, Flood-Warshall, Bellman-Ford

- 위상 정렬

- 최소 신장 트리: Kruskal, Prim

- 투포인터

- 최소 공통 조상(LCA)

- 최장 증가 수열(LIS)

 

4. 알고리즘 유형별 문제 풀어보기

- 백준 온라인 저지 / 프로그래머스를 사용하여 유형별 문제 풀이

- 문제풀이후 시간복잡도, 공간 복잡도 확인하기

- 자주 사용되는 라이브러리는 암기

 

3.  프레임워크 학습법

프레임워크 학습법

1. 프레임워크 선택

- 프로젝트 진행에 있어 프레임워크 선택시 각각의 특징을 파악하고 장단점을 분석하기

- 프레임워크 선택 기준: 생산성(러닝커브), 호환성, 프로그래밍 언어에 따른 선택

- 버전 및 환경 설정은 프레임워크 선정후 고정하기(버전에 따른 변화가 존재)

 

2. 프레임워크 전반적인 구조 파악하기

- 전반적인 프레임워크 구조 및 자주 사용되는 기능 파악하기

- 튜토리얼 페이지를 보고 빠르게 따라하기

- 필요시 교재를 구매하는 것을 추천

    - 초보자라면 어떠한 교재라도 구매하여 보는 것을 추천

    - 어느정도 개발에 익숙하다면 코드 위주보다 개념과 기능 위주로 설명한 교재 추천

 

3. 프로젝트를 진행하면서 세부적인 부분 숙달하기

- 처음이라면 검색을 통해 확인하면서 학습

- 숙달이 되었다면 공식 문서와 코드만을 가지고 개발하는 연습

- 디버깅 하는 연습

 

4. 전반적인 구조를 설명할 수 있도록 기록으로 남겨보기

 

4. 프로젝트 진행법

프로젝트 진행법

개인

1. 만들고 싶은 서비스 선정

2. 유사한 서비스 탐색

3. 해당 서비스 분석

4. 서비스에 맞는 언어 및 프레임워크 선정

5. 프레임워크 튜토리얼을 따라하면서 학습

6. 빠르게 프로젝트 뼈대 구성하기

7. 세부적인 부분을 구현하기

8. 기능별로 구현을 했다면 리팩토링 및 테스트코드로 검사하기

9. 기능별 구현이 모두 완료 됬다면 통합하여 배포하기

 

단체

1. 만들고 싶은 프로젝트 주제 선정

2. 선정된 주제를 기준으로 구현해햐하는 기능 및 전체 조감도 작성

3. 타임라인을 세우고 소통 방식 정하기

    - 노션으로 보고서 작성 및 진행상황 공유

    - 깃허브로 코드 공유하기

    - 디스코드로 매주 소통하기

4. 프로젝트 진행을 위한 역할 나누기

5. 프로젝트 진행

6. 매주 진행사항 공유 및 서로 의견 교환

7. 프로젝트 완성후 배포를 통한 피드백 받기

 

5. 프로그래밍 공부법

프로그래밍 공부법

1. 공식문서를 읽어보기

- 공식문서에 어떤 단어로 어떻게 정의를 내리고 있는지 확인

- 공식문서를 모두 읽는 것이 아닌 필요한 부분만 읽을 것

- 공식문서의 튜토리얼을 보면서 기능을 구현해보기

 

2. 질문하는 습관 가지기

- 초보자인 경우 무엇을 모르는지 모르는 경우가 있기 때문에 일단 강의나 교재를 구매하여 따라해볼 것

- 그 이후 스스로 문제를 정의하고 어떻게 해야 해결을 할 수 있는지 고민해보기

- "질문이 정확하면, 답을 구하는 능력도 정확해진다"

- 누구나 모르는 부분은 있기 때문에 질문을 겁내지 말기 -> 질문한다고 핀잔을 준다면 애당초 알려줄 생각이 없거나 설명할 정도로 아는 것이 아닐 가능성이 큼

 

3. 본인만의 서비스 제작하기

- 서비스 제작을 위한 이론적인 학습과 개발을 위한 코딩 능력을 모두 향상 시키는 방법

- 필요한 부분을 찾아 학습하고 구현해보기

 

4. 스터디를 통한 학습

- 어느정도 기본기가 갖추어졌다는 가정하에 스터디를 추천

- 아무것도 모르거나 수준이 비슷하지 않은 사람들이 모여 스터디를 하는 경우 도움이 되지 않음

- 스터디 진행시 목표를 명확하게 정하고 세부적으로 계획을 잘 세워서 진행. 세미나 형식을 추천

 

5. 오픈소스를 보면서 학습

- 오픈소스를 통해 코드를 파악하는 연습

- 폴더명와 파일명을 통해 오픈소스 구조 파악하기

- 변수와 클래스, 함수명을 통해 기능 파악하기

- 코드를 한줄씩 보지 말고 전체적인 기능을 파악할 것

- 분석하면서 문서화해보기


참고자료

온라인 강의

- boostcourse : 네이버커넥트 재단에서 만든 무료 온라인 강의 사이트

- 홍정모 연구소 : C++, DirectX 및 그래픽스 관련 강의

- 드림코딩 아카데미 : Javascript 및 Typescript를 통한 프론트엔드, 백엔드 개발 강의

- 인프런 : 여러가지 온라인 강의 모음 사이트. 강의평가는 호불호가 갈림

- 패스트캠퍼스 : 여러가지 온라인 강의 모음 사이트. 강의평에 대해서는 호불호가 갈림

 

반응형

'방법론' 카테고리의 다른 글

[방법론] 인공지능 논문 읽기  (0) 2024.05.31
[방법론] SW 취업  (0) 2024.05.19
[방법론] 수학 및 공학 학습법  (0) 2024.05.12
[방법론] 코드 분석 방법  (0) 2024.05.12
[방법론] 면접 - 개발자 면접  (1) 2024.05.11