Introduction to Computer Programming 2019-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-508 Thursday 14:00-16:00
A Group (Practice): 407-203, Friday 14:00-16:00
B Group (Practice): 407-203, Friday 16:00-18:00
1st Exam on 11-Oct Friday 16:00-18:00 in 407-101
2nd Exam on 15-Nov Friday 16:00-18:00 in 407-101
3rd Exam on 13-Dec Friday 16:00-18:00 in 407-101
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로 표기)
    1. Translated version available on the Internet is here
  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.
  • Please share your email info here.




Part I - Python

Week - 1 Python
Lecture : 05/09/2019 (Thu) Introduction Lab : 06/09/2019 (Fri) Variables
Course Overview

* First, we will go through the course overview, and what you have to do to succeed in this class. Course Overview
Reading:
* On computation and on difference with spoken lanuage and computer language [pptx ] [pdf ]
* Abstract view on python [pptx ] [pdf ]
* Introduction to Flow Diagram [pptx ] [pdf ]
Workbook:
* In class workbook for understanding the concepts of compution (recommend to use github) notebook

Reading:

* Variables, operations, and expressions [pptx ] [pdf ]
Workbook:
* In class workbook for understanding the concepts of compution (recommend to use github) notebook

Video:

* Spyder 실행하고 간단한 프로그램 작성하기 (11 min) [watch]
* Spyder 에서 작성한 코드 파일로 저장하기, 불러오기, 실행하기 (10 min) [watch]
* python에서 변수 사용, 생성하기, 그리고 활용하는 예 (8 min) [watch]
* Python의 연산자 종류와 사용 예 (10 min) [watch]

Week - 2 Python
Lecture : 12/09/2019 (Thu) Chuseok(추석)' Lab : 13/09/2019 (Fri) Chuseok(추석)'
National Holiday National Holiday



Week - 3 Python
Lecture : 19/09/2019 (Thu) For Loop Lab : 20/09/2019 (Fri) input function
Reading:

* for loop is a important building block, and widely used [pptx ] [pdf ]
* In python, range function controls the number of iterations in for loop [pptx ] [pdf ]
* flow diagram for the for loop and list [pptx ] [pdf ]
Workbook:
* In class workbook for understanding the concepts of for loop (recommend to use github) notebook

Reading:

* Introducing user interaction with input function [pptx ] [pdf ]
Workbook:
* In class workbook for understanding the concepts of input (recommend to use github) notebook

Video:

* for 문장과 range 함수의 활용 (10 min) [watch]
* input 함수의 활용과 입력한 값의 형의 이해 (9 min) [watch]

Week - 4 Python
Lecture : 26/09/2019 (Thu) if conditions Lab : 27/09/2019 (Fri) while loop
Reading:

* Evaluation of expression and logical operators [pptx ] [pdf ]
* Controlling flow of a program with if and else [pptx ] [pdf ]
* Introducing randomness to a program [pptx ] [pdf ]
Workbook:
* In class workbook for understanding the concepts of flow of a program (recommend to use github) notebook

Reading:

* Another method of making a loop [pptx ] [pdf ]
* flow diagram for while function [pptx ] [pdf ]
Workbook:
* In class workbook for understanding the concepts of while loop (recommend to use github) notebook

Video:

* if 문장으로 조건 비교하여 실행하기 (15 min) [watch]
* for 문과 유사한 기능의 while문으로 반복 동작을 더 정교하게 조정하기 (7 min) [watch]

Week - 5 Python
Lecture : 03/10/2019 (Thu) Lab : 04/10/2019 (Fri) Custom Functions
개천절(National Holiday) Reading:

* Dividing the code into functions to reduce the duplicate codes [pptx ] [pdf ]
* Example of using function [pptx ] [pdf ]
* flow diagram on function [pptx ] [pdf ]
Workbook:
* In class workbook for understanding the concepts of flow of a program (recommend to use github) notebook

Video:

* 함수의 작성의 문법과 활용의 예와 자기 자신을 다시 부르는 재귀함수의 예 (11 min) [watch]

Week - 6 Python
Lecture : 10/10/2019 (Thu) Review Lab : 11/10/2019 (Fri) Exam I
Workbook:

* Practice before the exam notebook

Exam

* Place : 407-101 * Time : 16:00-18:00






Part II - C Fundamentals

Week 7 - on C Language
Lecture : 17/10/2019 (Thu) Introduction Lab : 18/10/2019 (Fri) Overview, printf, and scanf'
Reading:

* The essential basics of getting to know the C language: pre-processing, compile, variables, linking (adapted from 6.s096 MIT) [pdf ]

Reading:

* Introduction to C programming [ppt ] [pdf ]
* To read user inputs and print texts on screen [ppt ] [pdf ]
Worksheet:
* Formatted input and output [worksheet ]
* printf in detail [worksheet ]
* scanf in detail [worksheet ]

Video:

* Introduction to C programming [watch ] (44m)
* Formatted input and output [watch ] (30m)


Week 8 - on C Language
Lecture : 24/10/2019 (Thu) expressions Lab : 25/10/2019 (Fri) if -else and switch cases
Reading:

* Expresions and Operators [ppt ] [pdf ]
Worksheet:
* Expresions and Operators [worksheet ]

Reading:

* if-else and switch cases [ppt ] [pdf ]
Worksheet:
* if-else [worksheet ]
* switch case [worksheet ]

Video:

* Selection Statement [watch ] (44m)

Week 9 - on C Language
Lecture : 31/10/2019 (Thu) Control Flow Statements Lab : 01/11/2019 (Fri) Excercises on control flow statements
Reading:

* Summary on control flow [ppt ] [pdf ]
* Control flow statements [ppt ] [pdf ]
Worksheet:
* in class excercises with pencil and papers

Worksheet:

* for loop [worksheet ]
* while loop [worksheet ]
* do…while loop [worksheet ]
* break; continue; goto [worksheet ]

Video:

* On Control flow [watch ] (58m)

Week 10 - on C Language
Lecture : 07/11/2019 (Thu) Arrays Lab : 08/11/2019 (Fri) Arrays Review and Functions
Reading:

* Summary on array [ppt ] [pdf ]
* Array [ppt ] [pdf ]
Worksheet:
* array [worksheet ]

Assignemnt:
* description on [description ]
* Due: Nov-19 (Mon) before class
* submit through piazza

Review and Reading:


* Recap on Array
* Summary on Fuctions [ppt ] [pdf ]
* Details of Functions [ppt ] [pdf ]
Worshop:
* In class exercise [worksheet ]


Week 11 - on C Language
Lecture : 14/11/2019 (Thu) Review Lab : 15/11/2019 (Fri) Exam II
Review and Reading:


* Recap on Array
* Summary on Fuctions [ppt ] [pdf ]
* Details of Functions [ppt ] [pdf ]
Worshop:
* In class exercise [worksheet ]

Exam

* Place : 407-101 * Time : 16:00-18:00









Part III - C Arrays and Pointers

Week 12 - on C Language
Lecture : 14/11/2019 (Thu) Exam II Lab : 15/11/2019 (Fri) Fucntions: Exercise
Reading:

* Pointers Summary [ppt ] [pdf ]
* Pointers in details [ppt ] [pdf ]
Worksheet:
* In class excercises with pencil and paper * Functions [worksheet ]

Worksheet:

* Excercises on Pointers [worksheet ]
Assignment:
* Due date: Two weeks from today
* Submit through Piazza (code, description, result screen capture)
* Assignment Specification [is here ]

Video:

* Pointer Animation (Stanford Univ.) [watch ] (3m)

Week 14 - on C Language
Lecture : 21/11/2019 (Thu) Pointers and Arrays Lab : 22/11/2019 (Fri) Pointers and Arrays: Excercises
Reading:

* Pointers and Arrays Summary [ppt ] [pdf ]
* Pointers and Arrays [ppt ] [pdf ]

Worksheet:

* Pointers and Arrays Worksheet [worksheet ]


Week 15 - on C Language
Lecture : 28/11/2019 (Thu) Structures Lab : 29/11/2019 (Fri) Structures: Excercises
Reading:

* Structures Summary [ppt ] [pdf ]
* Structures [ppt ] [pdf ]
Worksheet:
*

Worksheet:

* Excercises on Structures
*

Week 16 - on C Language
Lecture : 05/12/2019 (Thu) Review Lab : 06/12/2019 (Fri) Exam
Review:

* Review of Functions, Pointers, Structures

Exam III

* Place: 407-101 * Time: 12:00-14:00