CoWithMe

CS 이해하는 데 도움이 되도록 핵심 개념

이영훈닷컴 2024. 7. 29. 09:19
728x90

파이썬 자료형
파이썬에서는 다양한 자료형이 있습니다. 자료형은 데이터를 저장하는 형식을 정의합니다.

  • 정수 (Integer): 예를 들어 1, -42, 100.
  • 실수 (Float): 예를 들어 3.14, -0.001, 2.0.
  • 논리형 (Boolean): 두 가지 값 True 또는 False.
  • 문자열 (String): 문자들로 이루어진 데이터. 예: "Hello, World!".
  • 리스트 (List): 여러 값을 순서대로 저장. 예: [1, 2, 3], ['a', 'b', 'c'].
  • 튜플 (Tuple): 리스트와 비슷하지만 변경할 수 없는 자료형. 예: (1, 2, 3), ('a', 'b', 'c').
  • 딕셔너리 (Dictionary): 키와 값의 쌍으로 데이터를 저장. 예: {'name': 'Alice', 'age': 25}.
  • 세트 (Set): 중복을 허용하지 않는 데이터 집합. 예: {1, 2, 3}, {'a', 'b'}.

자료구조
자료구조는 데이터를 저장하고 관리하는 방법을 정의합니다.

선형 구조

  • 배열 (Array): 연속된 메모리 공간에 데이터를 저장합니다.\\
  • 리스트 (List): 데이터가 순서대로 연결된 구조입니다. 파이썬의 list는 동적 배열입니다.
  • 스택 (Stack): 후입선출(LIFO) 방식으로 데이터를 처리합니다. 예: 웹 브라우저의 히스토리.
  • 큐 (Queue): 선입선출(FIFO) 방식으로 데이터를 처리합니다. 예: 프린터 작업 대기열.

비선형 구조

  • 그래프 (Graph): 노드와 엣지로 데이터를 표현합니다. 예: 소셜 네트워크, 도로 지도.
  • 트리 (Tree): 계층적 구조를 가지며 사이클이 없습니다. 예: 파일 시스템, 조직도.
  • 이진 트리 (Binary Tree): 각 노드가 최대 2개의 자식 노드를 가지는 트리입니다.
  • 포화 이진 트리 (Full Binary Tree): 모든 노드가 2개의 자식 노드를 가진 트리입니다.
  • 완전 이진 트리 (Complete Binary Tree): 마지막 레벨을 제외하고 모든 레벨이 채워진 트리입니다.
  • 편향 이진 트리 (Skewed Binary Tree): 한쪽으로만 자식이 있는 트리입니다.


프로그래밍 기본

  • 컴파일러: 소스코드를 기계어로 번역하여 실행합니다. 예: C, C++.
  • 인터프리터: 소스코드를 한 줄씩 번역하고 실행합니다. 예: Python, JavaScript.

파이썬의 실행 과정

  • 소스코드 작성: .py 파일.
  • 바이트코드로 변환: .pyc 파일.
  • 바이트코드를 실행: Python Virtual Machine(PVM)이 바이트코드를 해석하여 기계어로 실행합니다.

메모리 영역

  • 코드 영역: 실행할 명령어들이 저장됩니다.
  • 데이터 영역: 전역 변수와 static 변수들이 저장됩니다.
  • 힙 (Heap): 동적 메모리 할당이 이루어지는 곳. 예: 객체 생성.
  • 스택 (Stack): 함수 호출과 지역 변수가 저장됩니다. 재귀 함수 호출 시 사용됩니다.

객체지향 프로그래밍 (OOP)

  • 객체 (Object): 현실 세계의 대상을 추상화하여 표현한 것. 예: 학생, 자동차.
  • 클래스 (Class): 객체를 생성하기 위한 설계도. 예: class Dog: def bark(self): ....
  • 상속 (Inheritance): 부모 클래스의 기능을 자식 클래스가 물려받습니다. 예: class Labrador(Dog): ....
  • 오버라이딩 (Overriding): 부모 클래스의 메서드를 자식 클래스에서 재정의합니다.
  • 오버로딩 (Overloading): 같은 이름의 메서드나 연산자를 다양한 방식으로 정의하는 것. 파이썬은 함수 오버로딩을 지원하지 않지만 기본적으로 하나의 함수 정의로 구현할 수 있습니다.

소프트웨어 개발 방법론

  • 폭포수 방법론 (Waterfall Model): 단계별로 진행하는 전통적인 방법론. 순차적 진행이 특징입니다.
  • 애자일 방법론 (Agile Model): 반복적이고 점진적으로 개발합니다. 유연성과 피드백 반영이 중요합니다.

디자인 패턴

  • 디자인 패턴: 소프트웨어 설계 시 공통적인 문제를 해결하기 위한 구조적 접근법입니다.
  • MTV 패턴: Django 프레임워크에서 사용됩니다.
  • M (Model): 데이터베이스와 상호작용합니다.
  • T (Template): 사용자에게 보여지는 UI를 정의합니다.
  • V (View): 요청에 따라 로직을 처리합니다.
  • MVC 패턴: MTV와 유사하며, M (Model), V (View), C (Controller)로 구성됩니다.

형상관리

  • 형상관리: 소프트웨어의 변경 사항을 추적하고 통제하는 작업입니다.
  • Git: 분산 버전 관리 시스템입니다. GitHub와 GitLab이 대표적입니다.
  • Gerrit: 코드 리뷰를 지원하는 툴입니다.
  • SourceTree: Git의 UI를 제공하여 작업을 편리하게 합니다.
  • Jira: 협업과 작업 관리 도구입니다.

V&V (Verification & Validation)

  • Verification (검증): 소프트웨어가 요구사항에 맞게 구현되었는지 확인하는 작업입니다.
  • Validation (확인): 소프트웨어가 사용자 요구를 만족하는지 확인하는 작업입니다.

테스트 종류

  • 단위 테스트 (Unit Test): 가장 작은 단위의 기능을 테스트합니다.
  • 통합 테스트 (Integration Test): 여러 기능이 함께 잘 동작하는지 테스트합니다.
  • 시스템 테스트 (System Test): 전체 시스템에서 테스트를 수행합니다.
  • 인수 테스트 (Acceptance Test): 최종 사용자가 요구사항에 맞는지 확인합니다.
  • 정적 테스트 (Static Test): 코드 분석 등을 통해 소프트웨어를 테스트합니다.
  • 동적 테스트 (Dynamic Test): 소프트웨어를 실행하여 테스트합니다.

월요일 병 생겼어요.

728x90