2019 모두를위한코딩
IVIS wiki
Top
목차
강의 개요
- 컴퓨터 프로그래밍을 통해 문제해결을 할 수 있는 능력을 익힌다
- 파이썬 프로그래밍 프로그래밍을 통하여 기초적인 프로그래밍 기법을 익힌다.
- 기초적인 자료형의 이해와 프로그래밍의 원리를 익히도록 한다.
강의 진행
- 강사의 강의와 토론 그리고 프로그래밍 실습을 통하여 프로그래밍 기법을 익힌다
- 주당 3시간의 강의이며 이론 강의와 프로그래밍 실습을 병행한다.
- 강의실 : 51호관 310호실
- 강의시간 : 매주 월요일 오후 15:00-16:15, 수요일 오후 16:30-17:45,
강사
- 정보통신공학과 교수 박동규
- 이메일 : dongupak at gmail.com
- 수시상담 환영
강의조교(TA)
- 여러분의 강의를 도와줄 조교입니다
- 김동욱 조교님
강의 교재
- 파이썬
- 강사의 자체 제작 교재로 진행함 2020년 출간 예정
- 교재설명
창의적인 문제해결을 위한 프로그래밍 입문서. 이 책은 프로그래밍의 기본 개념을 정립하고 이를 바탕으로 문제를 해결할 수 있는 능력을 키우는 것에 초점을 두고 있다. 이를 위해 파이썬의 가장 쉬운 일부 기능만을 다루면서 다양한 문제해결 능력을 키워주는 예제와 실습으로 구성되어 있다.
과제관련
- 과제 제출 기간은 제출일로부터 일주일
- 각 문제 마다 아래 채점 기준을 만족 못할 시 한 문제당 1점씩 감점
- 과제 표지
- 매 표지 마다 과제 번호를 기입한다. ex) #1, #2, ...
- 스탠플러는 왼쪽 상단에 찍는다.
- 이론 문제
- 문제와 답을 적는다.
- 문제를 적지 않을 시 감점
- 타이핑 가능
- 스캔 불허
- 문제와 답을 적는다.
- 실습 문제
- 문제와 소스코드을 적는다.
- 문제를 적지 않을 시 감점
- 타이핑 가능
- 스캔 불허
- 실행 결과를 캡쳐하여 삽입한다.
- 배경은 흰색으로 한다.
- 코드에는 주석을 달도록한다.
- 주석 달지 않을 시 감점
- 각 실습문제마다 느낀점이나 어려웠던 점을 2문장 이상 적어서 제출한다.
- 느낀점을 적지 않을시 감점
- 풀지 못한 문제나 어려운 문제도 반드시 느낀점을 적도록 한다.
- 문제와 소스코드을 적는다.
- 과제 샘플
맥 활용
- Mac OS X.pdf
- Mac OS X 기초사용법 파일
- macOS 기초강좌 : https://www.youtube.com/watch?v=Hhf_i8k28V4
파이썬과 PyCharm 편집기 통합개발환경 설치
- 파이썬 설치하기
- PyCharm 편집 & 통합개발환경 설치하기
- google colab 환경 이용하기
- https://colab.research.google.com/ 접속하여 수행
- google 계정이 필요합니다.
1주차 강의
- 9월 2일, 4일(월요일, 수요일)
- 강사소개
- 강의내용, 교재등에 대한 소개
- 프로그래밍을 알아야 하는 이유
- 컴퓨터 프로그래밍의 간단한 역사등
- Code.org 활용( http://code.org/ )
- Code.org에서 계정만들기
- Code.org에서 리사와 함께 그림그리기
- 마인크래프트 문제 풀어보기
- 섹션 코드 : SYJNBB
강의자료(강의 소개, 1장)
- 강의자료 : 2019_모두를위한코딩강의소개.pdf
- 강의자료 : 1장_파이썬소개_원고.pdf
- 강의자료 : 1장_파이썬소개.pdf
과제 #1
- code.org에 계정만들기
- 안나 엘사와 함께하는 코드
- 섹션코드 : JWHVHJ
- 안나 엘사와 함께하는 코드의 섹션코드를 입력한 섹션의 모든 문제를 해결한 후 제일 마지막 문제의 결과와 수료증을 출력하여 제출하세요
- 섹션코드 : JWHVHJ
- 가장 마지막 문제는 자유롭게 그림을 그리는 것으로 여러분이 만들고자 하는 그림을 자유롭게 그려보세요
- 단 반복문을 2개 이상 사용하여야 합니다.
- 제출일 : 9월 9일 월요일 강의시작 전에 제출
- 위의 블럭코딩 과제를 하면서 느낀점과 어려웠던 점을 2문장 이상 적어서 제출할 것
- 재수강 학생이나 블록코딩을 미리 한 학생들은 기존 계정을 삭제하고 새 계정을 만들어서 하세요
- 과제 샘플
- 위와같이 영문으로 수료증을 생성한 후 다음과 같이 포트폴리오와 함께 수료증을 출력한다
- 느낀점과 어려웠던 점도 손으로 적어서 제출한다
- Your Ice Art 가 나타나지 않을 경우 아래와 같이 결과를 출력하여 제출하도록 한다
- 마지막 작품 제출하는 방법
- 다음과 같은 방법으로 여러분이 만든 그림의 블럭과 결과를 캡쳐하시오
2주차 강의
- 9월 9일, 9월 11일
- 내용
- 컴퓨터란 무엇인가?
- 프로그래밍 언어
- 파이썬의 역사
- 파이썬 시작하기
- 프로그래밍 스타일과 문서화
- 프로그래밍 오류
- 변수와 연산자
- 파이썬 소개
- 파이썬 설치하기(www.python.org)
- 파이썬 실행하기
- 윈도우에서 경로 설정하기
강의자료(2장)
- 강의자료 : 2장_변수와연산자.pdf
과제 #2
- 수강생들은 각자 개인용 컴퓨터나 노트북에 python 3.x 를 다운받아서 설치한다
- 또한 통합개발환경으로 pyCharm을 설치하도록 한다.(설치방법은 구글링을 통해서 하도록 할 것)
- 구글계정을 만들고 구글의 코랩에 접속한다.
- 교재의 문제는 ex1_1.py, ex1_2.py 형식의 파일로 작성하도록 한다(-(하이픈)문자가 아닌 _(언더스코어)로 만들기).
- colab 환경일 경우 파일이 아닌 코드 셀로 만든다.
- 제목 : 교재 1장 프로그래밍 연습 문제 풀이
- 제출일자 : 9월 23일 강의시작전까지 제출
- 1장 연습문제 문제 풀이하기
- 소스코드와 그 수행결과를 제출할 것
- 모든 문제 각각에 대해 어려웠던점 느낀점을 한 문장 이상 적어서 제출하기
- 제출요령은 위의 과제관련 페이지 참조할 것
3주차 강의
- 수업 9월 16일, 18일
- 파이썬 변수, 연산자에 대해 알아봅시다.
4주차 강의
- 9월 23일, 9월 25일
- 파이썬 프로그래밍기초
- 콘솔에서 입력 받기
- 식별자
- 변수, 할당문과 표현식
- 동시 할당문
- 이름 상수
- 수치 데이터 타입과 연산자
- 표현식과 연산자 우선순위
- 확장 할당 연산자
- 조건문, for, while을 이용한 반복문
강의자료(3장)
- 강의자료 : 3장_조건문과반복문.pdf
과제 #3
- 제목 : 교재 2장 연습문제 풀이
- 제출일자 : 2019년 9월 30일
- 교재 2장의 프로그래밍 연습문제 풀이
- 2.1부터 2.26까지 짝수번 문제를 풀어보세요.
- 소스코드와 수행결과를 캡쳐하여 제출하시오
- 모든 문제에 대하여 느낀점과 어려웠던 점을 한 문장 이상 적어서 제출하시오
- 모든 코드에 대해서 2줄 이상의 주석문을 다음과 같이 달도록 하시오
# 섭씨 온도를 화씨로 변경하는 프로그램 # 다음의 공식을 이용하였다 # fahrenheit = (9/5) * celsius + 32
참고할 내용들
- 널널한 교수의 기초 파이썬 - 동영상 강좌
- 강좌를 천천히 수강해 보세요
5주차 강의
- 9월 30일, 10월 2일
- 3장 제어문과 반복문
과제 #4
- 제목 : 3장 연습문제 풀이
- 제출일자 : 2019년 10월 9일 수요일
- 교재 3장의 프로그래밍 연습문제 풀이
- 3.1 ~ 3.10까지 풀이
- 소스코드와 수행결과를 캡쳐하여 제출하시오
- 모든 문제에 대하여 느낀점과 어려웠던 점을 한 문장 이상 적어서 제출하시오
- 모든 코드에 대해서 2줄 이상의 주석문을 달도록 하시오
알림(퀴즈)
- 10/2일 강의시간에는 연습문제의 문제풀이 퀴즈가 있습니다.
- 2, 3장의 연습문제를 많이 풀어보시기 바랍니다.
6주차 강의
- 10월 7일, 10월 9일(한글날)
- 3장 제어문
- 부울타입과 부울식
- if문, if-else문, if-elif-else 명령문을 이용한 선택적 제어
- 제어문을 이용한 문제 풀이
7주차 강의
- 10월 14일, 10월 16일
- 선택문
- 연산자 우선순위
- 반복문
- while 문, for 문을 이용한 문제해결 방법
강의자료( 4장 )
- 강의자료 : 4장_함수와입출력.pdf
과제 #5
- 제목 : 3장 연습문제 풀이
- 제출일자 : 2019년 10월 28일
- 교재 3장의 프로그래밍 연습문제 풀이
- 3.13 ~ 3.22번 문제
- 소스코드와 수행결과를 캡쳐하여 제출하시오
- 모든 문제에 대하여 각각 느낀점과 어려웠던 점을 한 문장 이상 적어서 제출하시오
- 모든 코드에 대해서 2줄 이상의 주석문을 달도록 하시오
8주차 강의
- 10월 21일은 정상 강의합니다.
- 함수와 매개 변수, 인자의 전달방식
- 중간평가 시험 10월 23일
- 반복문
- for, while 문을 이용한 문장의 반복수행
- 무한루프
중간평가 시험
- 10월 23일 수요일 16:30 - 17:45
- 시험범위 : 교재 1장 - 3장
- 주관식과 객관식문제 혼용
과제 #6
- 제목 : 4장 연습문제 4.1 ~ 4.9번 풀이
- 제출일자 : 2019년 10월 30일
- 교재 4장의 프로그래밍 연습문제 풀이
- 4.1 ~ 4.9번 문제
- 교재의 프로그램을 colab 환경에서 작성하여 작성된 문서를 공유하여 제출
- 공유할 주소는 다음의 두 곳으로 이 주소에 모두 공유를 해야합니다.
- dongupak@gmail.com (교수)
- dkfnfn9871@gmail.com (조교님)
- 모든 문제에 대하여 각각 느낀점과 어려웠던 점을 한 문장 다음과 같이 colab의
- 모든 코드에 대해서 2줄 이상의 주석문을 달도록 하시오
- 과제 제목 붙이는 방법
- 과제의 제목에는 과제 번호, 제목 소속, 이름이 나오도록 할 것
- 과제의 내용에는 코드와 코드에 대한 설명을 추가할 것
- 느낀점 어려웠던 점을 적으시오.
- 이 파일을 공유해 주십시오.
- 날짜는 10월 30일에 보내세요 날짜 준수해 주세요
9주차 강의
- 10월 28일, 10월 30일
- 파이썬 함수
- 함수의 특징
- 매개변수
- 참조값의 전달
강의자료(5장)
- 강의자료 : 5장_리스트.pdf
과제 #7
- 제목 : 4장 연습문제 4.10 ~ 4.19번 풀이
- 제출일자 : 2019년 11월 6일
- 파일명은 : 자신의 학번_No7.ipynb 로 할 것
- 교재 4장의 프로그래밍 연습문제 풀이
- 교재의 프로그램을 colab 환경에서 작성하여 작성된 문서를 공유하여 제출
- 공유할 주소는 다음의 두 곳으로 이 주소에 모두 공유를 해야합니다.
- dongupak@gmail.com (교수)
- dkfnfn9871@gmail.com (조교님)
- 모든 문제에 대하여 각각 느낀점과 어려웠던 점을 한 문장 다음과 같이 colab의
- 모든 코드에 대해서 2줄 이상의 주석문을 달도록 하시오
10주차 강의
- 11월 4일, 11월 6일
- 파이썬의 딕셔너리와 튜플, 집합
강의자료( 6장 )
- 강의자료 : 6장_딕셔너리튜플집합.pdf
과제 #8
- 제목 : 5장 연습문제 풀이
- 문제 5.1-5.13번 문제 풀이
- 파일명은 : 자신의 학번_No8.ipynb 로 할 것
- 소스코드와 수행결과를 캡쳐하여 제출하시오
- 모든 문제에 대하여 느낀점과 어려웠던 점을 한 문장 이상 적어서 제출하시오
- 모든 코드에 대해서 2줄 이상의 주석문을 달도록 하시오
- 제출일 : 11월 13일 ipynb 파일을 colab에서 공유해 주세요.
11주차 강의(11/11일 13일)
- 함수와 매개변수
- 객체와 클래스
- 데이터 필드와 메소드를 이용하여 클래스를 만들어 보자
- 변경가능 클래스와 변경불가능 클래스를 구분하여 보자
- 다양한 함수 프로그래밍을 해 보도록 합시다
과제 #9
- 제목 : 6장 연습문제 풀이
- 문제 6.1-6.11번 문제 풀이
- 문제 6.19-6.24번 문제 풀이
- 파일명은 : 자신의 학번_No9.ipynb 로 할 것
- 소스코드와 수행결과를 캡쳐하여 제출하시오
- 모든 문제에 대하여 느낀점과 어려웠던 점을 한 문장 이상 적어서 제출하시오
- 모든 코드에 대해서 2줄 이상의 주석문을 달도록 하시오
- 제출일 : 11월 20일 ipynb 파일을 colab에서 공유해 주세요.
12주차 강의(11월 18일 20일)
- math 모듈, random 모듈
- 터틀 그래픽의 개념
강의자료( 7장 )
- 강의자료 : 7장_모듈과활용.pdf
13주차 강의
- 11월 25일, 11월 27일
- 모듈과 활용
- 터틀 그래픽과 tkinter를 이용한 GUI 모듈의 개발
- 모듈을 이용한 연습 문제 풀이
터틀 코드
import turtle as t import random as rd t1 = t.Turtle() t1.color('blue') for _ in range(10): t1.forward(rd.randint(1,100)) t1.right(rd.randint(0, 360)) t2 = t.Turtle() t2.color('red') for _ in range(10): t2.forward(rd.randint(1,100)) t2.right(rd.randint(0, 360)) t.done()
과제 #10
- 제목 : 7장 연습문제 풀이
- 문제 7.1-7.14번 문제 풀이
- 소스코드와 수행결과를 캡쳐하여 제출하시오
- 모든 문제에 대하여 느낀점과 어려웠던 점을 한 문장 이상 적어서 제출하시오
- 모든 코드에 대해서 2줄 이상의 주석문을 달도록 하시오
- 문제 7.1-7.14번 문제 풀이
- 제출일 : 12월 4일 출력해서 제출
- 제출은 학과사무실 박동규교수 우편함에 넣어 두세요.
Lab( SimpleGUI.py )
from tkinter import * # tkinter의 모든 정의를 임포트한다. window = Tk() # 창을 생성한다. label = Label(window, text = "파이썬에 오신것을 환영합니다.") # 레이블을 생성한다. button = Button(window, text = "저를 클릭해주세요") # 버튼을 생성한다. label.pack() # 창 내부에 레이블을 배치한다. button.pack() # 창 내부에 버튼을 배치한다. window.mainloop() # 이벤트 루프를 생성한다.
Lab( ProcessButtonEvent.py )
from tkinter import * # tkinter로부터 모든 정의를 임포트한다. def processOK(): print("OK 버튼이 클릭되었습니다.") def processCancel(): print("Cancel 버튼이 클릭되었습니다.") window = Tk() # 창을 생성한다. btOK = Button(window, text = "OK", fg = "red", command = processOK) btCancel = Button(window, text = "Cancel", bg = "yellow", command = processCancel) btOK.pack() # OK 버튼을 창 내부에 배치한다. btCancel.pack() # Cancel 버튼을 창 내부에 배치한다. window.mainloop() # 이벤트 루프를 생성한다.
Lab( ProcessButtonEvenAlternativeCode.py )
from tkinter import * # tkinter의 모든 정의를 임포트한다. class ProcessButtonEvent: def __init__(self): window = Tk() # 창을 생성한다. btOK = Button(window, text = "OK", fg = "red", command = self.processOK) btCancel = Button(window, text = "Cancel", bg = "yellow", command = self.processCancel) btOK.pack() # OK 버튼을 창 내부에 위치시킨다. btCancel.pack() # Cancel 버튼을 창 내부에 위치시킨다. window.mainloop() # 이벤트 루프를 생성한다. def processOK(self): print("OK 버튼이 클릭되었습니다.") def processCancel(self): print("Cancel 버튼이 클릭되었습니다.") ProcessButtonEvent() # __init__ 메소드를 호출하기 위해 객체를 생성한다.
Lab( WidgetsDeom.py )
from tkinter import * # tkinter의 모든 정의를 임포트한다. class WidgetsDemo: def __init__(self): window = Tk() # 창을 생성한다. window.title("위젯 데모") # 제목을 설정한다. # 체크 버튼과 라디오 버튼을 frame1에 추가한다. frame1 = Frame(window) # 프레임을 생성하고 창에 추가한다. frame1.pack() self.v1 = IntVar() cbtBold = Checkbutton(frame1, text = "굵게", variable = self.v1, command = self.processCheckbutton) self.v2 = IntVar() rbRed = Radiobutton(frame1, text = "빨간색", bg = "red", variable = self.v2, value = 1, command = self.processRadiobutton) rbYellow = Radiobutton(frame1, text = "노란색", bg = "yellow", variable = self.v2, value = 2, command = self.processRadiobutton) cbtBold.grid(row = 1, column = 1) rbRed.grid(row = 1, column = 2) rbYellow.grid(row = 1, column = 3) # 레이블, 엔트리, 버튼, 메시지를 frame2에 추가한다. frame2 = Frame(window) # 프레임을 생성하고 창에 추가한다. frame2.pack() label = Label(frame2, text = "이름을 입력하세요: ") self.name = StringVar() entryName = Entry(frame2, textvariable = self.name) btGetName = Button(frame2, text = "이름 가져오기", command = self.processButton) message = Message(frame2, text = "위젯 데모입니다.") label.grid(row = 1, column = 1) entryName.grid(row = 1, column = 2) btGetName.grid(row = 1, column = 3) message.grid(row = 1, column = 4) # 텍스트를 추가한다. text = Text(window) # 텍스트를 생성하고 창에 추가한다. text.pack() text.insert(END, "팁\nTkinter를 학습하는 최고의 방법은 잘 짜여진 ") text.insert(END, "예제를 세세히 읽고 애플리케이션을 생성하는데 ") text.insert(END, "직접 사용해 보는 것이다.") window.mainloop() # 이벤트 루프를 생성한다. def processCheckbutton(self): print("체크 버튼이 " + ("선택되었습니다. " if self.v1.get() == 1 else "해제되었습니다.")) def processRadiobutton(self): print(("빨간색" if self.v2.get() == 1 else "노란색") + " 이 선택되었습니다." ) def processButton(self): print("당신의 이름은 " + self.name.get() + "입니다.") WidgetsDemo() # GUI를 생성한다.
14주차 강의( 12월 2일, 12월 4일 )
- 람다 함수와 리스트 축약
강의자료( 9장 )
- 강의자료 : 12장_람다함수와리스트축약.pdf
15주차 강의
- 12월 9일, 12월 11일
- 보충강의주
마지막 강의자료(프로그래밍 잘하기)
16주차 강의( 12월 16일 )
- 기말시험주
- 학기말 시험 : 12월 16일 월요일 15:00 - 16:30 예정
- 중간시험과 비슷한 형식의 문제로 주관식, 객관식, 코딩문제가 출제됩니다.
- 시험 범위 : 교재 5장부터 12장( 8장 제외 )
- 예상문제 1(코드 6-1 참고)
1-1 두 수 중에서 큰 수를 반환하는 함수 max(num1, num2) 를 정의하라. 1-2 max 함수에 5와 2를 넣어 두 수 중에서 큰 수를 출력하는 함수 main 함수를 정의하여라
- 예상문제 2(코드 6-2 참고)
2-1 score를 매개변수로 받아서 90점 이상이면 'A', 80점 이상이면 'B', 70점 이상이면 'C', 60점 이상이면 'D', 나머지는 'F'를 출력하는 print_grade(score) 함수를 정의하여라 2-2 사용자로부터 점수를 입력받아서 print_grade 함수를 호출하여 성적을 출력하는 main 함수를 정의하여라
- 위와 같이 교재의 코드나 연습문제를 푸는 코딩 문제가 출제됩니다.
모두를 위한 코딩 과제 점수 확인
- https://drive.google.com/file/d/1f4bzkqpt5oLxUoWVfMA0uw9bMoPcy751/view?usp=sharing
- 과제점수에 대해서 문의사항 있으면 dkfnfn9871@gmail.com로 메일 부탁드립니다!