Lectures/IA/2017

From MCLab
Jump to: navigation, search

Contents

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

평가

  • Quiz(Mid, Final)/Coding Test (20%)
  • 과제물 (15%)
    Lab Reports - 매회 10점 만점
    Programming Assignments - 매회 20점 만점 (난이도에 따라 조정될 수 있음)
  • TeamProject( TeamProject 팀간 상호평가 40%, 동료공헌도 평가 15%, 팀장평가 10%)

조교

박경수, phone : 010-2592-0887, ks08_18@naver.com, 공대 425호

공지사항

과제물 제출요령
별도의 명기 없으면 PDF 파일로 e-class에 제출하세요. (보통 강의 전날 자정에 마감됨)
A+, A0, ...D0, F 로 평가되며, 10점 만점 점수로 환산하면 10, 9, ..., 3, 0 (미제출인 경우 F)
주의사항-지각제출을 허용하지 않습니다.

Coding Exam

  • 2017. 03. 23 프로그래밍 테스트
  1. ProgrammingTest2017

Midterm Exam

  • 2017. 04. 17 중간평가(eClass에서 14:00~15:00 진행)
  1. MidtermExam2017

Final Exam

  • 2017. 06. 12 기말평가(eClass에서 14:00 ~ 15:00 진행)
  1. FinalExam2017

강의자료

Introduction to Python Programming

Python, IDE Install
  1. OS별 설치(2.7x version을 설치
  2. Python IDE(Pycharm Free Community version)설치
    Setup PyCharm and Virtual Env
Handouts
  1. Python Programming - Part I
  2. Python Programming - Part II
  3. Python Programming - Part III
  4. Using Django Framework - Part I
  5. Using Django Framework - Part II
  6. Using Django Framework - Part III
참고자료
  1. Computer Networks Chapter 2 Application Layer
  2. Appendix B. Reference Tables in Core Python Application Programming
  3. Python 2 vs Python 3
On-line Books
  1. Allen Downey, Think Python, O'Reilly. On-line free book, 한글 번역판 (편집 중)
  2. 점프 투 파이썬
  3. 왕초보를 위한 Python 2.7
On-line Tutorials
  1. Python Tutorial, tutorialspoint http://www.tutorialspoint.com/python/index.htm
    PDF version
  2. Official Tutorial https://docs.python.org/2/tutorial/index.html
Manual

Advanced Python Programming

Handouts
  1. Tkinter GUI
  2. Useful Modules, 한글처리
  3. Regular Expressions
Unit Testing with Python

HTML5, CSS, Javascript

모던웹 표준 HTML5와 반응형 웹의 구조 및 사용에 대한 지식을 습득하고 활용방안에 대해서 Pair Project를 진행합니다. 참고 site: http://www.w3schools.com/html/default.asp

Web Application: Server-side Programming

Handout
  1. Web Application Programming in WSGI
    Download Web App Examples
Web
Web Applications

Django Framework

준비사항 - 미리 install하세요.
Download and install django
Django REST framework QuickStart http://www.django-rest-framework.org
동영상 강의 참조

Python Network Programming

Handout
  1. Network Programming - Introduction
    download Lab. NP - Introduction (ZIP)
  2. Client-side Programming
    download Lab. Clients
  3. Threads
    download Lab. Threading
  4. Server-side Programming - updated in 5/25/2016
  5. SQL Database Interfaces
참고 자료

소스형상관리

Bitbucket-SourceTree
Android 개발이슈

Socket API and UNIX Network Programming in C

Handouts
UNIX Network Programming (PDF)
참고자료
POSIX Thread Programming, https://computing.llnl.gov/tutorials/pthreads/
Multithreaded Programming, http://randu.org/tutorials/threads/

Python Books and Sites

Lab 1, 2 String Test(Slicing, Offset, Find etc..)

donwnload file (PDF)
[:] 처음부터 끝까지 전체 시퀀스 추출
[start:] start 오프셋부터 끝까지 시퀀스를 추출한다
[:end] 처음부터 (end-1) 오프셋까지 시퀀스를 추출한다
[start:end] start 오프셋부터 (end - 1) 오프셋까지 시퀀스를 추출한다
[start:end:step] step만큼 인덱스를 건너뛰면서, start 오프셋부터 (end -1)오프셋까지 시퀀스를 추출한다
:: ---> step keyword
Lab #1, Test String Slicing
 source_text = "did you have launch", find_char = "l"
 1. 상기 두 파라미터를 입력받은 후 find_char를 찾는 function을 구성하세요
 2. 상기 두 파리미터를 입력받은 후 find_char가 source_text에서 몇번 나오는지 출력하세요.
Lab #2, Test String Slicing
text = 'mclab_test_string'
상기 text의 문자열을 다음과 같이 출력해보세요
        s
       est
      test_
     _test_s
    b_test_st
   ab_test_str
  lab_test_stri
 clab_test_strin
mclab_test_string

Lab3,4,5,6 - Function Test

donwnload file (PDF)
Lab #3, 홀수와 짝수를 판별하도록 바꿔보세요
Lab #4, 두 정수 값을 입력 받고 그 크기를 비교하여, 작다, 크다, 같다 를 프린팅 하는 함수를 만들어 실행해보세요
sample is below, 
def print_conditional_exec(x):
    if x > 0:
        print 'x is positive number'
    else:
        print 'x is negative number'
print_conditional_exec(10)


Lab #5 상기 countdown()의 내부로직을 for loop 과 while loop 으로 수정하세요
Lab #6 상기 lab에서 100을 입력받으로 받고 50까지 countdown이 되었을 경우 loop을 탈출시켜보세요(break)
sample is below,
def countdown(n):
    if n <= 0:
        print 'fire!!'
    else:
        print n
        countdown(n-1)
countdown(10)

Lab 7 Container(List, tuple, set, dict, parallel looping ...)

donwnload file (PDF)
source_string = "mclabtestdictionary" 에서 각각의 케릭터가 몇번 나오는지 dictionary를 이용해 출력하시오
output format { 'm':1, 'c':2, ...}


Lab 8 Class 이해하기 Part-1

donwnload file (PDF)
class 이해하기
class는 무엇으로 구성되어 있는가?
객체란 무엇인가?

Lab 9 Class 이해하기 Part-2

donwnload file (PDF)
donwnload file (PDF)
donwnload file (PDF)
class를 구성하는 Instance Method, Class Method, Static Method에 대해 자세히 이해해보자.


Lab 10 JSON 이해하기

donwnload file (PDF)
JSON(JavaScript Object Notation)의 약자로 JsavaScript에서 객체를 만들 때 사용하는 표현식을 의미합니다.
JSON Ref. https://opentutorials.org/course/1375/6844
JSONLine(JSON Validator) https://jsonlint.com


Lab 11 Data(File, CSV) Handling

donwnload file (PDF)
File handling library
fileobj = open(filename, mode)
mode - [r, w, x(파일이 존재하는 경우만 사용되는 것을 제외하곤 w와 동일, a] + [t(text), b(binary)]


Lab 12 Comprehension and closure(First-class citizen)

donwnload file (PDF)
List Comprehension
format : [표현식 for 항목 in 순회 가능한 객체]
             [표현식 for 항목 in 순회 가능한 객체 if 조건]

dictionary Comprehension
{키표현식 : 값표현식 for 표현식 in 순회 가능한 객체}

tuple은 comprehension이 없습니다.
Closure -----------------
In programming languages, closures (also lexical closures or function closures) are techniques
for implementing lexically scoped name binding in languages with first-class functions.
Operationally, a closure is a record storing a function[a] together with an environment:
a mapping associating each free variable of the function (variables that are used locally, but defined in an enclosing scope)
with the value or reference to which the name was bound when the closure was created.

A closure—unlike a plain function—allows the function to access those captured variables through the closure's copies of their values
or references, even when the function is invoked outside their scope.


Lab 12 Lambda Function

donwnload file (PDF)
lambda는 홀로 사용되기 보다는 다음의 세가지 유형에 자주 사용됩니다.
1. map을 통해서 많이 사용됩니다. 
List, [m, n, p]
Function, f()       ==>    map(블랙박스라 생각하세요) ===> New list, [f(m), f(n), f(p)]

2. Filter와 같이 사용됩니다. 
List, [m, n, p]         ===>   filter ====> New list [m,n]
Condition c()

3. reduce를 사용해 봅시다.
Applies same operation to items of sequence
Uses result of operation as first param of next operation
Returns an item, not a list

List, [m,n,p]     ====>    reduce ====> f(f(m,n), p)
Function, f()

Programming Assignments

PA-1. Calculator Impl. (3/27까지)

Step 1 : 두 값을 입력받고,계산기의 기능 또한 입력받는다 Input(value1, value2, mode = [+, -, *, / ]
출력은 계산된 값을 디스플레이 합니다
필수 : loop을 돌면서 출력 값이 화면에 디스플레이 된 후 다시 입력 받을 수 있게 합니다
참고 : 유저가 두 개의 값을 입력받도록 User interface를 만들 것
Step 2 : 계산기를 사용하는 사람이 n명입니다. n명이 계산한 History를 dictionary로 관리 할 수 있게 수정하세요
dictionary에서는 다음과 같이 기록합니다.
{
   'user1_name':[value1,value2,mode=[+,-,*, /], datetime], 
   'user2_name':[value1,value2,mode=[+,-,*, /], datetime], 
  ...
}
 
Step2의 부가설명은 다음과 같습니다.
$>input user name : xxxx
$>input process type : 1 or 2 [1:calculator, 2:management]

* process type이 1일경우, Step1의 기능을 수행합니다. Step1의 과정이 종료된 후, 
  To be continue?(Y or N) 를 출력해서 계속 수행할지 물어보게 합니다.
  - Y일 경우, input user_name으로 사용자 입력을 기다립니다.
  - N일 경우, 프로그램을 종료합니다.
  process type이 2일경우, 그 동안의 히스토리를 출력하고, 메뉴선택 $>input user name : xxx 으로 돌아갑니다.


Step1,2의 NS-Chart를 꼭 제출하세요

PA-2. Make game on console Impl. (4/27까지- 중간고사로 인한 일주일 연장)

elcass 에서 프로토타입을 다운받아, 
Step 1 : 상대방을 dection하는 알고리즘을 설계/구현하여 running한다(상대방을 공격하는 function포함) 
Step 2 : 현재 하나의 종족을 위한 클래스만 구성되어 있으며, 이것을 1개이상의 종족으로 확장하여, step1을 수행할 것.

Team Project

팀구성
5인 내외로 팀을 구성하여 Team Project를 진행한다. 주제는 제한이 없다.
팀명(영문), 팀원, 팀장을 e-class에 제출
평가요소(팀간 상호평가 40%, 동료공헌도 평가 15%, 팀장평가 10%)
최종결과 발표 및 시연 ()
최종결과를 시연하면서 발표한다.
제출물: PPT, 보고서(PDF), source code, project history (e-class에 제출)
팀 소스관리 repository
Download 계획서 양식(예시)Media:busiform.pdf
Download 계획서 양식Media:BusiModelForm.hwp

팀 구성

  • 1팀 : 이종빈, 박재범, 이소은, 이채은, 권소연(T)
  • 2팀 : 김경률, 오제은, 윤은상, 정다운, 이승욱(T)
  • 3팀 : 강영규, 김동현, 박원종, 박의석, 심지영, 윤보영, 이재은, 황병윤(T)
  • 4팀 : 안준석, 이경민, 이소향, 이하은, 전철민, 채원형(T)
  • 5팀 : 김준호, 김철환, 이재혁, 정재원, 한덕희(T)
  • 6팀 : 이동열, 이성윤, 정상수, 정서경, 차지윤, 김건우(T)

최종발표 및 시연

발표
팀별 10분
시연회
발표가 모두 끝난 후 15분간
제출물
보고서 (맨 마지막 장은 부록으로 source code list 첨부)
버전관리 이력
동료평가 실시

Team Project 결과물

2017 캡스톤디자인 Team Project 결과물

과거 인터넷응용 Team Project 결과물

2016 인터넷응용 Team Project 결과물

참고자료

Cygwin

Ubuntu

Apache, MySQL, and PHP

WireShark Protocol Anaylzer

  • WireShark download [1]:
  • WireShark 사용법 [2]