Overview
This is the first programming course for undergraduates both in computer science and in other majors. Students are expected to have little or no experience in programming. We will start learning the concept of software development by making simple Android applications using an easy-to-use drag-and-drop app building tool (MIT App Invertor). Subsequently, concepts and techniques of programming will be introduced using the programming language Python. We will cover various topics including simple statements, data types, objects, functions, structures, and the software development process.
Classes will be held in a computer lab where students will have a chance to gain hands on experience on the materials. There will be homeworks and quizzes each week and three programming assignments overall.
Textbook
- Python Programming: An Introduction to Computer Science, 2nd Ed., by John M. Zelle, Franklin & Beedle, 2010.
- Buy the digital version; it should be cheaper.
- 1st edition is not very different but uses Python 2.
- References:
Links
- Class Website
- Atlas Website
- SNUON Website
- Stepik Website
- App Inventor Websites
Lecture Notes & Notices
General Notices
- 결석계는 기본적으로 의료목적과 직계가족 경조사 한정입니다.
- 매 시간 보고 와야할 영상이 있고, 이에 대해 퀴즈를 보는것으로 수업이 시작됩니다. 지각 하면 안돼요!
- 퀴즈는 영상을 봤는지에 대한 체크 목적입니다. 따라서 매번 보며, 출제 범위는 안내된 영상 한정입니다.
- 퀴즈 사이트 - Atlas
- 스테픽 실습은 실습날부터 48시간 이내로 완료하셔야합니다. 가능한 조교의 도움을 받을 수 있는 실습 시간 내에 완료하길 권장합니다. Optional이 붙은 실습은 하지 않으셔도 됩니다.
- 스테픽 사이트 - Stepik
SNUON Notes
- Chap 01
- Chap 02
- Chap 03
- Chap 04
- Chap 05
- Chap 05 - Programming Exercises
- Chap 06
- Chap 07
- Chap 07 - Programming Exercises
- Chap 08
- Chap 08 - Programming Exercises
- Chap 09
- Chap 09 - Programming Exercises
- Chap 10
- Chap 10 - Programming Exercises
- Chap 11
- Chap 11 - Programming Exercises
- Chap 12
- Chap 12 - Programming Exercises
- Chap 13
- Chap Appendix
3월 6일 Notes
- Syllabus
- Orientation
- Foundation
- App Inventor Intro. & Installation Guide - App Inventor 소개 및 설치 안내입니다.
- DCCP Practice - 실습 전반에 대한 안내입니다.
- 질문은 이메일 및 eTL 사이트를 이용해 주세요.
- 매 수업 일주일 전, 늦어도 2~3일 전에는 해당 실습 수업에 대한 사전 공지가 나갑니다. 실라버스(업데이트 된 버전)에 Flipped Learning 상 미리 보고 와야하는 강의들이 무엇인지 일정별로 자세히 안내가 되어있습니다. 이 일정에 맞춰서 구체적인 사전 공지가 올라올 예정입니다. 자주 확인 부탁드려요.
3월 8일 Notices
- PaintPot2 강의 영상, 문서
- 3월 8일 실습 수업은 App Inventor를 실제로 실습 해보는 시간을 가질 예정입니다. PaintPot2 영상을 시청하고 와주시기 바랍니다.
- [필수] - 3월 8일 수업 전까지 영상 시청 혹은 문서 읽기를 해오시면 됩니다.
- [선택] - App Inventor를 실제로 실행시켜볼 예정이므로, 구글 계정을 새로 만들거나 기존의 계정을 사용하여 App Inventor 사이트에 로그인을 하게 됩니다. 이는 염두해주시면 됩니다.
- [선택] - 미리 집에서 실습을 해보실 분은 강의 자료에 올라온 설치 안내 자료를 참고하여 직접 에뮬레이터를 설치해서 실행 및 코딩을 하시면 됩니다.
3월 8일 Notes
- DCCP Moodle - 퀴즈, 실습 환경 등에 대한 자세한 설명입니다.
- 0308 Discussion - PaintPot - 3월 8일자 Discussion 자료입니다.
- [선택] - 원하시는 분은 0308 Practice Advanced PaintPot를 참고하여 추가적인 실습을 해보시길 바랍니다.
3월 13일 Notices
- MoleMash 강의 영상
- President’s Quiz 강의 영상
- [필수] - 위 두 영상을 시청하고 와주세요. 퀴즈를 봅니다! 영상이 여러개로 나눠져있으니 주의하시기 바랍니다.
- [선택] - PaintPot2를 못하신 분들은 가능하다면 집에서 직접 실습해보시길 바랍니다.
3월 13일 Notes
- App Inventor Additional Guide - 앱 인벤터 실행 관련 추가적인 설명들입니다.
- 0313 Discussion - MoleMash - 3월 13일자 Discussion - MoleMash 자료입니다.
- 0313 Discussion - Quiz - 3월 13일자 Discussion - Quiz 자료입니다.
- [선택] - 원하시는 분은 0313 Practice Advanced MoleMash과 0313 Practice Advanced Quiz를 참고하여 추가적인 실습을 해보시길 바랍니다.
- [선택] - 0313 Practice - About Modulo - 실습중에 다뤘던 나머지 연산에 관한 내용입니다.
3월 15일 Notices
- Pong 강의 영상
- Stock Market 강의 영상
- [필수] - 위 두 영상을 시청하고 와주세요. 퀴즈를 봅니다! 영상이 여러개로 나눠져있으니 주의하시기 바랍니다.
3월 15일 Notes
- 0315 Discussion - Pong - 3월 15일자 Discussion - Pong 자료입니다.
- 0315 Discussion - StockMarket - 3월 15일자 Discussion - StockMarket 자료입니다.
- [선택] - 원하시는 분은 0315 Practice Advanced를 참고하여 추가적인 실습을 해보시길 바랍니다.
3월 20일 Notices
- 실라버스가 수정되었습니다. 일정 다시 확인 바라며, SNUON에서 봐야할 영상 일정은 기본적으로 실라버스를 따릅니다.
- [필수] - SNUON에서 1차시 - Instruction 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
- [필독] - Project 1 - 프로젝트1 공지 및 스펙 안내입니다. 제출 기한: 4월 2일 23시 55분.
3월 20일 Notes
- Python Installation Guide - 파이썬 설치 안내입니다.
- DCCP Python - 파이썬 실습 안내입니다.
- 0320 Discussion - Chap01 - 3월 20일자 Discussion - Chap01 자료입니다.
- 0320 Practice - 3월 20일자 실습 자료입니다.
3월 22일 Notices
- [필수] - SNUON에서 2차시 - Writing Simple Programs 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
3월 22일 Notes
- 0322 Discussion - Chap02 - 3월 22일자 Discussion - Chap02 자료입니다.
- 0322 Practice - 3월 22일자 실습 자료입니다.
- 0322 Practice - Appended - 3월 22일자 추가 실습 자료입니다.
3월 27일 Notices
- [필수] - SNUON에서 3차시 - Computing with Numbers 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
3월 27일 Notes
- 0327 Discussion - Chap03 - 3월 27일자 Discussion - Chap03 자료입니다.
- 0327 Practice - 3월 27일자 실습 자료입니다.
3월 29일 Notices
- [필수] - SNUON에서 4차시 - Objects and Graphics 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
3월 29일 Notes
- graphics.py - 다운 받으신 후 작업 폴더에 같이 넣어주세요.
- 0329 Discussion - Chap04 - 3월 29일자 Discussion - Chap04 자료입니다.
- 0329 Practice - 3월 29일자 실습 자료입니다.
4월 3일 Notices
- Project1 발표날입니다.
- Project 1을 다시 확인하시고, 기한과 조건을 맞춰서 eTL에 제출하시기 바랍니다.
- 보고서, 발표자료, .aia파일이 들어있어야 합니다.
4월 5일 Notices
- [필수] - SNUON에서 5차시 - Sequences: Strings, Lists, and Files 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
4월 5일 Notes
- 0405 Discussion - Chap05 - 1 - 4월 5일자 Discussion - Chap05 - 1 자료입니다.
- 0405 Practice - 4월 5일자 실습 자료입니다.
- 0405 Practice - Appended - 4월 5일자 추가 실습 자료입니다.
4월 10일 Notices
- [필수] - SNUON에서 6차시 - Sequences: Strings, Lists, and Files (2) 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
4월 10일 Notes
- 0410 Discussion - Chap05 - 2 - 4월 10일자 Discussion - Chap05 - 2 자료입니다.
- 0410 Practice - 4월 10일자 실습 자료입니다.
- 0410 Practice - Appended - 4월 10일자 추가 실습 자료입니다.
4월 12일 Notices
- [필수] - SNUON에서 7차시 - Defining Functions 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
4월 12일 Notes
- 0412 Discussion - Chap06 - 4월 12일자 Discussion - Chap06 자료입니다.
- 0412 Practice - 4월 12일자 실습 자료입니다.
4월 17일 Notices
- [필수] - SNUON에서 8차시 - Decision Structures 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
4월 17일 Notes
- 0417 Discussion - Chap07 - 1 - 4월 17일자 Discussion - Chap07 - 1 자료입니다.
- 0417 Practice - 4월 17일자 실습 자료입니다.
- [필독] - Project 2 - 프로젝트2 공지 및 스펙 안내입니다. 전체 코드와 보고서는 eTL에 제출하셔야하며, stepik에 있는 Project 2 문제들 푸는것도 잊지 마세요. 제출 기한: 4월 30일 23시 50분.
- Project 2 - random and while-loop - 프로젝트2 보조 자료입니다. 진행에 참고하시면 됩니다.
4월 19일 Notices
- [필수] - SNUON에서 9차시 - Decision Structures (2) 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
4월 19일 Notes
- 0419 Discussion - Chap07 - 2 - 4월 19일자 Discussion - Chap07 - 2 자료입니다.
- 0419 Practice - 4월 19일자 실습 자료입니다.
4월 24일 Notices
- [필수] - SNUON에서 10차시 - Loop Structures and Booleans 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
4월 24일 Notes
- 0424 Discussion - Chap08 - 1 - 4월 24일자 Discussion - Chap08 - 1 자료입니다.
- 0424 Practice - 4월 24일자 실습 자료입니다.
- 0424 Practice - Appended - 4월 24일자 추가 실습 자료입니다.
4월 26일 Notices
- [필수] - SNUON에서 11차시 - Loop Structures and Booleans (2) 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
4월 26일 Notes
- 0426 Discussion - Chap08 - 2 - 4월 26일자 Discussion - Chap08 - 2 자료입니다.
- 0426 Practice - 4월 26일자 실습 자료입니다.
5월 1일 Notices
- 이 날은 진도를 나가지 않고 전체적인 리뷰 및 QnA 시간을 가질 예정입니다.
5월 1일 Notes
- 0501 Review 01~08 - 1장 ~ 8장 리뷰 자료입니다.
5월 3일 Notices
- 이 날은 석가탄신일입니다.
5월 8일 Notices
- 예정대로 5월 8일 월요일엔 중간고사를 봅니다.
- 5월 8일 월요일, 수업 시간(14:30~16:20), 수업 장소(302-311-1)에서 시험
- 시험 범위는 1장 ~ 8장
- 시험 내용은 SNUON 강의 영상 및 슬라이드, 디스커션
- 실습 시간에 다뤘던 내용들 (stepik)은 highly recommended입니다. 다시 풀어볼 수 있으니 복습을 권합니다.
- 올린 자료 중 appended에 해당하는 내용들은 제외됩니다.
- 필기 시험 (신분증 or 학생증, 필기구 지참 필수)
- 문제는 영어로 나오며, 답은 영어 혹은 한국어로 써주시길 바랍니다.
- 추가로 올린 자료, 수정된 자료들이 있으니 확인 바랍니다. 최신 파일로 공부하는걸 권합니다.
5월 10일 Notices
- [필수] - SNUON에서 12차시 - Simulation and Design 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
5월 10일 Notes
- 0510 Discussion - Chap09 - 1 - 5월 10일자 Discussion - Chap09 - 1 자료입니다.
- 0510 Practice - 5월 10일자 실습 자료입니다.
- craps.py - Craps 예시 코드입니다.
5월 15일 Notices
- [필수] - SNUON에서 13차시 - Simulation and Design (2) 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
5월 15일 Notes
- 0515 Discussion - Chap09 - 2 - 5월 15일자 Discussion - Chap09 - 2 자료입니다.
5월 17일 Notices
- [필수] - SNUON에서 14차시 - Defining Classes 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
5월 17일 Notes
- 0517 Discussion - Chap10 - 1 - 5월 17일자 Discussion - Chap10 - 1 자료입니다.
- 0517 Practice - 5월 17일자 실습 자료입니다.
5월 22일 Notices
- [필수] - SNUON에서 15차시 - Defining Classes (2) 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
5월 22일 Notes
- 0522 Discussion - Chap10 - 2 - 5월 22일자 Discussion - Chap10 - 2 자료입니다.
- 0522 Practice - 5월 22일자 실습 자료입니다.
- [필독] - Project 3 - 프로젝트3 공지 및 스펙 안내입니다. 전체 코드와 보고서는 eTL에 제출하셔야하며, stepik에 있는 Project 3 문제들 푸는것도 잊지 마세요. 제출 기한: 6월 11일 23시 50분.
- [추가] - 인코딩 및 시간 계산 관련 안내 자료가 추가되었습니다.
- [추가] - PageRank 계산시 모든 값이 0인 행은 들어오지 않는다고 가정하셔도 됩니다.
- [추가] - TextRank를 위해서 A 행렬을 만들때, a(i, j) = i번째 문장과 j번째 문장의 유사도로 계산이 되지만 (스펙에 나와있습니다), i == j인 경우는 a(i, j) = 0으로 처리하시면 됩니다. 즉, 대각선은 0이 됩니다.
5월 24일 Notices
- [필수] - SNUON에서 16차시 - Data Collections 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
5월 24일 Notes
- 0524 Discussion - Chap11 - 1 - 5월 24일자 Discussion - Chap11 - 1 자료입니다.
- 0524 Practice - 5월 24일자 실습 자료입니다.
5월 29일 Notices
- [필수] - SNUON에서 17차시 - Data Collections (2) 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
5월 29일 Notes
- 0529 Discussion - Chap11 - 2 - 5월 29일자 Discussion - Chap11 - 2 자료입니다.
- 0529 Practice - 5월 29일자 실습 자료입니다.
5월 31일 Notices
- [필수] - SNUON에서 18차시 - Object Oriented Design 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
5월 31일 Notes
- 0531 Discussion - Chap12 - 1 - 5월 31일자 Discussion - Chap12 - 1 자료입니다.
- 0531 Practice - 5월 31일자 실습 자료입니다.
6월 5일 Notices
- [필수] - SNUON에서 19차시 - Object Oriented Design (2) 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
6월 5일 Notes
- 0605 Discussion - Chap12 - 2 - 6월 5일자 Discussion - Chap12 - 2 자료입니다.
- 0605 Practice - 6월 5일자 실습 자료입니다.
6월 7일 Notices
- [필수] - SNUON에서 20차시 - Algorithm Design and Recursion & Appendix 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
6월 7일 Notes
- 0607 Discussion - Chap13 - 1 - 6월 7일자 Discussion - Chap13 - 1 자료입니다.
- 0607 Practice - 6월 7일자 실습 자료입니다.
6월 12일 Notices
- [필수] - SNUON에서 21차시 - Algorithm Design and Recursion & Appendix (2) 영상들을 모두 시청하고 와주시기 바랍니다. 퀴즈를 봅니다.
6월 12일 Notes
- 0612 Discussion - Chap13 - 2 - 6월 12일자 Discussion - Chap13 - 2 자료입니다.
6월 14일 Notices
- 예정대로 6월 14일 수요일엔 기말고사를 봅니다.
- 6월 14일 수요일, 시간 14:30 ~, 302동 409호에서 시험
- 시험 범위는 중간고사 이후 ~
- 시험 내용은 SNUON 강의 영상 및 슬라이드, 디스커션
- 실습 시간에 다뤘던 내용들(stepik)은 highly recommended입니다. 다시 풀어볼 수 있으니 복습을 권합니다.
- 올린 실습 자료 중 appended에 해당하는 내용들은 제외됩니다.
- 필기 시험 (신분증 or 학생증 및 필기구 지참 필수)
- 문제는 영어로 나오며, 답은 영어 혹은 한국어로 써주시길 바랍니다.
6월 21일 Notices
- 아틀라스 사이트에서 로그인 한 후 프로필 페이지로 들어가시면 현재까지 있었던 퀴즈, 디스커션, 프로젝트 1~2, 중간 및 기말고사 점수를 확인할 수 있습니다.
- 시험지 확인을 하고 싶으신 분은 6월 23일 금요일 오후 2시 ~ 5시 사이에 301동 420호로 오시면 됩니다.
- 확인 중에 점수가 깎일수도 있으니 꼭 필요한 경우에만 오기를 권장합니다.
6월 25일 Notices
- Project 3 채점에 사용했던 테스트케이스와, 모범코드를 공개합니다.
- 이 링크로 들어가면 5개의 input과 output이 있습니다. 가령, input3.txt를 input으로 넣었을때의 올바른 답은 output3.txt가 됩니다.
- PageRank는 deterministic한 알고리즘이기 때문에, 인풋과 파라미터들이 같다면 항상 같은 결과가 나와야합니다. 때문에, 정답과 100% 일치한 경우에만 온전한 점수를 받을 수 있습니다.
- 대부분의 학생이 100% 일치했고, 몇몇 분들은 조금 다른 결과가 나왔습니다만, 이 부분에 대해선 다음과 같이 부분점수가 나갔습니다:
- 본 과제가 문서 요약이기 때문에, 문서 요약에서 쓰이는 평가 지표인 ROUGE [1] 점수 R을 계산하고
- 인풋 및 파라미터가 같기 때문에 정확하게 일치해야하므로, 일치하는 정도를 평가해주는 normalized edit distance [2] 점수 D를 계산하여
- R와 (1 - D)의 harmonic mean을 최종 점수가 되게끔 했습니다. 이 점수는 답과 결과가 100% 일치 할 경우 1.0이 나옵니다. 이를 scaling하여 6번 점수를 부여했습니다.
- 모범코드 역시 위 링크에 같이 있으며, 실행 시간이 가장 빨랐던 학생 2명의 코드에 들어있던 아이디어들을 활용하여 만든, 가장 빠른 버전인 summarize_fastest.py와 범용성 있게 클래스를 활용하여 만든 버전인 summarize_fancy.py가 있습니다. 본인 구현체와 어떤 부분에서 차이가 있는지 비교해보시면 좋을 것 같습니다.
- 마지막 스테픽 보너스 3문제는 현재 여기서 풀어보실 수 있습니다. 위 링크에 해답코드가 같이 들어있습니다. 간단한 풀이를 하자면,
- 시공의 방랑자 - t[n]이 n번째까지 공간이 바뀐 갯수를 저장하게끔 하고, 읽기에 O(n), 각 질문에 t[i] - t[j]로 O(1)에 대답하게끔 하면 됩니다.
- 사이오닉 감시탑 - a[i]가 i번째 탑이 부딪히는 탑이라고 할때, 가령 i를 확인하고 싶고 탑 i-1의 높이가 i보다 작다면, a[i-1]로 바로 건너 뛰어도 됩니다. a[i-1]와 i 사이에 있는 모든 탑의 높이는 적어도 i-1의 높이보다는 작을테니 i번째 탑 입장에선 고려 할 필요가 없고, 이를 반복하면 매우 빠르게 찾을 수 있습니다.
- 군락지 - 이는 사실 n-queen 문제라고 보통 불리는, 매우 유명한 문제입니다.