Lectures/IA/2018

From MCLab
Jump to: navigation, search

Contents

인터넷응용(캡스톤디자인) Class Overview

평가

  • 퀴즈 및 코딩시험 (25%)
  • 과제물 (50%)
    Exercises/Lab Reports - 매회 10점 만점
    Programming Assignments - 매회 20점 만점 (난이도에 따라 조정될 수 있음)
  • Team Project (20%) - (팀 성적 80% + 개인공헌도 20% 가 반영됨)
  • 출석 (5%)

조교

최태훈, phone : 010-5550-1069, tahun970@hufs.ac.kr, 공대 425호
정재원, phone : 010-2962-9922, showmik@naver.com, 공대 425호

공지사항

  • (3/19까지) 각자 Anaconda를 install한다: Installing Anaconda
  • 4/2 Coding 시험
  • 4/30 Coding 시험

Pygame Installation

사전 점검사항
Python interpreter가 cmd 창이나 PowerShell 창에서 실행가능해야 한다. 안되면 환경변수에 python interpreter가 설치된 path를 환경변수 `Path`에 추가하면 된다.
예를 들어, C:\Users\jphong\AppData\Local\Programs\Python\Python36-32 를 환경변수 `Path`에 추가하면 'python' 명령을 실행시킬 수 있다.
Installation

PowerShell 또는 cmd 창을 띄워 다음을 실행한다.

python -m pip install -U pygame --user

잘 설치됐는지 확인하기 위해 샘플 게임을 실행해보자.

python -m pygame.examples.aliens

강의자료

Python Programming

  1. Onto Python
  2. Control Flow
  3. Functions
  4. Interface Design
  5. Data Structures
  6. Generators https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/generator.ipynb
  7. Modules https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/modules.ipynb
  8. Files https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/files.ipynb
  9. Errors and Exceptions
    Exception hierarchy
  10. Classes and Objects https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/oop1.ipynb
  11. Object-Oriented Programming https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/oop2.ipynb
  12. More on OOP https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/oop3.ipynb
References
  1. The Python Tutorial, https://docs.python.org/3/tutorial/index.html
  2. How to Think Like a Computer Scientist: (Rhodes Local Edition) http://openbookproject.net/thinkcs/python/english3e/index.html
  3. 점프투파이썬, https://wikidocs.net/11
  4. Tutorials, Python Course https://www.python-course.eu/index.php
Manual

Advanced Python

  1. Regular expressions https://developers.google.com/edu/python/regular-expressions
    See also https://www.python-course.eu/python3_re.php
    http://python-textbok.readthedocs.io/en/1.0/Useful_Libraries.html#matching-string-patterns-re
  2. Python and SQL : SQLite, MySQL https://www.python-course.eu/sql_python.php
    SQL Database Interfaces
    Python with SQLite
  3. PyGame pygame https://www.pygame.org/docs/
    PyGame Tutorials http://pygametutorials.wikidot.com/
  4. Multi-threaded programming https://www.tutorialspoint.com/python3/python_multithreading.htm
  5. Unit Testing with Python http://www.drdobbs.com/testing/unit-testing-with-python/240165163

Python Network Programming

  1. Fetching Internet Pages https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/urllib.ipynb
  2. First socket programming https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/first_socket.ipynb
  3. Introduction, np-1.pptx, intro.zip
  4. Client-side socket programming, np-2.pptx, clients.zip
  5. Server-side socket programming, np-3.pptx, server.zip
  6. IoT application example: iot.zip
참고 자료
  1. Socket Programming HOWTO https://docs.python.org/3/howto/sockets.html
  2. SocketServer – Creating network servers http://pymotw.com/3/SocketServer/
  3. HOWTO Fetch Internet Resources Using The urllib Package https://docs.python.org/3/howto/urllib2.html

Web Programming

Client-side

  1. HTML, CSS, JavaScript 실습 환경 구축 자료
  2. HTML, CSS, JavaScript 18/04/03 강의자료

Server-side

WSGI
  1. Web Application Programming in WSGI
    Download Web App Examples
    Web Python http://wsgi.tutorial.codepoint.net/
Django 
a high-level Python Web framework that encourages rapid development and clean, pragmatic design
Official documentation, https://docs.djangoproject.com/ko/2.0/
Django Framework(6/5)
AWS 이해하기
Django 따라하기
Django project sample


동영상 강의 참조

참고

Data Science using Anaconda

Numpy, Pandas, Matplotlib, and Scikit-learn

Exercises

EX-1. Basic Python Syntax (3/11, 23:59)

다음 문제를 다운로드하여 PyCharm 이용하여 답하고 다음을 e-class에 올린다. 답안은 주석처리된 문제 바로 밑에 작성한다.

문제
EX-1. Basic Python Syntax
제출 요령
작성한 source file(py)과 실행결과(pdf)를 zip으로 압축해 제출

EX-2. Loop and Functions (3/13, 23:59)

다음 문제를 다운로드하여 읽고, PyCharm을 이용하여 답한다. 답안은 주석처리된 문제 바로 밑에 작성하고, 모든 테스트 케이스를 통과해야 정답이 인정된다. 완성 후 e-class에 올린다.

문제 
EX-2. Loop and Functions
제출 요령
작성한 source file(py)과 실행결과(pdf)를 zip으로 압축해 제출

EX-3. Lists (3/21)

http://openbookproject.net/thinkcs/python/english3e/lists.html#exercises 의 문제 5 ~ 10 에 대한 code를 작성하라.

EX-4. String (3/21)

http://openbookproject.net/thinkcs/python/english3e/strings.html#exercises 에서 문제 1 ~ 13 에 대한 code를 작성하라.

EX-5. OOP2 Notebook 완성 (4/10)

4/10일 강의한 notebook을 완성해서 제출하라. https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/oop2.ipynb

참고 개인 컴퓨터에서 Jupyter notebook의 사용
(Anaconda 패키지가 설치되어 있어야 함)
  1. 이 문제를 여러분 각자의 컴퓨터에 download 받고
    File >> Download as >> Notebook (.ipynb)
  2. 이 파일을 여러분 개인 계정 아래로 옮긴다. (Jupyter Notebook은 자신의 계정 폴더 아래만 access하게 제한한다.)
  3. 여러분 컴퓨터에 설치된 Jupyter Notebook 서버를 실행한다. 그러면, 서버 창이 뜬 후, browser에 Jupyter 창이 뜬다. 여기가 Jupyter Home directory이다. 여기에서 해당 .ipynb 파일을 찾아 클릭하면, 새 tab에서 노프북 파일을 뜨게 된다.

결과가 노트북 파일 처음부터 끝까지 한번에 잘 실행됨을 보이기 위해 Kernel을 Retart하고 모든 Cell을 순서대로 run 시키자. 이 때의 file을 결과로 제출해야 한다.

Kernel >> Restart & Run All

EX-6. Lab. NP Getting Started (5/25)

Lab guide를 다운받아 지시에 따라 실행해보고 답하시오.

Programming Assignments

PA-1. Game using Turtle Graphics (3/18까지, 2인 1조)

2인 1조로 random하게 조가 구성되어 있다. (e-class 팀프로젝트 참조) Turtle graphics를 이용하여 게임을 창안하고 구현하라. ....

PA-2. English Composition (3/25까지)

쇼핑 바구니에 쇼핑한 과일 종류별로 몇 개 있는지 묘사하는 완전한 영어 문장을 완성하여 return하는 함수 sentence(basket)을 작성하라.

문제

PA-3 Word Frequency (4/1)

다음 문제에 답하라. (2인 1조로 새로 팀이 random하게 구성됨)

https://np.hufs.ac.kr/user/ias/notebooks/Public/PA/PA_Word_Frequency.ipynb

팀장만 제출할 수 있다. 팀장은 자율적으로 정해서 e-class에 등록하고 결과물을 제출한다.

PA-4 HTML,CSS,JAVASCRIPT (4/9 까지)

팀프로젝트의 웹_HTML,CSS,JAVASCRIPT 프로젝트에 첨부된 .pdf를 참조하여 문제에 답하라. (2인 1조로 새로 팀이 random하게 구성됨) (e-class 팀프로젝트 참조) 팀장만 제출할 수 있다.


팀장만 제출할 수 있다. 팀장은 자율적으로 정해서 e-class에 등록하고 결과물을 제출한다.

PA-5. OOP (4/14)

주어진 Jupyter notebook의 질문에 따라 답안을 작성하라. 2인 1조로 수행한다.

SMS Store 
https://np.hufs.ac.kr/user/ias/notebooks/Public/PA/PA_SMS_Store.ipynb
Playing Cards
https://np.hufs.ac.kr/user/ias/notebooks/Public/PA/cards.ipynb
  • Blackjack 이전까지만 수행함.

PA-6. Regular Expressions (5/4)

미국에서는 해마다 태어난 아이들에게 가장 많이 짓는 이름과 ranking을 웹에 공개하고 있다. 다운로드한 html 파일들이 연도별로 다음 이름으로 제시되어 있다. baby1990.html, ...

주어진 file을 읽어 이름 순으로 sorting된 이름-랭크로 구성된 string들의 list를 만들어 return하는 function extract_names를 정의하라. 단, 이 리스트의 맨 처음은 연도로 시작한다. 예를 들어, ['2006', 'Aaliyah 91', 'Abagail 895', 'Aaron 57', ...]

그리고, command line argument에 따라 결과를 printing하거나 summary file로 저장하는 main function을 완성하라.

Command line usage
python babyname.py [--summaryfile] file [file ...]
  • --summaryfile flag가 있으면 '.sum'으로 끝나는 이름 ('filename.sum')으로 저장한다. 없으면 화면에 print한다.
  • file은 여러개가 input으로 주어질 수 있음을 명심할 것.
Code 및 html 파일
babynames.zip

PA-7. 아두이노/라즈베리파이 실습1 (6/5)

프로젝트 팀원 끼기 2인으로 조를 구성한다. (e-class 팀프로젝트 참조) eclass에 첨부된 강의자료를 읽어 아두이노/라즈베리파이 기초 센서 제어 및 시리얼 통신하는 방법을 배우고, 라즈베리파이 강의자료 27page Assigment를 수행하라. 조별로 report를 제출하여야 한다.

PA-8. 아두이노/라즈베리파이/소켓 실습2 (6/11)

현재 프로젝트 팀으로 과제를 수행하면 된다. 과제는 팀장만 제출한다. (e-class 팀프로젝트 참조) eclass 팀프로젝트를 참조해보면, 라즈베리소켓.ptf에는 과제설명과 제출요령이 쓰여져 있다. python with sqlite3는 과제에 필요한 sqlite3 설명 내용이 들어있다. 이 두 파일을 잘 참조하여서 과제를 완성하시오

Team Project

PyGame (5/7)

새로운 게임을 창안하여 구현하라.

팀구성
4인 1팀으로 random하게 구성
제출물
발표자료(PPT), source code (5/7까지)
발표 및 demo
5/8 17:30 - 19:30, 5213 강의실

Project X

팀구성
6인으로 팀을 구성하여 Team Project를 진행한다. 주제는 제한이 없다.
팀명(영문), 팀원, 팀장을 e-class에 제출
평가요소
팀 평가와 개인평가는 4:1
팀 평가(80%): 제안서, 기술의 진보성, 프로젝트의 난이도, 완성도 및 활용가능성, 발표, 보고서의 품질 등
개인 평가(20%): 팀 공헌도 (상대평가)
제안서 작성 및 발표 (5/29)
PPT로 작성하여 5/28일 자정까지 제출한다.
5/29 수업시간에 발표한다.
최종결과 발표 및 시연 (6/25)
6/24일 자정까지 최종보고서, 발표자료(PPT)를 제출한다.
6/25일 발표 및 시연. 10:00 - 12:00
최종결과를 시연하면서 발표한다.
제출물: PPT, 보고서(PDF), source code, project history (e-class에 제출)
팀 소스관리 repository

활용 장비

Arduino

Arduino 강좌
아두이노 강좌 - 1-1강 소개와 프로그래밍 기초 https://www.youtube.com/watch?v=fiZc5avtMCw
Arduino H/W 및 IDE 설치
Getting Started with Arduino on Windows [1]
실험 따라하기
가치창조기술 wiki의 아두이노 강좌 [2]
기타 교육자료
Introduction to Arduino - from Spakrfun [3]
MIT Arduino Tutorial #1 동영상 [4]
Spooky Projects – Introduction to Microcontrollers with Arduino [5]
Arduino Tutorial - from Sparkfun [6]
Arduino 관련 부품
ArtRobot [7]

RaspberryPi 3

Download Media:RaspberryPi3.pdf 라즈베리파이 3 구성
라즈베리파이 개발환경

팀 구성

5인 1팀으로 프로젝트 팀을 구성하라. 자세한 사항은 e-class 팀프로젝트 참조하여 등록한다. 5인 1팀으로 총 9개팀.

과거 Team Project 결과물

2017 인터넷응용 Team Project 결과물

2016 인터넷응용 Team Project 결과물