(Last updated: Tue Mar 6 15:36:20 JST 2018)
프로그래밍(SE213) 강좌는 DGIST 기초학부 학생들이 컴퓨터 과학(computer science)의 기초와 컴퓨팅 사고(computational thinking)에 관해 배울 수 있도록 설계되어 있습니다. 이 강좌를 통하여 프로그래밍 언어를 배우고, 이를 통하여 간단한 프로그래밍에서 시작해서 기초적인 자료구조와 알고리즘을 구현하게 됩니다. 이 과정에서 학생들이 컴퓨팅 사고에 익숙해질 수 있을 것입니다. 이를 통하여, 비전공자들도 컴퓨터를 연구와 학습의 도구로 활용할 수 있고, 또한 공학/컴퓨터를 전공할 학생들이 전공의 탄탄한 기초를 세우는 것을 목표로 합니다.
강좌의 대상은 인터넷 사용, 워드, 파워포인트 등의 컴퓨터 작업에는 어느 정도 익숙하지만, 컴퓨터 프로그래밍에는 전혀 경험이 없는 학생입니다. 또한 프로그래밍 경험이 있는 학생들에게는, 프로그래밍의 이해와 실력을 키울 수 있도록 여러 예제를 제공할 예정입니다.
프로그래밍은 수학 혹은 물리, 혹은 다른 이공계 과목과 마찬가지로, 이론만 알아서는 완벽한 이해가 어렵습니다. 수학 혹은 물리의 개념을 이해해도, 여러 가지 다른 조건의 문제를 풀면서 이해가 깊어지는 것처럼, 프로그래밍도 실습을 하면서 숙달이 되고, 이해도가 깊어질 수 있습니다. 따라서 학생들이 실습 시간에 집중하고, 또한 과제를 수행하면서 충분히 여러 가지 프로그램을 구현해 보는 것이 필요합니다.
사람들끼리 대화를 할 때도 일정한 문법에 따라야 의사소통이 되듯이, 컴퓨터가 수행할 작업을 기술할 때도 컴퓨터가 이해할 수 있는 규칙에 따를 필요가 있습니다. 사람들끼리 하는 언어를 자연어(natural language, 한국어, 영어, 중국어 등)라고 하고, 사람이 컴퓨터에게 명령을 내릴 수 있는 언어(즉 규칙)를 프로그래밍 언어(programming language)라고 합니다.
컴퓨터가 만들어진 이후 수 많은 언어들이 만들어지고 (즉 수많은 규칙들이 만들어지고) 사용되어져 왔습니다. 현재 가장 많이 사용되는 언어는 Java, Javascript, python, ruby, C, C++, Go, scala, html, css, sql 등이 있습니다. 이렇게 많은 언어들이 지금까지 만들어지고, 또 같은 언어라고 하더라도 계속 진화하는 이유는 사용 용도에 따라 언어를 개발, 변경시켜온 측면과 어떻게 하면 사람들의 생각이 더 편하게 표현될 수 있는지를 고려한 측면이 있습니다.
프로그래밍을 할 때 알고리즘(algorithm)과 자료구조(data structure)에 대한 이해가 특정한 프로그래밍 언어에 대한 이해보다 더 중요합니다. 그렇지만 실제 프로그래밍을 할 때는 특정 언어를 사용하 하는 것은 컴퓨터 언어를 사용해야 되기 때문에, 프로그래밍 목적에 맞는 언어의 선택과 그것에 대한 이해는 굉장히 중요한 문제입니다.
python은 초보자들이 배우기에 상대적으로 쉬우면서도 강력한 기능을 가지고 있어, 다양한 분야/회사에서 사용되고 있습니다. 또한 언어 자체가 구조적/객체지향적으로 잘 설계되어 있어, 컴퓨터 프로그래밍의 여러 개념을 배우기에 적합합니다. 이러한 이유로 많은 학교의 기초과정에서 python을 채택하고 있고, 이 과목에서도 python을 이용하여 수업을 진행할 예정입니다.
현재 사용되는 python은 python 2와 python 3가 있습니다. 아직까지는 python 2가 더 널리 사용되고 있기는 하지만, python 2는 2020년 지원이 끝나고, 앞으로 더 폭넓게 사용될, 그리고 더 강력한 기능을 갖춘 python 3을 이용하여 수업을 진행할 것입니다.
- 컴퓨터 공학 및 프로그래밍에 대한 기초
- python (python 3) 언어의 기초적인 문법
- number (int, float), string, list 등 기본적인 자료형과 연산
- 함수(function)
- 문자열 조작
- 입출력
- class 등 OOP (Objective-Oriented Programming) 기본 개념
- 문제해결을 위한 간단한 알고리즘에 대한 이해 및 복잡도(complexity)
- (optional) python library를 이용한 그래프 생성 등 기초적인 data analysis
- 수업과 연계된 실습, 과제, 프로젝트 등을 통한 실제 코딩
- 이름: 조민규
- 이메일: mingyu.cho (at) dgist
- 사무실: E7 L13
이름 | 담당분반 | 이메일 |
---|---|---|
조민규 | 월4-6p | mingyu.cho (at) dgist |
최하정 | 월, 목 | tresa (at) nate (dot) com |
송유진 | 화 | yujinkor (at) naver (dot) com |
조교 | 담당시간 | 분반 | 이메일 (@dgist.ac.kr) |
---|---|---|---|
배정민 | 월10-12 | SE213b-02 | qhtjrmin |
이지혜 | 월1-3p | SE213b-03 | jh_lee |
김한별 | 월4-6p | SE213b-01 | hbstella92 |
강기동 | 화10-12 | SE213b-06 | kd_kang |
이은정 | 화1-3p | SE213b-07 | iej0710 |
이승학 | 화4-6p | SE213b-08 | slee |
문시훈 | 목10-12 | SE213b-04 | msh0576 |
유재민 | 목1-3p | SE213b-05 | ryujm95 |
안지운 | n/a | n/a | jyun |
담당 | 시간 | 장소 (E3-) |
---|---|---|
배정민 | 월1:30p | 219 |
문시훈 | 월9:00p | 522 |
김한별 | 화2:00p | 404 |
강기동 | 화4:00p | 304 |
이지혜 | 수11:00 | 403 |
유재민 | 수3:00p | 506 |
이승학 | 목11:00 | 206 |
이은정 | 목2:00p | 219 |
안지운 | 금2:30p | 404 |
- 오피스아워는 여러 가지 사정으로 바뀔 수 있으니, 이 곳에서 항상 확인하시기 바랍니다.
- 과제: 실습시간에 배우는 내용을 기초로 해서, 학기 중에 4-6번의 과제가 제출될 예정입니다.
- 시험: 중간고사와 기말고사
아래와 같은 비율로 성적 평가를 할 예정입니다.
내용 | 비중 |
---|---|
중간고사 | 30% |
기말고사 | 30% |
과제 | 40% |
- 결석시 penalty (전체 100점 기준)
- 이론:
2 ** max(n - 2, 0) - 1
, n=결석회수 - 실습: 2회 1점, 3회 3점, 4회 이상 F
- 이론:
학점 | 점수 |
---|---|
A | >= 85 |
B | >= 70 |
C, D | < 70 |
F | TBD |
- elice: https://dgist.elice.io/courses/263/
- anaconda: https://www.continuum.io/downloads
- pycharm: https://www.jetbrains.com/pycharm/
수업 중에 비슷한 질문이 반복되는 경우가 많으므로, 가급적 elice 상에 있는 질문과 답 게시판을 이용하기 바랍니다.
- 강의 운영 (과제, 시험 등) Q&A: 수업 시간, 강의의 정책 등에 관한 질문을 올려주시기 바랍니다
- 프로그래밍 Q&A: python 프로그래밍에 관한 질문을 올려주시기 바랍니다
그리고 교수/조교 뿐만 아니라, 다른 학생들의 질문에 학생분들이 답을 올려주시는 것을 적극 권장합니다. 자신이 알고 있는 것을 설명을 하면서, 이해도가 더 깊어질 수 있습니다. 그리고 적극적으로 참여하시는 학생들에게는 참여 점수가 부여될 예정입니다.
- python에 관한 내용과 실습 출석 등에 관한 부분은 실습 담당 교수/조교에게 보낼 것
- 학점 등 평가에 대한 부분은 실습 담당 교수와 조민규 교수에게 보낼 것
- 읽을 거리에 있는 이메일 에티켓을 참고할 것
- 제목에 [SE213 x분반]을 포함할 것 (실습 분반)
python 교재는 매우 많으니, 그 중에 한 권을 정해서 보시면 됩니다. 아래 참고 교재에 온라인으로 접근 가능한 책들이 많이 있으니, 그 중에 한 권을 정해서 보시는 것도 좋습니다.
- How to think like a computer scientist: http://www.openbookproject.net/thinkcs/python/english2e/
- Python for Everybody, Exploring data in python 3 (정보교육을 위한 파이썬)
- CS for all: https://www.cs.hmc.edu/csforall/
- Byte of python (아래 사이트에서 무료로 다운로드 받을 수 있습니다.)
- 영어 (python 3 기준)
- 한국어 (python 2 기준): python2와 python3는 큰 차이는 없기 때문에, 아래 번역본을 보셔도 괜찮습니다. 수업 시간에 python 2와 3의 차이에 대해서는 필요한 부분마다 간단하게 언급하고 넘어가겠습니다.
- 처음 시작하는 python, 빌 루바노빅 지음 | 최길우 옮김 | 한빛미디어 | 2015년 12월 10일 출간
- 파이썬 완벽 가이드, 데이비드 M. 비즐리 지음 | 송인철, 송현제 옮김 | 인사이트 | 2012년 04월 06일 출간
- (어떻게 프로그래밍을 공부할 것인가](https://paper.dropbox.com/doc/UFXkqqqwYBWfpDmigP0WE)
- Python style guide
- Official document: https://www.python.org/dev/peps/pep-0008/
- 한국어 번역: http://kenial.tistory.com/902
- (주요 내용) 한국어 번역 및 해설: https://spoqa.github.io/2012/08/03/about-python-coding-convention.html
- Google python style guide: https://google.github.io/styleguide/pyguide.html
- 참고: http://docs.python-guide.org/en/latest/writing/style/
- The python language reference: 공식적인 python 언어의 reference
- codeacademy: 기초적인 python 코드를 온라인 상에서 따라하면서 배울 수 있는 사이트
- PySchools python quick reference guide: 다른 언어를 알고 있는 사람이 python을 빠르게 배울 때 도움이 되는 사이트
- 17 Coding Challenges to Help You Train Your Brain: http://codecondo.com/coding-challenges/
- 위 글에서 추천해준 사이트 중에 제가 사용해본 것은 아래와 같고, 모두 괜찮았습니다.
- python tutor: python 코드의 실행을 시각화하여 보여주는 사이트