upstage ai lab

Upstage AI Lab 6기 컴퓨터 공학 개론

essay0263 2024. 12. 8. 16:25

이번 주 Upstage AI Lab 6기에서는 컴퓨터 공학의 기본 개념과 자료구조 및 알고리즘에 관련된 내용을 학습했다. 

1. 컴퓨터 공학이란?

1-1. 정의 및 범위

컴퓨터 공학(CSE)은 계산, 자동화, 정보 처리를 포함한 컴퓨터 관련 기술을 연구하는 학문이다. 알고리즘, 계산 이론, 소프트웨어 설계와 구현, 하드웨어 설계 등 다양한 영역을 포괄한다.

1-2. 주요 학습 분야

  • 프로그래밍 언어 기초(C, Java, Python 등)
  • 자료구조와 알고리즘 → 효율적 문제 해결의 기본
  • 컴퓨터 아키텍처 → 하드웨어 및 시스템 구조 이해
  • 운영체제 → Windows, Linux 등 시스템 관리 원리
  • 컴퓨터 네트워크 → 인터넷 및 데이터 통신 이해
  • 데이터베이스 → 데이터 관리 및 활용
  • 소프트웨어 공학 → 소프트웨어 설계 및 개발 방법론

1-3. 선택 학습 분야

임베디드 시스템, 분산 시스템, 머신러닝, 암호학, 빅데이터 등 다양한 선택적 과목이 포함된다.


2. 자료구조와 알고리즘

2-1. 자료구조(Data Structures)

자료구조는 데이터를 효율적으로 저장, 구성, 관리하기 위한 구조를 의미한다. 주요 자료구조에는 배열, 연결 리스트, 스택, 큐, 트리, 그래프 등이 있다.

  • 배열(Array): 고정 크기의 연속적 데이터 저장.
  • 연결 리스트(Linked List): 동적 크기와 빠른 삽입/삭제가 가능한 데이터 구조.
    • 단일 연결 리스트(Singly Linked List): 각 노드가 다음 노드를 가리킴.
    • 이중 연결 리스트(Doubly Linked List): 각 노드가 앞뒤 노드를 가리킴.
    • 원형 연결 리스트(Circular Linked List): 마지막 노드가 첫 번째 노드를 가리킴.
  • 스택(Stack): LIFO(Last In, First Out) 구조.
  • 큐(Queue): FIFO(First In, First Out) 구조.
  • 트리(Tree): 계층적 데이터 구조로, 이진 트리, 탐색 트리 등이 포함됨.
  • 해시 테이블(Hash Table): 키를 해시 함수로 변환해 데이터를 저장하며, 평균적으로 O(1)의 검색 시간을 제공.
    • 충돌 해결 방식: Separate Chaining, Open Addressing.
  • 그래프(Graph): 정점(Vertex)과 간선(Edge)으로 구성된 데이터 구조.
    • 방향 그래프(Directed Graph)와 무방향 그래프(Undirected Graph).
    • 가중치 그래프(Weighted Graph): 간선에 가중치가 포함된 그래프.

Stack의 작동 원리
Linked Queue의 작동 원리
Linked list의 작동 원리

2-2. 알고리즘(Algorithms)

알고리즘은 문제를 해결하기 위한 절차와 방법을 의미한다. 주요 알고리즘에는 정렬, 탐색, 그래프 탐색 등이 포함된다.

  • 정렬(Sorting): 데이터를 특정 순서로 정렬. 예: 버블 정렬, 퀵 정렬, 병합 정렬.
  • 탐색(Search): 특정 데이터를 찾는 과정. 예: 선형 탐색, 이진 탐색.
  • 그래프 탐색: DFS(Depth First Search), BFS(Breadth First Search).

2-3. 시간 및 공간 복잡도

  • 시간 복잡도(Time Complexity): 알고리즘이 실행되는 데 필요한 시간을 측정한다.
  • 공간 복잡도(Space Complexity): 알고리즘이 사용하는 메모리 양을 측정한다.
  • 효율적 알고리즘 설계를 위해 Big O, Big Ω, Big Θ 표기법을 사용하며, 예를 들어 O(1) < O(log N) < O(N) < O(N^2) 순으로 효율성을 비교할 수 있다.

2-4. 알고리즘의 주요 응용

  • 동적 프로그래밍(Dynamic Programming): 큰 문제를 작은 문제로 나눠서 해결. 예: 피보나치 수열, 배낭 문제.
  • 탐욕 알고리즘(Greedy Algorithm): 매 단계에서 최적의 선택을 하는 방식. 예: 최소 스패닝 트리, 최단 경로 문제.
  • 분할 정복(Divide and Conquer): 문제를 분할하고 각각을 해결한 후 합치는 방식. 예: 퀵 정렬, 병합 정렬.
  • 백트래킹(Backtracking): 모든 가능한 조합을 탐색하며 조건을 만족하는 해를 찾음. 예: N-Queen 문제.
  • 기계 학습 알고리즘(Machine Learning Algorithms): 데이터에서 패턴을 학습하여 예측 수행. 예: 회귀 분석, 의사결정 트리, 신경망.

3. 컴퓨터 공학 학습의 중요성

3-1. 학문적 중요성

컴퓨터 과학은 현대 사회의 기초를 형성하며, 다양한 학문과 공학의 융합으로 발전하고 있다. 이론과 실무를 겸비한 학습이 중요하다.

3-2. 실용적 중요성

프로그래밍 능력은 AI, 데이터 과학, 웹 개발 등 여러 산업 분야에서 핵심 역량이다. Computational Thinking과 Problem Solving은 모든 기술적 문제 해결의 기반이 된다.


마무리

이번 주 Upstage AI Lab 6기에서는 컴퓨터 공학의 기본 개념과 자료구조 및 알고리즘에 관련된 내용을 학습했다. 이러한 학습은 컴퓨터 과학의 주요 내용을 이해하고 실질적인 문제 해결 능력을 키우는 데 초점을 맞추고 있다.