You will redirect to Elice ( in 30 seconds.

Course introduction

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. 50 years ago, the solution to a problem in mathematics or engineering was often a formula. Today, it is usually an algorithm.

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 world-wide for teaching introductory programming. It is free, open-source, and multi-platform.

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 high-end 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 open-source mathematics software system Sage (an open-source competitor to Maple or Mathematica).

CS101 consists of 10 sections of about 45 students each. Each section meets once a week for a three-hour 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 take-home 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."

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

Online Platform

Elice (

Main Schedule

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 320 practice points. Students who have not acquired enough practice points can earn additional practice points doing an extra (bonus) homework at the end of the semester, at the cost of a letter downgrade in the final score (e.g., B+ -> C+) .

  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 320 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).