Lectures/CAPSW/2019

From MCLab
Jump to: navigation, search

Contents

종합설계 Class Overview - SW연계전공

교육목표

지금까지 이수했거나 현재 수강하고 있는 전공 지식을 바탕으로 스스로 새로운 기술들 조사 학습하고, 팀 워크를 통해 아이디어 발굴에서 제품화까지 전 과정을 동료들과 함께 거치면서 IT 산업현장에 적용 가능한 실무 능력을 갖추고 종합적 문제해결 능력을 배양한다.

최신 IT 기술과 산업동향을 조사하여 연구해서, 팀 스스로 창조적 아이디어 (즉, 창업 아이템)을 발굴하고, 개발할 제품 또는 서비스를 제안한다. 확보해야 할 기술들을 분류해 보고 팀원 각자가 분담하여 필요한 핵심기술을 조사하고, 분석하고, 여러가지 대안들을 실험해 본다. 소프트웨어 개발방법론에 따라, 요구사항을 분석하여 개발할 기능들을 정의한다. 개념설계와 상세설계를 거쳐, 코딩하고 시험해 보고 최종 결과를 발표하고 작품을 시연한다.

담당교수
홍진표
강의시간
화 1 2 3 (5214)

강좌의 진행 방법

  • 4~6인으로 팀을 구성하여 설계 프로젝트를 수행하며, 발표하고 그간의 결과물을 제출하고 시연한다.
  • 본 강좌에서 지정된 팀웍시간에 프로젝트 팀별로 팀미팅을 진행하며, 기타 시간에도 별도의 팀 미팅과 팀 세미나를 수행한다.
  • 미리 실무지식을 익히기 위해 과제를 수행한다. (개인 또는 팀별)
Assignment
개인이 수행하거나
2인 1조로 조를 구성하여 수행한다.
팀프로젝트
팀별로 프로젝트를 수행한다.
팀은 벤처 창업을 목표로 팀을 만들고 연구개발할 주제를 발굴해서 창업할 아이템을 기획하고 구현한다.
결과물의 제출
모든 결과물은 수업전일 자정까지 e-class에 제출한다. (발표자료 포함) 조 또는 팀 단위로 제출하는 경우 조장 또는 팀장만 대표로 제출하면 된다.
팀프로젝트인 경우
  • 모든 문서에는 변경 이력이 기재되어야 한다.
  • 인쇄본 1부는 발표일에 별도 제출해야 한다.
  • 공헌도 평가: 발표가 종료된 후에 동료 팀원이 이 활동에 얼마나 공헌했는지를 객관적으로 평가하여 제출해야 한다. (평가결과는 비밀이 유지됨)

평가 (예시)

개인과제 - 300점 (변경될 수 있음)
2인 1조로 수행한 경우, 개인별 점수는 조의 점수 그대로 반영된다.
Warm-up 팀프로젝트 - 200점
3인 1팀
팀프로젝트 - 1300점
팀 성과 80%, 팀원 공헌도 20%
기타 고려사항
결석 -20점, 지각 -10점
공모전 출품 +10점, 본선진출 +20점, 수상: +30점, 최우수상: +50점
팀별 (의미있는) 질문 1회당 팀에+1점 (최대 5점)
배점표
Evaluation2018-1.png

참고

정보통신공학과 정보통신종합설계1 home page [1]

공지사항

Team Projects 수행

0 Team 구성

프로젝트를 수행할 팀을 구성하고, 팀장을 선출하고, 팀원명을 정하여 eclass의 팀프로젝트관리로 가서 프로젝트 명 '팀 구성'에서 팀명(영문명칭), 팀장, 팀원 명단을 제출한다.

1 창업 아이템 발굴 (4/2)

팀원간 브레이스토밍을 통해 창업 아이템을 발굴한다. 창업할 아이템을 숙고하여 선정하고 이 제품이나 서비스가 사업성이 있으며, 여러분들이 준비해야 할 사항이 무엇인지를 발표한다. 투자를 받기 위해서나 여러분의 창업이 성공하기 위해서는 사업성이 있으면서, 기술적으로도 경쟁력 있음을 보여줘야 한다. 향후, 학기말까지 시제품을 개발하여 투자자들을 상대로 프레젠테이션 해야 할 것이다.

2 사업제안서 작성 (4/9)

여러분이 확보한 기술이나 초기 제품도 없고 지적재산권도 없다. 다만, 같이 창업할 동료들이 있을 뿐이다. 일주일 후에 창업한다고 생각하고 창업후에 할일을 계획하고 동료들과 같은 목적으로 인식을 같이하고, 업무를 수행하고, 주변을 설득할 수 있는 초기 사업제안서를 만들자. (계속 보완해야할 것이다.)

사실, 여러분은 시제품을 만들고 나서 나서 투자자에게 설명할 진정한 사업계획서를 작성하고 프레젠테이션 해야 할 것이다. 여러분의 프로토타입이 나온 최종발표에는 투자자를 대상으로 설명할 벤처 사업계획서가 완성될 것이다.

제출물
PPT 파일

3 중간결과

요구사항 분석 및 정의 (4/16)

요구사항정의서를 작성하여 발표한다. 요구사항정의서에는 적어도 다음 내용이 기술되어야 한다.

  1. 시스템 구성
  2. 요구사항
    1. 기능적 요구사항
    2. 비기능적 요구사항
  3. 서비스 시나리오 (use case)
    가능한 서비스 이용 절차를 기술한다.
제출물
DOC 또는 HWP 파일을 작성하고 PDF로 변환하여 e-class에 제출
발표를 위해 별도의 PPT를 준비할 필요없고, 작성한 문서를 가지고 발표하면 충분하다.
참고
정보통신공학과 2018년도 정보통신종합설계1(3학년 2학기) 팀프로젝트 결과물[2]

핵심기술 조사 및 확보 - 각자 (4/30)

사업제안을 하기 앞서 확보해야 할 기술들을 분류해 보고, 팀원 각자가 분담하여 필요한 핵심기술을 조사하고, 분석하고, 실험해 본 결과를 발표한다.

제출물: PPT

개념설계 및 상세설계 (5/14)

상세설계서를 작성하여 제출하고, 발표한다.

중간결과 발표 및 시연 (5/21)

프로젝트의 중간결과를 발표하고 시연한다. 기 발표한 상세설계 문서를 수정하고 현재까지 수행한 개발 내용을 PPT로 발표한다. 특히, 주요 기술을 구현할 수 있음을 보여 줘야 한다. GitHub에 저장된 code의 개요 설명 포함.

지금까지 수행결과를 데모한다. (동영상 자료도 무방. 제출할 필요 없음)

제출물
  1. PPT 발표자료
  2. 상세설계 문서 수정본
  3. Source code: GitHub repository에 저장 (제출 불필요)

Project 관리

팀 프로젝트 repository를 github에 생성해서 협동작업을 준비한다. 앞으로 작성할 문서들은 'Docs'라는 디렉토리 밑에 저장한다. (문서도 공유 및 버전관리 대상임)

4 최종결과

최종결과 발표 및 시연 (6/4)

프로젝트의 최종결과 보고서를 제출하고 발표하고 시연한다.

발표시간
팀별 발표 10분, 질의응답 5분
제출물
e-class에 제출하고, 발표 당일 인쇄본 2부 제출
  1. 최종결과보고서
  2. 발표자료 (PPT)
  • GitHub url을 기재한다. (source를 제출할 필요없다.)
평가기준
결과의 우수성 40%, 제품의 완성도 20%, 기술적 경쟁력 10%, 활용가능성 10%, 보고서 품질 10%, 발표/응답의 우수성 10%

작품전시회 (6/11)

최종 결과를 upgrade하여 발표 및 시연함. 최종결과보고서 완성본과 작품사진과 설명도 제출함.

준비물
작품, 패널(A4 8쪽을 패널에 부착, 패널 상단에 남는 공간에 작품명과 팀명, 팀원을 적어서 부착)
지금까지 작성한 모든 문서파일 최종본 (GitHub에 올릴 것)
팀 사진 1장, 작품 사진 4장, 패널 원고 파일

최종문서 제출 (6/18)

지금까지의 문서를 정리하고 보완하여 Github에 올려 놓고, Team Space에 문서별로 URL을 수록한다.

팀 프로젝트 전 실무능력 갖추기

Technology Trends 파악

전자신문, 디지털타임즈, 일간지 경제면 보기

전시회, 세미나 참관

Gartner 기술동향 자료

  • Gartner's Hype Cycle for Emerging Technologies, 2017 [3]
  • Gartner’s Top 10 Strategic Technology Trends for 2017 [4]
  • 가트너 선정 2018년 10대 전략 기술 트렌드 [5]
  • 가트너 선정 향후 5년 후 세계 디지털 경제를 주도할 3대 기술 트렌드 [6]

Linux

  • Linux 명령어
  • bash
  • nano, vi 등 기타 tools
  • VirtualBox를 이용한 linux machine 설치

IoT (Optional)

Raspberry Pi

라즈베리파이 공식홈페이지 https://www.raspberrypi.org/

위 공식홈페이지에서 라즈베리파이에 설치가능한 IS인 Rasbian OS의 image 파일을 다운로드 할 수 있음.

Arduino

Arduino H/W 및 IDE 설치
Getting Started with Arduino on Windows [7]
실험 따라하기
가치창조기술 wiki의 아두이노 강좌 [8]
Codingrun 아두이노 강좌 [9]
Inflearn 아두이노 강좌 [10]
기타 교육자료
Introduction to Arduino - from Spakrfun [11]
MIT Arduino Tutorial #1 동영상 [12]
Spooky Projects – Introduction to Microcontrollers with Arduino [13]
Arduino Tutorial - from Sparkfun [14]
Arduino 관련 부품
ArtRobot [15]

통신

  • Serial, Bluetooth, WiFi 통신
  • PySerial

소프트웨어공학

Git - source version control for teamwork

Git workflow

Tools for Git

  • Remote repository services
    GitHub에서 public repository는 무료. 학생이면 private repository도 무료로 쓸 수 있다.
    GitHub Education - Student Development Pack 가입하기
    BitBucket은 public repository 무료, 5개까지 private repository 무료. https://bitbucket.org/
  • Git Clients
    Download Git Bash (command mode)
    PyCharm 등 IDE에서 git을 사용하기 위해 설치 필요함
    Git client with GUI: Download Sourcetree
    command를 몰라도 사용 가능
    널리 이용되고 있으며, github, bitbucket 등 여러 원격 저장소 서비스를 지원한다.
    GitHub에서 제공되는 GitHub Desktop도 있다.

PyCharm에서 Git 사용하기

git.exe가 설치되어야 한다. (Git Bash 설치하면 충분)

  1. git.exe 설치 확인
    File >> Settings >> Version Control >> Git: Git executable이 설정되었는지 확인.
  2. GitHub account 등록
    File >> Settings >> Version Control >> GitHub: GitHub 계정 등록 --> Apply, OK
  3. PyCharm project에 존재하는 source를 GitHub에 등록하려고 할 때:
    1. Local repository를 만든다
      VCS >> Import into Version Control >> Create Git Repository
      이후 Add, Commit 등을 사용한다: VCS >> Git >> git command들
    2. GitHub에 remote repository를 생성한 다음, push한다.
      VCS >> Import into Version Control >> Share Project on GitHub
      VCS >> Git >> Push
  4. GitHub의 remote repository를 가져올 때:
    1. VCS >> Checkout from Version Control >> git: clone할 remote repository를 선택한다.

Tutorials

  • Github로 학교 팀프로젝트 하기, 경희대학교, 2016, Slide Share [16]
  • 누구나 쉽게 이해할 수 있는 Git 입문 - 예제로 Tortois git client를 사용함.
  • Pro Git book, 2nd Ed. [17] - 상세한 내용은 이 책을 봐야.
  • 초심자를 위한 Github 협업 튜토리얼 (with 토끼와 거북이), [18]
  • 동영상 강좌: Sourcetree를 git 사용하기 [19]

Web Programming

Client-side

Server-side

WSGI
  1. Web Application Programming in WSGI
    Download Web App Examples
    Web Python http://wsgi.tutorial.codepoint.net/
Django Framework
- a high-level Python Web framework that encourages rapid development and clean, pragmatic design
Django tutorial, https://np.hufs.ac.kr/user/ia/notebooks/Public/Handout/django_tutorial.ipynb
Official documentation, https://docs.djangoproject.com/ko/2.0/
Pycharm IDE 설치하기(2019 update) - by 한민규
Python Crawling(2019 update) - by 한민규
Django 따라하기(2019 update) - by 한민규
Django project sample - by 한민규
Hosting Servers from Cloud
IaaS, PaaS
Amazon AWS 이해하기 - by 한민규
MS Azure

Programming Assignments

PA-1 Client-side Web Programming: HTML, CSS, JavaScript (3/11까지)

W3School 사이트(http://www.w3schools.com/) 로 가서 HTML, CSS, JavaScript를 읽고,문제에 답하라. (2인 1조)

참고
  1. 환경변수와 http server 실행 - 정재원
  2. HTML, CSS, JavaScript 18/04/03 강의자료 - 정재원

PA-2 BeautifulSoup Lib를 이용한 Web Crawling (3/22까지)

문제 (PDF)

  • step1 : www.chosun.com 으로 접속합니다.
  • step2 : 접속하게 되면, 첨부된 파일에서 빨간네모박스 안의 기사들의 제목과 제목아래 하부 기사들의 제목이 나옴을 볼 수있습니다.
    모든 기사들의 제목과 제목에 링크된 URL을 콘솔 화면에 출력하세요.

hint1) bs4의 find는 하나의 태그를 찾아낼 때 사용합니다.

hint2) bs4의 find_all은 다운로드 받은 html 페이지에 동일한태그가 여러개 있을 경우 그 태그를 모두 리스트 형태로 가져옵니다.

hint3) 각 기사제목에서 bs4로 찾아내야 하는 링크 URL은 anchor tag의 href propterty value를 가져오면 됩니다.

참고 : https://twpower.github.io/84-how-to-use-beautiful-soup

PA-3 Django Framework 튜트리얼을 통해 북마킹 앱을 만들어보자 (3/31까지)

Django framework 튜트리얼을 읽어 보세요. 자료는 하나 하나 실습할 수 있게끔 구성되어 있으니, 각 스텝별로 실습을 진행하면, 북마킹 애플리케이션 서비스를 구현할 수 있습니다.

북 마킹 애플리케이션 서비스의 결과 화면을 캡쳐하고, Django Framework가 어떻게 브라우저에 서비스를 실행하는 지 그 과정을 설명하세요.

궁금한것이 있다면, mkhan@funicel.com 으로 메일 주세요

PA-4 Django Project - Django를 이용한 크롤링 앱 서비스 구현 (4/5까지)

첨부파일(PDF)을 참조하여, Step1~4 까지 팀 별로 "Django를 이용한 크롤링 앱 서비스 구현"에 도전해 보시기 바랍니다. (2인 1조)

상기 과정은 Django 튜트리얼을 수행해 보지 않았다면 구현하기가 쉽지 않습니다. 따라서, 이전에 개인 과제(Django 튜트리얼 과제)의 기한을 금주까지 연장해 드릴 예정입니다.

개인 과제를 제출하지 않은 분들은 개인과제를 하면서 팀 프로젝트도 같이 수행하시기 바랍니다.

2019년 종합설계 결과물

1팀: https://github.com/hyeongroyoon/nudge.git

2팀: https://github.com/jinwon-jung/MakeU.git

3팀: https://github.com/Huffon/2019_Capstone_bee.git

4팀: https://github.com/gpfla201/cdt.git