인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

오픈소스 자료구조 및 알고리즘 in C

리눅스 등 대표적인 오픈소스에서 사용되는 최신 자료구조와 알고리즘을 다루는 강의 입니다.

중급자를 위해 준비한
[알고리즘 · 자료구조, C] 강의입니다.

이런 걸 배울 수 있어요

  • 일반화된 링크드 리스트 구현

  • 레드 블랙트리와 이를 이용한 증강 트리

  • Flexible Array 분석 및 구현

  • 패턴 매칭 : BF, KR, SO, MP, KMP, BM

  • 일반화된 알고리즘 구현

  • 비트 검색 알고리즘

  • 데이터 무결성 체크(패리티비트, 해쉬)

그림14

오픈소스 분석을 통한 최신 자료구조 알고리즘 기법 이해

  • stack,queue,linked list,tree 로 끝나는 기본 자료의 이후를 다룹니다.

  • 메모리 최적화와 속도를 더 빠르게 하기 위한 기법들을 다룹니다.

  • 커널 처럼 속도와 메모리에 민감한 시스템에서 사용하는 open source내의 기법을 다룹니다.

학습 내용

그림3

섹션 (1) Generic Linked List

어떤 타입의 구조체든 하나의 리스트 만으로 연결할 수 있는 container_of 를 이용한 Type 일반화 기법을 배웁니다.

섹션 (2) Generic Hash

어떤 타입의 데이터든 O(1) 시간만에 빠르게 검색할 수 있는 이중 포인터를 이용한 해쉬 자료구조의 최신 기법을 배웁니다.

그림4
그림5

섹션 (3) Binary Search Tree

이진 탐색트리를 처음 부터 구현해 보고 재귀호출을 이용한 자동 밸런스 기능까지 배웁니다.

섹션 (4) Red Black Tree

Red Black Tree의 삽입/삭제 과정을 구현으로 이해하고 RB Tree를 발전시킨 증강트리와 인터벌 트리까지 배웁니다.

그림6
그림7

섹션 (5) Flexible Array

Flexible Array의 개념을 이해하고 이를 이용한 메모리 풀링 기법을 구현으로 배웁니다.

섹션 (6) Pattern Matching

Pattern Matching 의 개념을 이해하고 역사적으로 발전해온 대표적인 KR,SO,MP,KMP,BM 기법을 구현으로 배웁니다.

그림8
그림9

섹션 (7) Generic Sort

void*를 이용한 일반화된 swap기법을 다루고 이를 이용한 일반화된 sort를 배웁니다. 또한 함수 포인터를 이용한 위임 개념도 함께 다룹니다.

섹션 (8) Bit 관련 Algorithm

Bit 연산자를 이용한 다양한 알고리즘(FFS, Hamming weight, Bit Reverse)을 구현으로 배웁니다.

그림10
그림11

섹션 (9) 데이터 무결성 관련 Algorithm

역사적으로 발전해온 다양한 데이터 무결성 알고리즘(Parity Bit, Check Sum, CRC)을 구현으로 배웁니다.

수강 전 참고 사항

실습 환경

  • 운영 체제 및 버전(OS): Windows 10,11 Ubuntu 18.04, 20.04

  • 편집 도구 : Windows vscode, Ubuntu VIM, gcc

  • 컴파일러 : gcc

학습 자료

  • 제공하는 학습 자료 형식 (PPT, 소스 코드)

  • 수업 시 ppt를 이용한 판서를 진행하고 이를 수업 자료로 공유합니다.

선수 지식 및 유의사항

  • 본 과정을 듣기 위한 선수 지식 : C언어 기본, 기본 자료구조 알고리즘 지식

  • 본 강의 동영상 사양 : FPS-60, 해상도-1280*720, 오디오 샘플 레이트-44,100

  • 언제든 질문해 주시고, 강의는 open source 버전 업그레이드 시 수정될 수 있습니다.

  • 강의 시 배포되는 학습 자료는 수업에만 참고 하시고 무단 배포는 금합니다.

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • C언어 관련 개발자

  • 기본 자료구조 알고리즘을 배우고 최신 기법을 알고자 하는 분

  • 오픈 소스 관련 개발자

선수 지식,
필요할까요?

  • C언어 기본 및 자료구조 알고리즘

안녕하세요
김정인입니다.

638

수강생

52

수강평

8

답변

4.9

강의 평점

9

강의

김정인 강사님은 오픈소스가 중요하다며

리눅스 커널 및 딥러닝의 구현 소스를 취미 삼아 매일 분석 하는 오픈 소스 매니아 입니다.

소스를 통해 이해 한다며 무작정 소스 분석으로 모든 원리를 이해하려 하므로

수강 시 소스 폭탄에 주의 해야 합니다.

 

강의문의 : jikim@imguru.co.kr

더보기

커리큘럼

전체

69개 ∙ (17시간 15분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

전체

4개

4.8

4개의 수강평

  • raphael_cctm님의 프로필 이미지
    raphael_cctm

    수강평 1

    평균 평점 5.0

    5

    100% 수강 후 작성

    • ..님의 프로필 이미지
      ..

      수강평 5

      평균 평점 5.0

      5

      25% 수강 후 작성

      고급 C를 다 듣고 수강 중입니다. 단순히 Linked List를 삽입, 삭제, 수정 하는 개념을 배우는 것이 아니라, Linked List를 다루는 방법의 변화를 오픈 소스의 역사와 맥락과 함께 짚어 주십니다. 수강생들의 수준에 맞춰서 너무 어렵지 않은 오픈 소스의 단편을 직접 만든 Linked List에 호환시키는 부분을 통해 제네릭이 존재하지 않는 C에서 어떻게 type과 상관 없이 일반화를 시키는지 다양한 기법을 배웁니다. 다만 자료 구조에 대해 입문하시는 분들이 듣기는 적절하지 않기 때문에 기본적인 자료 구조에 대한 이해도를 숙지하고 오는 것이 좋을 것 같습니다. 그렇다면 매우 유익한 강의가 될 것이라고 생각합니다. ^^ 추후 나오게 될 강사님의 다양한 강의들이 더욱 기대되며, 많은 분들이 좋은 강좌도 접하시고, 잘 되셔서 오랫동안 좋은 강의가 지속될 수 있으면 좋겠다는 마음이 드네요.

      • clang님의 프로필 이미지
        clang

        수강평 3

        평균 평점 3.7

        4

        45% 수강 후 작성

        강의 자체는 너무 좋습니다만,, 자료구조를 처음 접하는 분이 하기에는 적당한 강의는 아닙니다. 자료구조와 C언어를 이미 알고있다는 전제 하에, 오픈소스(본 강의에서는 리눅스 커널을 기준으로 함)와 접목시키는 내용을 다룹니다. 어느정도 수준이 듣기 적절하냐면 C언어로 리스트와 트리정도는 백지상태에서 혼자 아무런 도움없이 구현할 수 있는 수준이 듣기에 좋습니다. 그리고.. 별 1개를 깎아먹은 점은.. 키보드 소리가 목소리만큼이나 큽니다. 이게 강의의 집중력을 흐트려 버리는 아주 지대한 요소로 작동합니다. 키보드 소리가 이어폰으로 때려박는 거로 전달되니 강의 듣는 내내 귀가 따가울정도..

        • Jy._.s님의 프로필 이미지
          Jy._.s

          수강평 42

          평균 평점 5.0

          5

          67% 수강 후 작성

          김정인님의 다른 강의

          지식공유자님의 다른 강의를 만나보세요!

          비슷한 강의

          같은 분야의 다른 강의를 만나보세요!

          월 ₩17,600

          5개월 할부 시

          ₩88,000