활동내용

1. 이슈내용

  • 공지사항이 있을때 공지내용을 발행한다.
  • 각 폴더마다 구현이 안되어 있는 함수들이나, 수정이 필요한 함수들을 정리해 발행한다.
    • 발행된 함수들을 보고, 구현을 한 후 commit 한다.
    • 본인이 구현한 함수들을 표시해서 comments를 날린다.

2. 고려사항

  • 팀원의 전반적인 C++ 프로그래밍 능력을 고려하여 구현 할 수 있는 알고리즘을 찾아야한다.
  • 다른 팀원의 내용과 겹치지 않도록 구현할 알고리즘을 확실히 한다.

3. 제안사항

  • 협업을 할 경우 효율적으로 알고리즘을 구현할 수 있다.
  • 매일 매일 꾸준하게 하려는 마음가짐이 필요하다.
  • 홈페이지의 경우 많은 내용을 담기 보다는 필요한 것들만 간단하게 볼 수 있도록 관리한다.

4. 계획

  • 5월28일~6월6일: readme파일 및 홈페이지 수정 및 프로젝트에 필요한 코드들 조사 & 이슈 발행 및 프로젝트에 필요한 코드들 커밋
  • 6월7일~6월13일: readme파일 및 홈페이지 완성 및 프로젝트에 필요한 코드들 커밋 & 기존 프로젝트의 코드

프로젝트 소개

1. 링크

캡처
The Algorithm(C-Plus-Plus)

2. 특징

  • 알고리즘이나 자료구조를 공부하는 사람들을 위해 프로젝트
  • 여러 헤더 안에 있는 함수들의 내부구현을 알려줌으로써 C++에 익숙해질 수 있는 프로젝트
  • 언어의 종류는 많지만, 교육용 언어에 적합한 C++을 활용

3. 선정이유

  • 오픈소스를 조사해본결과 생각보다 많은 알고리즘, 자료구조, 함수 등이 구현되어 있지않은 것을 발견 할 수 있었다.
  • 그래서 구현되지 않은 코드들을 만들어 추가하고, 구현되어 있는 코드들 수정 하면서 많은 공부가 될거라고 생각하여 선정하게 되었다.
  • 원래 프로젝트를 살펴보면 C++언어 이외에 다른 언어로 구현된 알고리즘들이 많이 있다. 우선 C++을 통해 알고리즘 공부를 시작하여, 오픈 소프트웨어 실습이 끝나게 되면 다른 언어로 알고리즘 구현을 도전해볼 수 있다는 생각에 선정을 하게 되었다.

4. 기여방식

  • 구현되어 있지 않은 코드 추가
  • 구현되어 있는 코드 더 효율적으로 수정

팀소개

팀 이름 : L2

1. 팀 멤버

2. 우리들의 역할

- 팀의 목표 :

Github 및 다른 오픈소프트웨어 사이트들을 통해 수많은 오픈소프트웨어들을 접했지만,
아직 팀 멤버들의 힘으로는 수정이 어려운 프로젝트들이 대부분이었다.

오픈소프트웨어 실습 강의 이외에 듣는 강의들과 연관을 지으려고 했고,
이를 통해 찾은 것이 현재의 프로젝트 알고리즘 구현이다.

다양한 언어로 구현되어 있는 알고리즘들 중 C++에서 구현되지 않은 것을 구현하려고 한다.

다른 강의 시간에 이론으로 배운 것들을 실제로 구현해보며,
그리고 기존에 구현되어있던 것들 중 수정할 것들은 수정하며
오픈소프트웨어 과제 이외에 팀원 개개인의 코딩 및 알고리즘 구현 능력을 향상시키는 것이 이번 오픈소프트웨어 실습의 단기적인 목표이다.

모든 언어를 사용하여 알고리즘들을 구현하면 더 좋겠지만,
우선 기본적인 언어의 알고리즘 구현을 통해 다른 언어에 적용시키는 것을 장기적인 목표로 잡았다.

- 멤버들의 역할 :

신경덕

  • 팀원 역할 분담
  • 오픈소스 홈페이지 선택 및 가져오기 담당
  • 활동내용 category 담당
  • 프로젝트 소개 category 담당
  • 팀소개 category 담당
  • 프로젝트에 필요한 코드 추가
  • 프로젝트에 필요한 코드 조사
  • 이슈 내용 및 규칙 선정
  • 협업 프로젝트팀 pull request 요청 담당
  • pull request활동 category 담당

조혜원

  • 커밋 활동 category 담당
  • 프로젝트에 필요한 코드 추가
  • 프로젝트에 필요한 코드 조사

정재홍

  • 이슈 활동 category 담당
  • 프로젝트에 필요한 코드 추가
  • 전반적인 정적페이지 내용 수정
  • 프로젝트에 필요한 코드 조사

이지원

  • wiki 내용 수정 담당
  • 프로젝트에 필요한 코드 추가
  • 프로젝트에 필요한 코드 조사
  • 협업 프로젝트팀 pull request 요청 담당
  • 팀일정 category 담당
  • pull request활동 category 담당
  • readme 내용 수정 담당

성봉진

  • code contribution highlight category 담당
  • commit내용들을 살펴보고 주요한 변경사항 확인 후 update
  • 프로젝트에 필요한 코드 추가
  • 알고리즘 활용예시외 추가제안사항 검토
  • 프로젝트에 필요한 코드 조사

풀 리퀘스트 활동

1. 응답을 기다리는 pull request list

1 2 3 4 5

  • math.h (ljw322)
    • acos
    • asin
    • atan
    • atan2
    • cos
    • cosh
    • sin
    • sinh
    • tanh
    • exp
    • ln
    • log2
    • log10
    • log_taylor_series
    • modf
    • pow
    • sqrt
    • fabs
    • fmod
    • acot
    • epowx
  • Data Structure(sinkyoungdeok, ljw322)
    • RBTree (sinkyoungdeok)
    • BTree (sinkyoungdeok)
    • Dequeue (ljw322)
    • Digraph (sinkyoungdeok)
    • Graph (sinkyoungdeok)
    • Circular_linked_list (sinkyoungdeok)
    • BinaryTree (ljw322)
  • Algorithm (sinkyoungdeok)
    • all_of
    • any_of
    • fill
    • find_if_not
    • for_each
      max
    • min
    • none_of
    • swap
  • Backtraking (sinkyoungdeok)
    • Hamilton
    • Knight_travel
    • subset
  • Greedy Algorithms (ljw322)
    • Huffman
  • Cstdlib (sinkyoungdeok)
    • abs
    • atof
    • atoi
    • atol
    • labs
  • Cstring (sinkyoungdeok)
    • strcat
    • strcmp
    • strcpy
    • strlen
    • strspn
  • sorting (sinkyoungdeok)
    • Merge-insertion sort
    • QuickSort_Median_pivot
    • Quick_plus_insertion
    • randomized_quicksort
  • Graph (ljw322)
    • Astar (ljw322)
    • BFSwithqueue (ljw322)
    • Floyd (ljw322)
    • sollin (ljw322)

2. 받아준 pull request list

  • 없음

이슈 활동

1. L2에서 사용된 GitHub : 이슈 활동

스크린샷 2019-06-08 오전 12 43 08

  • bug : 기존에 있던 알고리즘 또는 팀원이 올린 알고리즘 프로그램 중 오류가 일어나는 것에 대해 작성하는 issue Label 입니다.
  • need : 팀원 중 본인이 생각했을 때, 다른 팀원이 해줬으면 좋겠다는 알고리즘 등 혹은 추가 필요사항에 대해 작성하는 issue Label 입니다.
    또한, 여러가지 issue들 중 본인이 해결하여 다른 팀원들이 하지 않아도 되는 것들 또한 적어 놓는 issue Label 입니다.

  • notice : 공지와 비슷한 모든 팀원들이 중요하게 봐야할 것을 적어 놓는 issue Label 입니다.

  • request : 본인이 업로드한 알고리즘들 중 pull request를 한 것들을 올려 놓은 것입니다. 팀원들은 이것을 검토하여 merge가 가능하다면 merge를 할 수 있습니다.

2. Open Issue와 Closed Issue

- Open Issue

스크린샷 2019-06-08 오전 12 42 07

- Closed Issue

스크린샷 2019-06-08 오전 12 41 13

3. Open Issue 중 중요한 사항

스크린샷 2019-06-08 오전 1 06 15

대부분의 Open Issue가 비슷합니다.

  • 가장 먼저 need issue Label을 가진 math need list를 살펴보겠습니다.
    최초 필요한 알고리즘 코드들 즉, 현재 구현되지 않아 구현이 필요한 알고리즘의 이름들을 올려주는 팀원이 있습니다.
    이 알고리즘들 중 팀원이 구현 가능한 알고리즘이 있다면, 코드를 구현하여 올리고 “implemented by —“라는 comment를 통해 구현이 완료되었음을 알리고 있습니다.
    스크린샷 2019-06-08 오전 1 11 31
  • 다음으로 notice issue Label 입니다. 최초 Label 이름 붙이는 것이 어색하여 실수가 많았기 때문에, sinkoungdeok(팀장)이 팀원들이 계속 볼 수 있도록 notice issue Label을 붙여놓았습니다. 이를 통해 팀원들은 어떠한 방식으로 Label을 붙이는지 알 수 있게 됩니다.
    스크린샷 2019-06-08 오전 1 14 05
  • 다음으로 request issue Label입니다.
    다양한 issue Label이 있지만, 본인이 구현한 알고리즘들에 대한 Pull request를 보낸 것들을 적어 놓았습니다.
    1. Backtraking pull requset
    2. Algorithm pull request
    3. Cstdlib pull request
    4. Cstring pull requrest
    5. Sorting pull request
    6. math.h pull request
    7. Graph pull request
    8. Greedy Algorighm pull request
  • 아직 Open 상태인 Issue들이 많이 있습니다.
    각각의 Pull request들 안에 구현해야 하는 알고리즘들이 있으며, 본인이 할 수 있는 것을 자유롭게(대신 선착순)구현하면 됩니다.
    모든 Issue들을 해결하고 싶지만, 구현이 어려운 알고리즘도 있기 때문에 시간이 오래 걸릴 것으로 예상 됩니다.

4. Closed Issue 중 중요한 사항

스크린샷 2019-06-08 오전 1 22 13

  • 현재 Closed 된 Issue입니다.
    그 중 need issue Label 중 완료된 issue를 살펴보겠습니다. 필요한 것들을 적었으며, 모든 팀원이 각각 할 수 있는 알고리즘을 구현하여 Pull request 혹은 업로드 후 본인이 올렸다고 표시를 해놓았습니다.
    최초에 적힌 모든 것들이 구현되었을 때, issue가 closed 된 것을 확인할 수 있습니다.
    스크린샷 2019-06-08 오전 1 28 38

  • 완료된 issue들을 살펴보면
    1. Data Structure need list
    2. Backtracking need list
    3. Sorting need list


  • Bug issue Label을 살펴보겠습니다.
    스크린샷 2019-06-08 오전 1 27 02

잘못된 헤더파일에 대해 지적하며, 파일을 수정한 것을 확인할 수 있습니다.

5. Issue 관리의 중요성

어떤 팀프로젝트 이건 팀원들 간 소통이 중요합니다.
또한 본인이 원하는 것이 무엇인지, 팀원들이 필요로 하는 것이 무엇인지를 명확하게 알려줄 필요가 있습니다.
그러한 점에서 github 사용시 Issue 관리가 굉장히 중요한 것을 느꼈습니다.
Issue 의 Label 만 정확히 명시하더라도 서로 소통하는 것이 얼마나 쉬운지 알 수 있었습니다.
첫 사용이라 어색한 점도 많았고, 여전히 어색하지만 계속 고쳐나가려고 합니다.

커밋 활동

5/28

  • sinkyoungdeok
    Update
    Sorting - quick sort_plus_insertion sort, quick sort_pivot_is_median
    Graph - Floyd, sollin, BFS
    Algorithm - min, swap
    Math - ceil
    Cstring - strcpy
    Others - fibonacci_iteration_version
    Cstdlib - abs, atol , atoi

  • honggildong98
    Backtracking - knight_travel

5/29

  • sinkyoungdeok
    Update
    Cstdlib - labs, atof
    Graph - astar
    Data structure - btree
    Others - disjoint_set

5/30

  • sinkyoungdeok
    Update
    Hashing - sha1, md5

5/31

  • sinkyoungdeok
    Update
    Algorithm- fill, all_of, any_of, none_of, for _each, find_if_not
    Cstring - strcat, strcpn

  • ljw322
    Update
    Others - Tomato_queue, fibo_basiEX

  • sala0320
    Update readme
    Sorting - randomized_quicksort

  • honggildong98
    Math - acos,asin,atan

6/1

  • sinkyoungdeo
    Update
    Math -sin
    Data structure - RB tree

6/2

  • sinkyoungdeok
    Update page - index.html, response-status-codes.md

6/3

  • sinkyoungdeok
    Update page - README, 팀원 소개, 활동내용, 팀소개, 프로젝트 소개, 이슈 활동, 커밋활동

6/4

  • ljw322
    Update
    Data structure - dequeue
    Algorithm - any_of
    Math - log10

  • sala0320
    Update page - 커밋활동

6/5

  • ljw322
    Update
    Math - tanh, cosh, exp, pow
    DataStructure - BinaryTree

  • sala0320
    Update page - 커밋활동
    Search - jumpsearch
    Greedy algorithm - huffmancoding

  • sinkyoungdeok
    Update page - 팀 소개
    Data Structure - Circular_linked_list, Digraph, graph

6/6

  • HongGildong98
    Update page - 팀소개, code contribution highlight
    Others - SMST, MST

  • 0322-hong
    Update page - 커밋활동, 팀소개,

6/7

  • sala0320
    Update
    Search - jump

  • HongGildong98
    Update page - code contribution highlight
    Math - cos, acot, e_pow_x.cpp
    Edit
    Math - acos, atan, atan2, asin, log_taylor_series
    Backtracking - subset

  • sinkyoungdeok
    Update 팀소개 , pull request활동

  • ljw322
    Update page - put a thing
    Math - log2, acot, log, sqrt, in

  • 0322-hong
    Update page - code contribution highlight
    Math - log_taylor_series
    Backtracking - subset

6/8

  • sala0320
    Update page - 커밋활동

  • HongGildong98
    Update page - 이슈활동

  • sinkyoungdeok
    Update page - pull request 활동
    Update page - 팀소개

  • ljw322
    Update page - pull request 활동

6/9

  • sala0320
    Update page - 커밋활동

  • ljw322
    Update README.md

팀 일정

프로젝트 일정

5월

  • 5월 첫째 주

    L2 팀 결성

  • 5월 둘째 주

    여러 프로젝트 주제 후보

  • 5월 셋째 주

    C-PlusPlus 주제 선정

  • 5월 넷째 주

    선정 프로젝트 클론
    필요 알고리즘/자료구조/함수들 파악
    add/commit/push/merge 작업 등 확인
    개인 별 필요 함수 구현

  • 5월 다섯째 주

    팀 정적페이지 생성
    math need list 이슈추가
    time.h list 이슈추가
    Data Structure need list 이슈추가
    개인 별 필요 함수 구현

6월

  • 6월 둘째 주

    이슈별 라벨 공지
    math.h 헤더 이용 유의 공지
    Backtracking need list 이슈추가
    개인 별 필요 함수 구현
    선정 프로젝트에 pull request 요청

  • 6월 셋째 주

    개인 별 필요 함수 구현
    선정프로젝트에 pull request 요청
    팀 발표

Code Contribution Highlight

5/28

  • sinkyoungdeok
    • sort

      quick sort_plus_insertion sort : add void InsertionSort(int *A, int n) in quick_sort
      quick sort_pivot_is_median : add int medianOfThree(int *d, int low, int high)

    • Graph

      Floyd : add void Floyd(int **dist,int n)
      sollin : add void prims(int *a, int b[][7], int i, int j)
      BFS : add -class graph -void bfs(int s)

    • Algorithm

      max, min : add int min(int input1, int input2) int max(int input1, int input2)
      swap : add void swap(int *x, int *y)

    • math

      ceil : double ceil(double input)

    • Cstring

      strcpy : add char *strcpy(char *dest, char *source)

    • cstdlib -

      abs : add int abs(int input)
      atoi : add int atoi(char *input)
      atol : long atoi(char *input)



  • honggildong98
    • Backtracking

      knight_travel : add -class Knight -void move(pair<int, int> point) -void find_route(void) etc…




5/29

  • sinkyoungdeok
    • cstdlib

      labs : add long int labs(long int input)
      atof : add float StringToFloat(char* s)

    • Graph

      astar : add -bool astar(state start, state goal) -void neighbors(state current,state goal, vector &openset,vector closedset) etc...

    • Data Structure

      btree : add typedef struct BTreeNode etc…



5/30

  • sinkyoungdeok
    • Hashing

      sha1 : add -class SHA1 -static void transform(uint32_t digest[], uint32_t block[BLOCK_INTS], uint64_t &transforms) etc…
      md5 : add -class md5 - void bytes_to_m_array(InputIterator & first, std::array<std::uint32_t, 16>::iterator m_array_last) etc..



5/31

  • sinkyoungdeok
    • Algorithm

      fill : add void fill(ForwardIterator first, ForwardIterator last, const T& val)
      all_of : add bool all_of(InputIterator first, InputIterator last, UnaryPredicate pred)
      any_of : add bool any_of(InputIterator first, InputIterator last, UnaryPredicate pred)
      none_of : add bool none_of(InputIterator first, InputIterator last, UnaryPredicate pred)
      for each : add constexpr UnaryFunction for_each(InputIt first, InputIt last, UnaryFunction f)
      find
      if_not : add InputIterator find_if_not(InputIterator first, InputIterator last

    +cstring

    strcat : add char *strcat(char *dst, const char *src)
    strspn : add size_t strspn(char *string,char *control)



  • ljw322
    • Others

      Tomato_queue : add -struct Position -implemented by using iteration of queue -check the tomato if it ripe
      fibo_basic : add int fibo(int N)



  • sala0320
    • update readme : add “!Algo(C:\Users\Administrator\Desktop\algo.png)”

    • sorting

      randomized_quicksort : add -int medianOfThree(int d, int low, int high) -void quicksort(int d, int fir, int last)



  • honggildong98
    • math

      acos : add double acos(double input)
      asin : add double asin(double input)
      atan : add double atan(double input)
      atan2 : add double atan2(double input) cos : add double cos(double input)



6/1

  • sinkyoungdeok
    • math

      sin : add double sin(double x)

    • datastructure

      RB tree: add class RBtree insert,del etc…



6/2

  • sinkyoungdeok
    • update page : add 2. What is our Team Project



6/3

  • sinkyoungdeok
    • update page :del ### Success



6/4

  • ljw322
    • data structure

      dequeue :add class Deque pop_back/front, push_back/front etc…

    • math

      log10 : add double log10(double x)



6/5

  • sala0320
    • search

      jumpsearch int jumpSearch(int arr[], int x, int n)

    • greedy algorithm

      huffmancoding : add -struct MinHeapNode -void HuffmanCodes(char data[], int freq[], int size)