강의

멘토링

로드맵

Inflearn brand logo image
Programming

/

Algorithm & Data Structure

オープンソースデータ構造とアルゴリズム in C

Linuxなど代表的なオープンソースで使用される最新のデータ構造とアルゴリズムを扱う講義です。

  • jikim1770
알고리즘
코딩테스트
LinkedList
RedBlackTree#1
binary-search-trees
pattern-matching
C
Algorithm
Linux
gcc
data-structure

こんなことが学べます

  • 一般化されたリンクリストの実装

  • レッドブラックツリーとそれを使用した拡張木

  • Flexible Arrayの分析と実装

  • パターンマッチング:BF、KR、SO、MP、KMP、BM

  • 一般化されたアルゴリズムの実装

  • ビット検索アルゴリズム

  • データ整合性チェック(パリティビット、ハッシュ)

図14

オープンソース分析による最新のデータ構造アルゴリズム技術の理解

  • stack,queue,linked list,tree で終わる基本資料の以降を扱います。

  • メモリの最適化と高速化のためのテクニックを扱います。

  • カーネルのように速度とメモリに敏感なシステムで使用するオープンソース内の技術を扱います。

学習内容

図3

セクション(1) Generic Linked List

どのタイプの構造体でも 1 つのリストだけで連結できる 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* を使った一般化されたスワップ手法を扱い、それを使った一般化された sort を学びます。また、関数ポインタを使用した委任の概念も一緒に扱います。

セクション (8) Bit 関連 Algorithm

Bit演算子を使用したさまざまなアルゴリズム(FFS、Hamming weight、Bit Reverse)を実装で学びます。

図10
図11

セクション (9) データ整合性に関するアルゴリズム

歴史的に発展してきたさまざまなデータ整合性アルゴリズム(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

  • いつでも質問してください。レッスンはオープンソースバージョンのアップグレード時に変更されることがあります。

  • 講義の際に配布される学習資料は授業のみ参考にして無断配布は禁じます。

こんな方に
おすすめです

学習対象は
誰でしょう?

  • C言語関連開発者

  • 基本データ構造アルゴリズムを学び、最新の技術を知りたい方

  • オープンソース関連開発者

前提知識、
必要でしょうか?

  • C言語基本およびデータ構造アルゴリズム

こんにちは
です。

716

受講生

70

受講レビュー

11

回答

4.9

講座評価

9

講座

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

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

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

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

 

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

カリキュラム

全体

69件 ∙ (17時間 15分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

7件

4.9

7件の受講レビュー

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

    受講レビュー 2

    平均評価 5.0

    5

    61% 受講後に作成

    • ddh님의 프로필 이미지
      ddh

      受講レビュー 4

      平均評価 5.0

      5

      30% 受講後に作成

      • egnachio님의 프로필 이미지
        egnachio

        受講レビュー 2

        平均評価 5.0

        5

        100% 受講後に作成

        너무어려버잉

        • raphael_cctm님의 프로필 이미지
          raphael_cctm

          受講レビュー 1

          平均評価 5.0

          5

          100% 受講後に作成

          • clang님의 프로필 이미지
            clang

            受講レビュー 3

            平均評価 3.7

            4

            45% 受講後に作成

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

            ¥10,375

            jikim1770の他の講座

            知識共有者の他の講座を見てみましょう!

            似ている講座

            同じ分野の他の講座を見てみましょう!