CS101: Introduction to Programming
KAIST Spring 2017
The objective of CS101 is to teach programming skills and computational thinking. The first is important because programming is needed in all areas of science and engineering, although very different programming languages are used. The second is perhaps even more important, as it influences how you go about solving a problem. Fifty years ago, the solution to a problem in mathematics or engineering was often a formula. Today, it is usually an algorithm.
Announcements
 Students are NOT allowed to move to another section unless the student is retaking this class.

Students are NOT allowed to drop the course unless
 the student is retaking this class or
 cannot take the class due to unavoidable circumstances.
Instructors
 Prof. Moonzoo Kim (moonzoo@cs.kaist.ac.kr, 0423503543, E31. 2434) – Sections A and B
 Prof. Sunghee Choi (sunghee@kaist.edu, 0423503534, E31. 3404) – Sections C and D
 Prof. Keeeung Kim (kekim@cs.kaist.ac.kr, 0423503536, E31. 2402) – Sections E and F
 Prof. Min Hyuk Kim (minhkim@vclab.kaist.ac.kr, 0423503564, E31. 3429) – Sections G and H
 Prof. Shin Yoo (shin.yoo@cs.kaist.ac.kr, 0423503567, E31. 2405) – Sections I and J
Teaching assistants
56 TAs will be assigned to each section.
Representative TA: Ph.D. student. JinYeong Bak (jy.bak@kaist.ac.kr, 0423507749, E31. 4417)
Course structure
Starting from spring 2010, CS101 uses the programming language Python, a language that was designed to be easy to learn. Python is used by many universities worldwide for teaching introductory programming. It is free, opensource, and multiplatform.
Python is not a toy. Python is the basis for much of the programming at Google (for instance, Python is the original and main framework for the Google App Engine platform). Python is used intensively in numerical computations, for instance at NASA. The numerical Python library supports vectorization and is widely used in scientific computation. Python is also the language of choice for writing user interfaces for applications on highend Nokia phones. Large portions of games (such as Civilization IV) are written in Python. Python is becoming the language of choice in mathematics, used for instance by graph algorithm libraries, or the opensource mathematics software system Sage (an opensource competitor to Maple or Mathematica).
CS101 consists of 10 sections of about 45 students each. Each section meets once a week for a threehour lab session supervised by a lead TA (a Ph.D. student), with some helper TAs around (undergraduate and master students). Two sections take one lecture together, which is once a week for 60~120 minutes.
Students need to attend the lab session every week. One of the tasks done during the lab has to be marked off by a TA, so that we know that you were there and did your best.
There will also be four takehome homeworks where you have to program slightly more complex tasks.
Lab sessions will introduce students to pair programming.
In CS101, the policy on being late for the lecture is like the following : "There is no certain rule to give lecture attendance score for those who are late for the lecture. The lecture attendance score is just given by each lecture's professor."
The course webpage contains the syllabus, lecture notes, and slides for CS101, and links to all the software you need in the labs(or to do the lab tasks on your own computer). All other information, such as lecturers, TAs, lecture and lab times, homeworks, exams, and the bulletin boards can be found on the comprehensive CS101 website elice.io.
Grading policy
CS101 grading consists of two parts: practice and theory.
Practice points are collected as follows:
 100 points for lecture attendance
 100 points for lab work
 200 points for homework
Students need to collect at least 340 practice points.
Theory points are collected as follows:
 100 points for midterm exam;
 100 points for final exam.
The final score for CS101 is determined entirely by the theory points, but students who did not earn 340 practice points receive a fail grade.
Repeating students:
Students who have already taken advanced courses involving programming,
and all students who are majoring in the following departments cannot retake CS101
if they have already passed CS101: Depts. of Electrical Engineering,
Information & Communications Engineering, Industrial & Systems Engineering,
and School of Computing.
All repeating students cannot receive a grade better than A by KAIST policy (and this applies even to students who entered KAIST before 2007).
Pass exam
In the first week of the semester we offer a "Pass Exam", which students who have already learnt programming can take to fulfill the CS101 requirement.
The pass exam consists of a 90 minutes written exam, followed by a 90 minute programming exam.
The written exam is closed book, and covers programming in Python as taught in CS101, but without the cs1robots, cs1media, and cs1graphics modules.
The programming exam is open book (only printed material). You use a computer in the lab room, but will have access only to the Wing or IDLE environment (no internet access).
If you pass the exam with a B or better, you can choose to accept the score as your CS101 score, or to give up the score and take the CS101 class.
Textbook
 Practical Programming: An Introduction to Computer Science Using Python by Jennifer Campbell, Paul Gries, Jason Montojo, and Greg Wilson.
 Pragmatic Programmers, 2009. ISBN 9781934356272. Korean translation is also available (ISBN 9788960771338).