FEST mini?
연 1회 진행되던 CAMPUS FEST를 학생분들과
더 자주 소통할 수 있도록 올해부터 연 2회로 진행됩니다.
여름에 진행되는 FEST mini는 자유주제 없이
지정주제로 진행됩니다.

참가안내 및 주요일정

대상

오픈소스 SW개발에 관심이 있는 대학(원)생
* 전공&학년 무관/휴학생 참여가능, 기졸업자 불가
3명 이하로 이루어진 팀 단위(1인 참여가능)

주제
1. 타임라인 만들기 상세보기
내 근황을 작성하고 원하는 친구 소식을 받아보기

[필수 구현 사항]
- 로그인, 친구 맺기, 내 소식 저장, 친구 소식 리스트 뷰(타임라인)

[구현 시 우대 사항]
- 친구 목록이나 친구 소식을 빠르게 가져오는데 유리한 데이터 구조
- 성능이나 안전성에 대한 고려

[심사 기준]
- 기능 동작의 완성
- 유지 보수가 쉬운 코드
- 친구가 많아졌을 때 타임라인 로딩 속도나 새 소식 전달 속도

[참고 자료]
- 피드 : 페이스북 모바일 첫 페이지 (내소식 작성 및 친구 소식 리스트 뷰, 좋아요/덧글 등 소식 이외의 기능은 제외)
- 친구 : 인스타 친구 검색 탭 (친구 찾기, 친구 추천)

[필요 기술]
- Java, Spring, dbms(or nosql)

2. Distribute in-memory key-value store 만들기 상세보기
Distributed System을 구성하는데 필요한 지식들을 습득하고 각각의 trade-off를 비교하며 시스템을 설계해보기

[필수 구현 사항]
- standalone in-memory kv store의 OOD
- kv store의 최소한의 프로토콜 정의 (get, set, delete...), CLI로 시작해도 좋으나 networking을 지원

[구현 시 우대 사항]
- value type이 collection인 entry 지원(list, hashmap 등) 많을수록 좋음 (easy)
- entry에 TTL 지원 (medium)
- primitive key-value entry에 대해 concurrent operation 지원 (test and set) (medium)
- persistent 지원 (medium)
- multithreaded 모델로 변경 시도 (redis는 싱글 스레드), 같은 키에 대해서는 serializability 지원 (medium~hard)
- distributed로 확장, fail-over 고려 (hard)

[심사 기준]
- 각 클래스가 객체지향 원칙에 따라서 잘 설계되어있는가?
- 필수 사항을 만족하는가?
- 우대 사항을 만족하는가? (각각 난이도에 따른 점수 부여, 설계에 따른 점수 부여)
- trade-off를 고려하는 과정에 대한 문서
- 완성된 시스템의 performance test 문서 (테스트 전에 용량 산정도 하면 추가 점수, cpu, mem, network io, r/w ops에 대해서)

[참고 자료]
- https://redis.io

3. JavaScript Utility Library 개발 상세보기
lodash, underscore와 같은 Vanilla JS에서 지원하지 않는 유용한 기능들을 제공하는 library 개발

[필수 구현 사항]
- 기존 lodash, underscore에서 제공하는 function은 금지(단 input, output을 변형하여 기능은 개선한 것은 가능)
- docs를 제공하는 최소 10개 이상의 function을 제공할 것
- webpack, parcel 등의 bundler를 활용해 임의의 function만 bundle로 만들 수 있는 기능 제공
- GIT 필수 사용

[구현 시 우대 사항]
- REST API or GUI로 필요로 하는 function 선택 후 dynamic 하게 bundle 생성 기능 제공
- test case 작성

[심사 기준]
- bundle size, code quality & performance
- 구현한 기능들이 얼마나 유용한지?
- bundler 접근 방법
- Document 가 얼마나 개발자 친화적인가?

[참고 자료]
- https://lodash.com/

4. React Native 기반의 여행 일지 상세보기
react native를 활용해 여행 일지 기록용 앱을 개발해보기

[필수 구현 사항]
- image meta data(생성일, 위도 경도) 활용
- naver maps API or google maps API를 활용하여 방문지 경로 제공
- 오픈된 관광지 데이터를 DB에 저장, 위경도 기반의 관광지 정보 제공
- GIT 필수 사용

[구현 시 우대 사항]
- open api를 사용해 네아로(네이버 아이디로 로그인) 연동
- networking 기능 제공
- custom UI component 개발

[심사 기준]
- code quality
- DB 설계&활용 능력
- idea를 구상하고 실제로 설계 & 개발해가는 과정
- (2인 이상인 경우) Teamwork

[참고 자료]
- https://facebook.github.io/react-native/

5. 게임 미니맵 리플레이(replay) 모듈​ 상세보기
게임사로부터 제공받은 다양한 형태의 게임 api를 일정한 포맷으로 컨버팅만 하고 submit을 해주면, Replay가 가능한 미니맵을 내려주는 web application 구현
이 모듈을 사용하는 사용자는, 데이터를 정해진 형태로 컨버팅해서 제출하는 부분만 구현하면 됨
FAQ 보기

[필수 구현 사항]
- springboot(or node), 프런트는 원하는 템플릿 엔진이나 프레임워크로 (react, vue 등등)
- 2d 또는 3d webgl library
- 모듈 만든 것으로 LoL이나 배틀그라운드 등의 esports를 replay 하는 simulation 기능
- 배경 설정, 플레이어(오브젝트들)의 이동, 오브젝트상 플레이어 표시(챔피언 이미지, 선수 아이디 등등)

[구현 시 우대 사항]
- 모듈 사용 설명서(swagger 등)
- Additional UI 기능, bgm 기능.
- (2인 이상인 경우) 작업자들 간 git commit 내용과 업무 분리

[심사 기준]
- 구현 필수 사항을 구현했는지
- 사용자와 모듈 간 기본적인 Http 프로토콜(에러시 응답 코드, 요청 등등)
- 사용자가 잘못된 데이터 제출했을 때 Error 로깅으로 빠르게 알 수 있도록.
- 게임의 미니맵을 리플레이로 보는 느낌을 맞춰 구현했는지
- 기본적인 code quality (네이밍, 분리, 통합 등등)

[참고 자료]
- html5 / js game engine
- 라이엇 Open Api
- 배틀그라운드 Open Api
- 배틀그라운드 Replay UI

6. 라이브 슬라이더 안드로이드 앱 만들기 상세보기
컨텐츠의 의미 있는 요소(이미지, 텍스트, 영상 등)를 정제하여 실시간으로 사용자에게 슬라이더 형태로 요약하여 제공

[필수 구현 사항]
- 컨텐츠는 RSS를 사용하여 데이터 모델링 (RSS 는 어떤 것을 구독하여도 무방. 단, 이미지, 텍스트, 영상이 포함된 RSS 활용 권장)
- 컨텐츠 노출을 위한 Slide View 및 Live Animation 구현
- 구독한 RSS는 슬라이더로 구성되며, RSS 구독 개수에 따라 피드 형태로 제공
- 슬라이더 자동 재생
- 텍스트 검색으로 슬라이드/피드 재구성

[구현 시 우대 사항]
- 검색 기능 확장
- 이미지, 영상 내의 객체/위치 등의 정보를 추출하여 검색 결과 반영
- 필터 적용
- 슬라이드 엔드 화면 구성
- 리치한 애니메이션 구현 및 최적화

[심사 기준]
- 구현 필수사항 기능 완성도
- 코드 품질
- 성능 최적화 (속도, 메모리 등)
- 우대사항에 대한 구현 수준
- 프로젝트 관리

[참고 자료]
- 구글 뉴스 앱 헤드라인

7. 시네마그래프 콘텐츠를 만들 수 있는 iOS 앱 만들기 상세보기
사진 전문가가 아니더라도 손쉽게 시네마 그래프 콘텐츠를 만들 수 있는 앱 제작해보기

[필수 구현 사항]
- 사용자가 시네마 그래프(사진, 혹은 영상)을 촬영하고, 생성한 미디어 파일을 볼 수 있는 기능이 포함되어야 함
- 시네마 그래프 콘텐츠 촬영 기능
- 촬영된 시네마 그래프에서 움직이는 영역을 선택할 수 있는 가능
- 생성된 시네마 그래프 콘텐츠를 볼 수 있는 기능

[구현 시 우대 사항]
- 높은 해상도, 높은 FPS 지원하는 결과물 : 생성된 시네마 그래프 결과물이 높은 해상도, 높은 FPS를 지원 할수록 좋습니다. 단, 메모리 사용량은 일반적인 앱의 허용치를 넘지 않아야 합니다.
- 생성된 시네마 그래프 미디어 파일을 export 하는 기능 : 어떠한 미디어 파일 포으로든 만들어진 결과물을 앱 외부로 공유(사진 앱 저장, 공유 기능 등) 하는 기능이 포함되어 있으면 좋습니다.
- 시네마 그래프 촬영 시 손떨림 방지 기능 : 시네마 그래프 촬영 시 소프트웨어적인 손떨림 방지 기능이 포함되면 좋습니다.
- 별도 라이브러리 배포 : 하나의 앱에만 특화된 기능을 만드는 것보다, 시네마 그래프 촬영 기능을 사용하는 다른 앱에서도 쉽게 사용할 수 있는 라이브러리 형태로 제작하면 좋습니다.
- distributed로 확장, fail-over 고려 (hard)

[심사 기준]
- 구현 필수사항 기능 완성도
- 코드 품질
- 성능 최적화 (속도, 메모리 등)
- 우대사항에 대한 구현 수준
- 프로젝트 관리

[참고 자료]
- 앱 스토어(cinemagraph pro)
- Cinema Graph(wiki)

8. 키보드 입력을 통해 List UI 이동 컴포넌트 제작 상세보기
​빅스크린(예. 스마트TV)에서 키보드 입력을 통해 List UI를 선택적으로 동작되는 인터렉션 컴포넌트 구현
​ 다양한 요구 사항에 맞춰 하나의 컴포넌트로 제공

[필수 구현 사항]
- 더 보기

[구현 시 우대 사항]
- 제안된 필수 사항 이외의 UX에 대한 고민 및 구현

[심사 기준]
- 위 필수 사항의 두 가지 type (A/B) 동작 여부
​ - A/B type의 초기화 기준
- 유동적인 브라우저 사이즈 대응
- 컴포넌트의 인터페이스를 함께 고려했는지 여부
- 컨텐츠 이동 또는 선택영역 이동 시 환경에 따른 GPU 가속 이용 여부

[참고 자료]
- 스마트 TV 유튜브 / 넷플릭스

9. 초대형 모니터에 적합한 기사 배열 만들기 상세보기
​기사 컨텐츠의 배열을 최적화하여 아름답고, 편하게 기사를 소비할 수 있는 웹 서비스를 개발
​ 다양한 요구 사항에 맞춰 하나의 컴포넌트로 제공

[필수 구현 사항]
- 화면에 보여줄 컨텐츠를 매일 특정 웹 영역을 통해 수집 저장
- 웹서버 환경에서 기사를 볼 수 있도록 구현
- HD, FHD, QHD, UHD 등 해상도에 제한 없이 컨텐츠가 배열되어야 함
- 기사 제목, 언론사, 시간, 이미지, 본문 내용 표시
- 기사의 우선순위에 따라 제목 크기, 기사의 배치 알고리즘에 고려
- 가능하면 한 화면의 범위에서 모든 컨텐츠를 표시해야 하지만, 해상도가 작아 기사 하나도 표시하기 힘든 기기의 경우는 스크롤 표현 가능

[구현 시 우대 사항]
- Pad, Mobile에서 화면 회전에 따라 Layout이 반응형으로 재배열
- 자연스러운 넘김 효과 개발
- 대량 사용자의 사용을 고려하여 서버 구현
- 광고가 들어갈 수 있는 영역을 고려하며 개발
- 기사의 우선순위에 따라 제목 크기, 기사의 배치 고려
- Javascript를 다른 프로젝트에서 사용할 수 있는 Library 형태로 구현

[심사 기준]
- 필수 사항을 만족하는가?
- 가독성 있는 형태로 기사 배열이 되었는가?
- 사용성(페이지 넘김, 반응 속도 등)에 불편함이 없는가?
- 다양한 기기, 브라우저에서 호환성을 고려했는가?
- 우대 사항을 구현에 따른 점수 추가 부여.
- 과제 결과물의 문서화 ( 설계, 코드 활용 방법, 주석 등 )는 충실한가?

[참고 자료]
- Layout in Flipboard for Web and Windows — Flipboard Engineering
일정
  • 7월 31일 (수) :
    프로젝트 제출 (23:59 마감)
  • 8월 20일 (화) :
    결과 발표 ( * 개별안내 )
  • 8월 말 :
    시상식

시상 및 수상자 지원

  • 시상
    • 각 주제별 최우수상   100만원

    • 각 주제별 우수상     50만원

  • D2 지원
    • 2019 CAMPUS HACKDAY WINTER 참가권

    • - 대상자에 한해 서류전형 면제

    • DEVIEW 2019 초대권 제공

대회규칙

  • 여러 주제에 중복으로 참여 가능합니다.
  • 타 대회에서 수상한 적이 없는 코드여야 합니다.
    (미 수상작은 개선하여 참가 가능)
  • 타 기업/기관의 지원을 받고 있지 않다면
    이미 공개되어 운영되고 있는 프로젝트의 변형도 참가 가능합니다.
  • 외부 코드 사용시 라이선스 문제가 없는 코드여야 하며 사용내역을 명시해야 합니다.
  • 지적재산권 침해 및 기밀정보가 포함된 작품은 제출할 수 없습니다.
  • 프로젝트 제출시 소스코드를 오픈소스SW로 공개하여야 합니다.
  • 라이선스는 개발자가 결정하며, 저작권은 개발자에게 있습니다.