Lectures/IA/2020

From MCLab
Revision as of 12:49, 30 June 2020 by Jphong (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Contents

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

교과목개요 및 학습목표

Python 프로그래밍을 익히고 인터넷 응용 원리를 이해하고, Socket API를 배워 이를 바탕으로 인터넷 상의 응용 프로그램의 구현 능력을 실습을 통하여 익혀 현장에서의 실무능력을 키우고, 새로운 네트워크 응용이나 서비스를 설계하고 개발하는 능력을 배양한다. 또한, 3학년 2학기 정보통신종합설계 과목에서 프로젝트 수행하는데 필요한 개발능력을 갖춘다.

  • Python Programming
  • Web Programming: Client-side and server-side
  • Python Network Programming
  • Data science

교재 및 참고문헌

지정된 교재는 없다. Handout과 관련 link들 참고

평가

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

조교

박영준, phone: 010-6432-6752, mailto:youngjun108059@gmail.com
이호찬, phone: 010-2500-1925, mailto:201502766@hufs.ac.kr

공지사항

강의자료와 과제물 공지 방법

강의자료와 과제물 등은 항상 홈페이지에 먼저 올려 놓을 겁니다. 과제물은 통상 e-class로 제출하게 되어 있으니 e-class에도 복사된 내용이 게시됩니다.

재택 수강기간 동안 특별한 필요가 있을 때, e-class 공지사항에 공지할 수 있습니다.

3/19일 강의와 숙제

On-line 동영상 강의 준비에 여러 문제가 있어서 다음과 같이 시행합니다.

강의 참여 방법

  1. 강좌 홈페이지의 class overview를 읽는다.
  2. Python을 철치하고, IDLE Shell을 실행시킨다.
    홈페이지 Tools and Environments 참고하거나 강의자료 앞부분 참고
  3. 홈페이지 강의자료-Python Programming 에 나열된 3/19일자 강의 자료 'Quick Python Tour'를 읽으면서 IDLE Shell을 따라해 보면서 익힌다.
  4. 질문이 있으면, e-class의 '질의응답' 란 또는 '토론' 란에 올리면, 교수/조교가 답할 것입니다. 급한 질문이면 조교에게 전화 거세요.

숙제

  • Ex-1을 공지했음. 3/25(수) 자정 이전에 e-class에 제출해야 합니다.

Online 강의

3/19

강의노트
  1. Quick Python Tour (PDF)
과제
Ex-1

3/26

강의노트
  1. Functions (PDF)
  2. Data Structures (Notebook version) https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/data_structures.ipynb
강의
  1. Python Funtions - Part I https://youtu.be/eHrmFR_VDYY
  2. Python Functions - Part II https://youtu.be/G5MgY0icRvk
  3. Anaconda 3와 Jupyter Notebook 설치 및 사용법 - 박영준 조교 https://youtu.be/xCL1UsfRBpg
  4. Data Structure (I) https://youtu.be/BLGUjcqpyWg
과제
Ex-2, Ex-3

4/2

강의노트
  1. Data Structures (Notebook version) https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/data_structures.ipynb
강의
  1. Data Structure (II) https://youtu.be/IxOSmAMOPOw
  2. Data Structure (III) https://youtu.be/fD2lHdHoH-4
  3. Turtle 설명과 실습 - 박영준 조교 https://youtu.be/MQNVdEqcdRQ
  4. Ex-1,2 Python Data Structure, Function 문제풀이 - 이호찬 조교 https://youtu.be/2jNVqnI9oiA
  5. Ex-3 Function 문제풀이 - 박영준 조교 https://youtu.be/P4Db2eZ71Iw
  6. Visual Studio Code IDE 설치 및 사용하기 - 이호찬 조교 https://youtu.be/OMxLRcw4-io
과제
Ex-4, PA-1, PA-2

4/9

강의노트
  1. Generators https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/generator.ipynb
  2. Modules https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/modules.ipynb
  3. Files and Interchange Formats https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/files.ipynb
  4. Exceptions https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/exceptions.ipynb
강의
  1. Generators https://youtu.be/KagHk0EW1-4
  2. Modules https://youtu.be/DRz4udntyDs
  3. Files and Interchange Formats https://youtu.be/RfL2zbZTuzs
  4. Exceptions https://youtu.be/bQNGs7Atu6M
  5. VsCode에서 Git, GIthub 사용법 - 이호찬 조교 https://youtu.be/lwxD5JygrGo
    GitHub에서 public repository는 무료. 학생이면 private repository도 무료로 쓸 수 있다. 학생이면 당연히 학생용이 유리하다. 아래 link로 들어가서 가입하세요. -jphong
    GitHub Education - Student Development Pack 가입하기
  6. PA-1 Word Frequency 문제풀이 - 박영준 조교 https://youtu.be/uqhc8Nd79Is
과제
Ex-5, Ex-6, PA-3

4/16

강의노트
  1. OOP (I) - Classes, Instances, and Inheritance https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/oop1.ipynb
  2. OOP (II) - Magic Methods and Overloading https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/oop2.ipynb
강의
  1. OOP (I) - Classes, Instances, and Inheritance https://youtu.be/KDbRMkorkcU
  2. OOP (I) - Classes, Instances, and Inheritance (계속) https://youtu.be/bz2BpQQc3T8
  3. OOP (II) - Magic Methods and Overloading https://youtu.be/u5ONEbKLUbw
  4. Git Kranken 및 VSCode Git Extensions 소개 - 이호찬 조교 https://youtu.be/sj_x1glRq7E
과제
Ex-7, PA-4
Quiz
eclass에서 실시 17:30부터 13분간 26문제 풀기 (객관식)

4/23

강의노트
  1. OOP(III) - Class Interface Techinques https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/oop3.ipynb
  2. Git 소개
  3. PyGame Example http://openbookproject.net/thinkcs/python/english3e/pygame.html
    PyGame official site https://www.pygame.org/docs/
    PyGame Tutorials http://pygametutorials.wikidot.com/tutorials
    OO로 구현하는 pygame tutorial. Python 2 code이나 print 등 조심.
강의 ( eclass에서 시청해야 출석 인정됩니다)
  1. OOP (III) - Class Interface Techniques https://youtu.be/olce1OfKNSs
  2. Introduction to Git https://youtu.be/uI9OVZFZ2Ds
  3. PyGame, 박영준 조교 https://youtu.be/EpOXZ7xjKxI
  4. ex_list_comprehensions 풀이,이호찬 조교 https://youtu.be/ONhlIx8NJQg
과제
Ex-8, Ex-9, PA-5
Team Project가 공지되었습니다. 개별적으로 준비하고, 팀원이 지정되면 팀으로 프로젝트 수행하세요.

4/30

강의노트
강의
  1. Git (I) - branch https://youtu.be/wEewus8C-fc
  2. Git (II) - working on branch https://youtu.be/0pQEQKgA-2g
  3. Git (III) - collaboration https://youtu.be/ekyRlEmthkw
  4. Git (IV) - Undo 하기 https://youtu.be/hKCbjtYXdoM
  5. OO Pygame과 GitHub 토의 - https://youtu.be/_OjZf1ScHyk
  6. Ex-6 Generators 문제풀이 - 박영준 조교 https://youtu.be/D6IGf8Db00E
과제
Team project

5/7

강의노트
  1. Regular expressions https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/regexp.ipynb
    See also
    https://developers.google.com/edu/python/regular-expressions
    https://www.python-course.eu/python3_re.php
    http://python-textbok.readthedocs.io/en/1.0/Useful_Libraries.html#matching-string-patterns-re
  2. Decorators https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/decorators.ipynb
  3. Python and SQL: SQL Database Interfaces
    SQLite, MySQL https://www.python-course.eu/sql_python.php
    Tools: DB Browser for SQLite https://sqlitebrowser.org/
  4. Pytest - Quick Guide https://www.tutorialspoint.com/pytest/pytest_quick_guide.htm
    Pytest official site https://docs.pytest.org/en/latest/
    Unittest http://www.drdobbs.com/testing/unit-testing-with-python/240165163
  5. Javascript [실습] Todo 만들기, 이호찬 조교 - https://github.com/hochan222/pureJavascript-Todo-List/tree/master
강의
  1. Regular Expressions https://youtu.be/R21Q0YP0lWs
  2. Decorators https://youtu.be/sxFIx87-wnM
  3. SQL Database Interface https://youtu.be/gx3Qkm81Uwg
  4. Pytest https://youtu.be/3FK8-LCBQSk
  5. Javascript [실습] Todo 만들기, 이호찬 조교 - https://youtu.be/f9C0_WgEGZg
  6. Javascript [실습] Todo 만들기2, 이호찬 조교 - https://youtu.be/BO8tmISSnMI
과제
PA-6, PA-7
자습
  1. https://www.w3schools.com/ 을 보며 html을 학습하세요. 적어도 form 까지는 알아야 합니다. PA-7 수행하는데 필요함.

5/14

강의노트
강의자료 - Web Development 참고
강의
  1. Web, fetching Web pages: urllib https://youtu.be/x5xZklFfRGc
  2. fetching web pages: requests https://youtu.be/luQKHu6kZPs
  3. Web Crawling https://youtu.be/GLh_e2-VE2M
  4. Django 시작하기 (I) https://youtu.be/xOFnJfPOLD4
  5. Django 시작하기 (II) https://youtu.be/YyV2UqkG6g4
  6. Django 개념 https://youtu.be/TBpSa_quYpU
  7. First Django App - Part 1 https://youtu.be/t2P3gRBfhc8
  8. First Django App - Part 2 https://youtu.be/0w6eTmDFUWo
  9. First Django App - Part 3 https://youtu.be/brZY--35V6U
과제
PA-8

5/21

강의
  1. First Django App - part 4: Generic view and HTML form https://youtu.be/IIeBKbqVqcE
  2. First Django App - part 5, 6, 7: testing, static files, template dir https://youtu.be/HzxixoD1nuM
  3. Web과 Django: 개념 review https://youtu.be/0mNYOJKErBI
참고
What's the difference between Git Revert, Checkout and Reset? [1]

5/28

강의

두 번째 장고앱 - Local Libary, MDN web docs: Django Web Framework, [2]

  1. Data Modeling 하기, https://youtu.be/sogymirExlg
  2. Admin에서 Database 관리하기, https://youtu.be/vg025f7ESsY
  3. 도서관 View와 Template 만들기, https://youtu.be/eQvR22WG__M
  4. Sesssion, Authentication/Authorization: 개념, https://youtu.be/0Cwlx2_HA2U
  5. Sesssion, Authentication/Authorization: 실제 , https://youtu.be/9zv2dMWkl98
  6. Form과 Permission, https://youtu.be/7alQzBWUDzQ
  7. Form과 Sign Up(가입하기), https://youtu.be/FEWubiy76iM

Create Advanced User Sign Up View in Django | Step-by-Step, [3]

  1. Sign up - 가입하기
과제
PA-9
팀프로젝트 시작
최종 팀프로젝트 수행하기 위한 팀이 구성됩니다. 이번 주 부터 시작하세요.

6/4

강의
  1. Social 계정으로 login하기: django-allauth 박영준 조교 https://youtu.be/2oTtswFyE0g
    @jphong: 지난 주 강좌에서 'sign up'(가입하기) app을 만들고 'accounts/' 로 route를 삼았습니다. 이것과 비교한다면, 미리 만들어 놓은 Djagno app인 allauth는 python package로 설치할 수 있고, settings.py에 app으로 등록하면 사용할 수 있습니다. 여기에는 site local하게 login/logout/signup할 수 있고, 또한 Google 등 OAuth provider의 social account로 login/logout을 가능하게 하는 code가 들어 있다.
    OAuth란 제3의 앱(consumer, 여러분이 개발하는 Django app)이 user를 대신하여 service provider에게 서비스를 요청할 수 있도록 자원 접근 권한을 위임하는 개방형 표준화된 방법이다.
    OAuth 표준을 따르면, 여러분이 개발 중인 application은 Google등의 API를 이용하여 사용자 인증할 수 있고 Google등이 제공하는 서비스를 사용자를 대신해서 access할 수 있게 인가(authorization)받을 수 있다. OAuth 측면에서 보면, Google 등 수억명의 사용자를 보유한 거대 플랫폼 사업자는 사용자 인증서비스를 제공하는 provider이고, 여러분이 만들고 있는 application(또는 Django site)은 이 서비스를 이용하려면 provider의 일개 client가 되어야 한다. 따라서, 여러분의 site가 Google developer service를 이용할 수 있는 client(하나의 사용자)임을 먼저 인가받아야 한다. 이 client는 service provider의 API를 준수하여 요청해야 한다.
    박영준군 강의 내용 중에 혼돈을 피하기 위해, 이 강좌에서 만든 'login' 이라는 app은 여러분이 개발 중인 app이고, social-network라는 site(project)명은 여러분이 만들고 있는 project이다. 여러분이 Django project를 개발하고 있다면, 다음과 같이 OAuth로 사용자 인증을 구현할 수 있다:
    1. package를 설치하고 (pip install django-allauth)
    2. settings.py에 allauth app들을 등록하고, provide들(이것도 Django app으로 구현되었음)도 등록하고,
    3. url configuration에 route를 연결해 주면 충분합니다. (물론 client id를 받아 admin에서 저장 필요)
    참고1: Django allauth installation: [4]
    참고2: Social Login - 구글 로그인 Practice: [5]
    참고3: [Django] OAuth2 소셜 로그인 기능 달기: [6]
  2. Introduction to Network Programming, https://youtu.be/HvCzp-A2Wps
  3. First Socket Program, https://youtu.be/pcHT8AvCKmQ
과제
없음. 팀프로젝트 수행

6/11

강의
  1. 프로젝트 제안서에 대한 코멘트, https://youtu.be/IU_6SjEFytI
  2. Echo client/server로 시작하기, https://youtu.be/AnbJ0nd5PSA
  3. Socket API for TCP, https://youtu.be/0KfLpscvXds
  4. Client-side socket programming I, https://youtu.be/UGZmSahLCFc
  5. Client-side socket programming II, https://youtu.be/8qHFZgSHLVQ

6/18

강의
  1. Server-side socket programming (I), https://youtu.be/BxtcpIxkOUc
  2. Server-side socket programming (II), https://youtu.be/5KwIGxl7A6M
  3. Client/Server for IoT, HTTP protocols and clients using requests module, https://youtu.be/0VfAuTih2zs
  4. Remote Development, https://youtu.be/NFmDgvXN7MY

6/25

팀프로젝트 발표 및 데모
14:30 - 17:45
코딩시험
18:00 - 20:30

강의자료

Python Programming

Introduction to Python

  1. Quick Python Tour (PDF) - 3/19
  2. Functions (PDF) - 3/26
  3. Data Structures (Notebook version) https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/data_structures.ipynb - 3/26, 4/2
    • np.hufs.ac.kr 서버에서 서비스되는 Jupyter Notebook 사용하기 위해서는 np 서버 계정 필요. e-class 공지사항에 공지됨
    • 내용을 read, execute 할 수 있지만, 수정하거나 실행 결과를 저장할 수는 없다. 다음과 같이 다운로드해서 개인 컴퓨터에서 Jupyter Notebook을 띄워 ipynb 파일을 보거나 수정하세요.
      File>>Download as>>Notebook 으로 .ipynb 파일로 다운로드 가능. (html, pdf 등으로도 가능)
  4. Generators https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/generator.ipynb
  5. Modules https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/modules.ipynb
  6. Files and Interchange Formats https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/files.ipynb
  7. Exceptions https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/exceptions.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

Object-Oriented Programming

  1. OOP (I) - Classes, Instances, and Inheritance https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/oop1.ipynb
  2. OOP (II) - Magic Methods and Overloading https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/oop2.ipynb
    참고: A Guide to Python's Magic Methods
  3. OOP(III) - Class Interface Techinques https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/oop3.ipynb
  4. PyGame Example http://openbookproject.net/thinkcs/python/english3e/pygame.html
    PyGame official site https://www.pygame.org/docs/
    PyGame Tutorials http://pygametutorials.wikidot.com/

Advanced Python

  1. Regular expressions https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/regexp.ipynb
    See also
    https://developers.google.com/edu/python/regular-expressions
    https://www.python-course.eu/python3_re.php
    http://python-textbok.readthedocs.io/en/1.0/Useful_Libraries.html#matching-string-patterns-re
  2. Decorators https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/decorators.ipynb
  3. Python and SQL: SQL Database Interfaces
    SQLite, MySQL https://www.python-course.eu/sql_python.php
    Tools: DB Browser for SQLite https://sqlitebrowser.org/
  4. Pytest - Quick Guide https://www.tutorialspoint.com/pytest/pytest_quick_guide.htm
    Pytest official site https://docs.pytest.org/en/latest/
    Unittest http://www.drdobbs.com/testing/unit-testing-with-python/240165163
  5. Functional Programming in Python
    https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/functional_programming.ipynb
  6. Multi-threaded programming
    threading — Manage Concurrent Operations Within a Process
    Threads, Lab. Threading
    https://www.tutorialspoint.com/python3/python_multithreading.htm

Web Development

참고: Learn web development, MDN web docs, https://developer.mozilla.org/ko/docs/Learn

Client-side

  1. HTML, CSS, JavaScript, https://www.w3schools.com/
    Javascript [실습] Todo 만들기, 이호찬 조교 - https://github.com/hochan222/pureJavascript-Todo-List/tree/master
  2. Fetching Internet Pages https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/http_requests.ipynb
    Requests package https://requests.readthedocs.io/en/master/
  3. Web Crawling https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/webcrawling.ipynb
    Beautiful Soup Documentation https://www.crummy.com/software/BeautifulSoup/bs4/doc/
    참고: Python Crawling(2019 update) - by 한민규

Server-side: Web Applications with Django Framework

Official documentation, https://docs.djangoproject.com/

  1. WSGI: Python Web Application Programming Interface
    Download Web App Examples
    Web Python http://wsgi.tutorial.codepoint.net/
  2. Python virtual environment 활용, https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/venv.ipynb
  3. Django 시작하기, https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/django_start.ipynb
  4. Django tutorial, https://np.hufs.ac.kr/user/ias/notebooks/Public/Handout/django_tutorial.ipynb
  5. 첫 번째 장고앱 작성하기, https://docs.djangoproject.com/ko/3.0/intro/tutorial01/
  6. 두 번째 장고앱 - MDN web docs: Django Web Framework, https://developer.mozilla.org/ko/docs/Learn/Server-side/Django
  7. Create Advanced User Sign Up View in Django | Step-by-Step, https://dev.to/coderasha/create-advanced-user-sign-up-view-in-django-step-by-step-k9m
Hosting Servers from Cloud
IaaS, PaaS
Amazon AWS 이해하기 - by 한민규
MS Azure

동영상 강의 참조

참고

Python Network Programming

강의자료와 code를 보려면, clone or download from github: https://github.com/jinpyohong/np.git

  1. Introduction to Network Programming
  2. Echo client/server로 시작하기: intro/
  3. Socket API for TCP
  4. Client-side socket programming sources
  5. Server-side socket programming sources
    참고: logging https://inma.tistory.com/136
    logging HOWTO https://docs.python.org/ko/3/howto/logging.html
  6. Client/server for IoT - example code
  7. HTTP client/server using socket - example code
참고 자료
  1. Socket Programming HOWTO https://docs.python.org/3/howto/sockets.html
  2. socketserver module – Creating network servers https://pymotw.com/3/socketserver/index.html
  3. Python 3.x: Threading vs Multiprocessing vs Asyncio https://code.luasoftware.com/tutorials/python/python3-threading-vs-multiprocessing-vs-asyncio/

Data Science using Anaconda

Clone or download Jupyter notebook files: https://github.com/jinpyohong/data_science.git

  1. numpy
  2. pandas
  3. Visualization with matplotlib
  4. Machine learning with scikit-learn

Tools and Environments

Installing Python 3 for Windows

Installing Anaconda 3

Git - source version control for teamwork

Pygame Installation

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

PowerShell 또는 cmd 창을 띄워 다음을 실행한다. (사용자만 사용하게 설치한 경우, 즉 C:\Users\user 아래에 python이 있은 경우)

python -m pip install pygame --user

모든 사용자가 실행할 수 있게 python이 설치되었다면 --user 는 생략한다.

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

python -m pygame.examples.aliens

WSL: Windows Subsystem for Linux 설치

개발자는 Linux를 잘 이용할 줄 알아야 한다. 소프트웨어 개발환경으로 좋을 뿐 아니라, 서비스를 배포할 서버나 클라우드는 통상 Linux를 사용하기 때문이다. Windows가 설치된 컴퓨터를 갖고 있다면, 가장 쉬운 접근법은 WSL을 설치하는 일이다.

[WSL Windows Subsystem for Linux - 초기 설치와 Ubuntu 배포판 설치] 참고

WSL은 WIndows 위에서 Linux를 emulation한다. 진짜 Linux를 설치하려면 Virtual Machine 관리자를 설치하고 여기서 Linux를 설치하면 된다. 그러면, 새로운 머쉰을 여러분 PC 속에 또하나 갖게 되는 것이다.

참고: Remote Development with VS Code

WSL2

2020년 5월 하순에 배포.

WSL 2는 WSL의 새 아키텍처 버전으로, Linux 배포가 Windows와 상호 작용하는 방식을 변경합니다. WSL 2의 주 목표는 파일 시스템 성능을 높이고 전체 시스템 호출 호환성을 추가하는 것입니다. 각 Linux 배포는 WSL 1 또는 WSL 2로 실행할 수 있으며 언제든지 전환 가능합니다. WSL 2는 기본 아키텍처를 대대적으로 개편한 것으로, 가상화 기술과 Linux 커널을 사용하여 새로운 기능을 지원합니다.

WSL 2는 Windows 10, 버전 2004, 빌드 19041 이상에서만 사용할 수 있습니다. Windows 버전을 업데이트해야 할 수도 있습니다.

WSL 2와 WSL 1 비교

참고: WSL 2 with Visual Studio Code

Making Your Own Ubuntu Machine on a PC

VM관리자인 Oracle의 VirtualBox를 먼저 설치하고, 이를 이용해서 Ubuntu VM을 설치한다.

다른 OS들로 VM으로 추가 설치 가능하다.

Exercises

Ex-1 Python Data Structure (3/25 23:59:59까지)

아래 문제를 download하고, IDLE Shell을 이용하여 interactive mode로 답을 발견하여 이 파일에 답하고 e-class에 제출한다.

문제
Media:Ex-1.docx

Ex-2 Loop and Function (3/29까지)

e-class에서 첨부한 Jupyter notebook file을 받아 code를 완성하여 e-class에 제출한다.

또는 이 링크를 따라 가서 File >> Download as >> Notebook file: https://np.hufs.ac.kr/user/ias/notebooks/Public/Exercise/ex2_loop_and_function.ipynb
참고 개인 컴퓨터에서 Jupyter notebook의 사용
(Anaconda 패키지가 설치되어 있어야 함)
  1. Jupyter notebook 파일(.ipynb)을 download하고, 여러분 개인 계정 아래로(예: MyDocument 폴더) 옮긴다. (Jupyter Notebook은 자신의 계정 폴더 아래만 access하게 제한한다.)
  2. PC에 설치한 Jupyter Notebook 서버를 실행한다. 그러면, 서버 창이 뜬 후, browser에 Jupyter 창이 뜬다. 여기가 Jupyter Home directory이다. 여기에서 해당 .ipynb 파일을 찾아 클릭하면, 새 tab에서 노프북 파일을 뜨게 된다.
결과물의 제출

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

Kernel >> Restart & Run All

주피터 노트북을 사용하려면 특수 키 몇 가지를 알 필요가 있다. Help >> Keyboard shortcut 참조

Ex-3 Functions(3/29까지)

Ex-2와 동일한 요령으로 수행한다.

https://np.hufs.ac.kr/user/ias/notebooks/Public/Exercise/ex3_functions.ipynb

Ex-4 English Composition (4/5)

문제에 답하여 e-class에 제출하라.

https://np.hufs.ac.kr/user/ias/notebooks/Public/Exercise/ex_English_Composition.ipynb

Ex-5 List Comprehensions(4/11)

문제에 답하여 e-class에 제출하라.

https://np.hufs.ac.kr/user/ias/notebooks/Public/Exercise/ex_list_comprehensions.ipynb

Ex-6 Generators(4/11)

문제에 답하여 e-class에 제출하라.

https://np.hufs.ac.kr/user/ias/notebooks/Public/Exercise/ex_generator.ipynb

Ex-7. Classes and Objects (4/19)

문제가 제공되어 있다. 이를 읽고 Visual Studio Code를 가지고 conding하고 script file과 결과 output file을 zip으로 묶어 eclass에 제출한다. (.ipynb 형식 파일은 제출 불가)

Ex-8. Set class에 methods 추가와 git 활용 (4/23)

OOP 3 강의노트에 적힌 대로 method 및 operator를 추가하고 시험하라.

vscode와 git을 활용하여 개발하고, GitHub의 repository URL link를 eclass에 적으면 충분하다.

Ex-9 Reading(4/24)

Yes, Python is slow and I don't care. <번역> 네 Python은 느립니다, 하지만 저는 신경쓰지 않습니다

위 글을 읽고 짤막한 소감을 적으세요.


Programming Assignments

PA-1 Word Frequency (4/5)

다음 문제에 답하라. (download 받고 개인 PC에서 수정하여 e-class에 제출)

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

PA-2 Turtle World (4/8)

첨부한 문제에 따라 coding해 본다. code와 실행결과 화면을 MS word 문서에 삽입하여 e-class로 제출한다.

Turtle World 문제 (MS Word)

PA-3 Find poker hands(4/13)

문제: https://np.hufs.ac.kr/user/ias/notebooks/Public/PA/PA_poker_hands.ipynb

Jupyter Notebook 사용하지 말고, vs code를 이용하여 code를 개발하고 시험하세요.

  • starter code: Jupyter Notebook에서 `Download as Python`으로 받으면 .py 파일로 변한된다.

참고: List of poker hands

PA-4. SMS Store (4/21)

제시된 문제를 읽고 Python script 파일과 test output 을 zip으로 제출하라.

PA-5 Poker Hands in OOP (4/28)

문제: https://np.hufs.ac.kr/user/ias/notebooks/Public/PA/PA_OOpoker.ipynb

문제를 읽고 vscode와 git을 이용하여 문제를 해결하라.

다음을 eclass에 제출한다.

source code는 github repository의 URL
시험결과를 보여주는 output file

PA-6 Testing Poker Hands (5/10)

Pytest 강의를 시청한 바와 같이 Pytest framework을 사용하여 tester를 개발하고, PASS 되도록 수정하여 제출하라.

제줄요령

source code와 test output을 함께 github에서 zip으로 download 받아 zip 파일을 제출한다.

Test output file 생성 방법: Git bash에서

$ pytest -v --cov=. > output.txt

PA-7 Client-side Web Programming: HTML, CSS, JavaScript (5/16)

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

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

PA-8 First Django App: polls (part 1 - 7) + news app (5/20)

  1. Django documentation에 있는 tutorial Writing your first Django app, Part 1 - Part 7까지 따라서 polls application을 완성한다.
    part 별로 browser 화면을 캡쳐하고, part 별로 git commit한다.
  2. Django at a Glance page를 참고하여 news app도 추가하라.
    browser 화면 캡쳐하고, 마지막으로 git commit한다.
제출요령
캡처한 화면은 <workspace>/images/ directory안에 저장한다. (source와 함께 commit)
e-class에 GitHub repository URL 만 제출하면 충분

PA-9 지역 도서관 (6/2)

https://developer.mozilla.org/ko/docs/Learn/Server-side/Django 를 따라 도서관 app을 완성하고, 추가로 Sign Up(가입하기)까지 구현한다. (제출요령: 전과 동일)


Team Project

Game 창안 (5/6)

PyGame 모듈을 이용하여 새로운 게임을 창안하고 가능한 OOP 방식으로 구현하라.

팀구성
3인 1팀으로 random하게 배정됨
work method
git을 이용한 on-line collaboration. 사회적 거리 유지해야 합니다. 같은 장소에 모여 작업하지 말기 바랍니다.
발표 및 demo
각 팀은 10분이내로 시연하면서 발표하는 동영상을 제작하여 YouTube에 올린다. ('일부공개' 로 설정해도 된다)
모여서 영상 녹화하지 말기 바랍니다. 한사람만 발표해도 무방.
제출물
git repository URL과 발표 동영상 링크를 eclass에 기재한다.

X Project

팀구성
4인~5으로 팀을 구성하여 Team Project를 진행한다. 주제는 제한이 없다.
평가요소
팀 평가와 개인평가는 4:1
팀 평가(80%): 제안서, 기술의 진보성, 프로젝트의 난이도, 완성도 및 활용가능성, 발표, 보고서의 품질 등
개인 평가(20%): 팀 공헌도 (상대평가)
제안서 작성 및 발표 (6/3)
팀장을 선출한다.
제안서를 PPT로 작성하고 이를 이용해 발표 동영상을 제작한다.
e-class에 PPT와 동영상 링크 제출
최종결과 발표 및 시연 (6/25)

최종보고서를 작성하여 발표하고 결과물을 시연하다.

제출물
  1. 최종보고서
  2. 팀 GitHub respository: URL만 e-class에서 제출시 입력
발표장소와 시간
학교 강의실에서 강의시간에 발표한다.


Team Project 결과물

2020 인터넷응용 Team Project 결과물

2018 인터넷응용 Team Project 결과물

2017 인터넷응용 Team Project 결과물

2016 인터넷응용 Team Project 결과물