Introduction to Computer Programming 2018-02

From Innovation
Jump to: navigation, search

Class Information

Class Info
Class ETA00086 - 컴퓨터 프로그래밍 기초, ETA00087 컴퓨터 프로그래밍 기초 실습
Lecturer Seongjin Lee
Time and Place A & B Group (Theory): 407-101 Monday 14:00-16:00
A Group (Practice): 407-203, Friday 12:00-14:00
B Group (Practice): 407-203, Friday 14:00-16:00
Office Hour Tuesday: 11:00-12:00
Contacts Office: 407-314
Email: insight at gnu dot ac dot kr

Course Introduction

In the Computer Engineering, the language you use determines the capabilities of the software you develop. The more powerful a language is, the easier you can increase the performance and the simpler you can write the software. We are going to learn two languages in this course, Python and C. Python is a versatile, yet powerful, language that is easy to learn as well as the ease of the use. Many of the well-known companies are using Python to solve many of the engineering problems. For example, Dropbox desktop client is written in Python. Another language we are learning in the class is C. Since Dennis Ritchie at AT&T Bell Lab in the early 1970s developed C Programming Language, it has become one of the most powerful language used by various developers working in mobile, enterprise, and embedded systems. The success of C language is the result from its portability, standard library, ready use of the hardware, and ease of optimization.

For your information, Prof. Kyounghoon Kim is teaching the same course. Do interact with all the classmates and share. Don't be a big fish in a pond.

Goal

In this course, we are going to learn the essence of Python and C. Students are going to learn the following concepts.

  • Compiling and running the program
  • Variables, Data Types, and Arithmetic Expressions
  • Loops and Control Flows
  • Arrays and Pointers
  • Functions
  • Data Structures
  • File I/O

Textbook

Python

There are two textbooks for Python. The class is based on the first book which is elementary and an introductory textbook on python for absolute beginner, but the second book is recommend. Although there is no Korean version of Think Python, it is written in plain English with friendly style. It would be better to have this book rather than the first. Moreover, the author made it freely available on the web.

  1. 모두의 파이썬 20일 만에 배우는 프로그래밍 기초 | 이승찬 지음 | 길벗 | 2016년 05월 09일 출간 교보문고 바로가기
  2. Allen B. Downey, "Think Python: How to Think Like a Computer Scientist", 2015, 원서 바로가기 한글 비공식 번역판

C

There are two must have and one (translation available) recommended books. I also recommend you to read C언어 공부법과 책추천(by sunyzero) because it gives guide on how to study the language and provides reasons why the first two books are required textbooks. We are going to use the King's book in the class. Kernighan and Ritchie's book provides very short and concise introduction of C language in less than 50 pages, which is very helpful in understanding the capabilities of the language.

  1. Main K.N. King, "C Programming: A Modern Approach," W. W. Norton & Company, 2nd Edition, 2008 교보문고 바로가기 (KNK로 표기)
  2. Supplementary Brian W. Kernighan, Dennis M. Ritchie, "C Programming Language" Prentice Hall, 1988 (2nd Edition) (Kernighan 의 C언어 프로그래밍) 교보문고 바로가기 (K&R로 표기)
  3. Supplementary Stephen Prata. "C Primer Plus". Sams, 2004 (C 기초 플러스) 교보문고 바로가기


Homework and Guidelines

  • Every week, you are to meet with your team and discuss the materials that you are going to master. After the discussion, you are to write the new findings in the piazza.
  • Your INFO

Schedule and Readings

Part I - Python

Week Topic Lecture Lab References
1 Python Aug-29 Course Overview & Flow Diagram
Reading:
Day01
Aug-30 &
Aug-01
Variables D02-03, Operations and variables
Reading:
Day02 간단한 프로그램 만들기
Day03 연산과 변수

HW
HW No1
TP2-Ch01: 프로그래밍의 정도

TP2-Ch02: 변수와 수식 그리고 문장

2 Sep-05 Review Week 1

Flow Diagram on loops
D04-05 for Loops
Reading:
Day04 for 명령을 사용하여 똑같은 작업 반복하기
Day05 range 명령을 사용하여 변화를 주면서 반복하기
Sept-06 &
Sept-08
D06-07 Drawing and Input
Reading:
Day06 거북이 그래픽으로 그림 그리기
Day07 정보 입력하기

HW
TP2-Ch05: 조건문과 재귀문
3 Sep-12 Review Week 2

D08-09 Condition, Random
Flow Diagram on conditions
Reading:
Day08 True/False 판단하기
Day09 random 모듈로 임의의 수 뽑기
Sept-13 &
Sept-15
D13-14 거북이 응용과 계산 게임
Reading:
Day13 거북이 그래픽 응용하기
Day14 계산 맞히기 게임 만들기
4 Sep-19 Review Week 3

Repetition D10 Loops
Flow Diagram on loops
Reading:
Day10 while 명령으로 반복하기
Sept-20 &
Sept-22
Arrays D14-15 Typing Game
Reading:
Day15: 타자 게임 만들기
TP2-Ch07: 반복
5 Sep-26 Review Week 4

Function D11-12 Definition and calls
Flow Diagram on Functions
Reading:
Day11 함수를 정의하고 호출하기
Day12 함수 응용하기
Sept-27 &
Sept-29
Review TP2-Ch03: 함수 TP2-Ch06: 결과가 있는 함수
6 C Oct-03 추석 Oct-4-6 추석

Part II - C Fundamentals

Week Topic Lecture Lab References
7 Oct-10 EXAM I Place: 407-101 Duration: 2 Hours Oct-11 &
Oct-13
Exam Review & Compilation Pipeline
Lab
To use gcc in Windows, read this page

SRC files
To extract the files type tar -xjvf FILENAME in the terminal
8 Oct-17 C fundamentals, Formatted Input/Output
KNK_C_01_introduction_formatted_IN-OUT.pdf
READING: KNK 2, 3 or K&R 1
Oct-18 &
Oct-20
Ex08
Exercises on C Fundamentals
KNK_C_01_introduction_formatted_IN-OUT_LAB.pdf
SRC files
9 Oct-24 Expression, Selection Statement
KNK_C_02_Expression_selection.pdf
READING: KNK 4, 5 or K&R 2
Oct-25 &
Oct-27
Exercise 9
KNK_C_02_Expression_selection_LAB.pdf
SRC files
10 Oct-31 Control Flow
KNK_C_03_control_flow.pdf
READING: KNK 6 or K&R 3
Nov-01 &
Nov-03
Exercise 10
KNK_C_03_control_flow_LAB.pdf
SRC files

Part III - C Arrays and Pointers

Week Topic Lecture Lab References
11 Nov-07 EXAM II Place: 407-101 Duration: 2 Hours Nov-08 &
Nov-10
Exam Review

포인터 학습법 제출일
12 Nov-14 Review Week 11

Arrays, Functions
READING: KNK 8,9 or K&R 1.6, 4
KNK_C_04_array_functions.pdf
Nov-15 &
Nov-17
Exercise 11
KNK_C_04_array_functions_LAB.pdf
SRC files
13 Nov-21 Review Week 12

Pointers
READING: KNK 11 or K&R 5
KNK_C_05_Pointers.pdf
Nov-22 &
Nov-24
Exercise 12
KNK_C_05_Pointers_Arrays_LAB.pdf
SRC files
14 Nov-28 Review Week 13

Pointers and Arrays
READING: KNK 12
요약자료
포인터와 배열
구조체
Nov-29 &
Dec-01
Exercise 13
15 Dec-05 Review Week 14

Structures
READING: KNK 16 or K&R 6
Review
Dec-6-8 Exercise 14
16 Dec-12 Exam III Place: 407-101 Duration: 2 Hours

Miscellaneous

  • A and B Group will be taught with same text book, class materials, exercises, and assignments.
  • Each class is graded separately.
  • You are to join piazza through [piazza.com/gnu.ac.kr/fall2018/eta00086 here]



Evaluation

Categories Ratio Categories Ratio
Attendance 10 Exam I 20
Before Class Meet-up 10 Exam II 20
Assignments 10 Exam III 20
Quiz 10 Total 100%


Installing Linux

  • Read the following link to install the linux on your machine
  • If you wish to use virtual machine to run linux then use the following link; beware that your pc must have sufficient computation power.

Installing Python and editors

  • Open terminal via Ctrl+Alt+T or search for "Terminal" from app launcher
  • Type the following to install Python: sudo apt-get update; sudo apt-get install python3.6

You can use vi, emacs, or other IDE to work with python.

  • vi and emacs comes with the operating system distribution; however, the version is not up-to-date. To upgrade the version of the programs type the following: sudo apt-get install vi emacs
  • If you wish to use other IDE, such as pycharm or spyder, you can also install them by typing <code sudo apt-get install spyder
  • When asked password for installing the programs, use your log-in password.


To check if python is installed properly.

James@maker:~$ python
Python 2.7.13 (default, Apr  4 2017, 08:47:57)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.38)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello, world")
Hello, world


Useful Sites