Introduction to Computer Programming 2020-02: Difference between revisions
(→Linux) |
|||
(2 intermediate revisions by the same user not shown) | |||
Line 72: | Line 72: | ||
=== Part I - Python === | === Part I - Python === | ||
{|class="wikitable" | {|class="wikitable" | ||
|- | |- | ||
! colspan="2" style="background: Turquoise; text-align:left;"| Week - 1 Python | ! colspan="2" style="background: Turquoise; text-align:left;"| Week - 1 Python | ||
|- | |- | ||
! style="text-align:left;"| Lecture : 2020/09/03 (Thu) '''Introduction''' | ! style="text-align:left;"| Lecture : 2020/09/03 (Thu) '''Introduction''' | ||
! style="text-align:left;"| Lab : 2020/09/04 (Fri) '''Variables''' | ! style="text-align:left;"| Lab : 2020/09/04 (Fri) '''Variables''' | ||
|- | |- | ||
| style="vertical-align: top;"| '''Course Overview''' | | style="vertical-align: top;"| '''Course Overview''' | ||
* First, we will go through the course overview, and what you have to do to succeed in this class. [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/Day_D01_00_syllabus.pdf Course Overview] | * First, we will go through the course overview, and what you have to do to succeed in this class. [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/Day_D01_00_syllabus.pdf Course Overview] | ||
<br> '''Reading:''' | <br> '''Reading:''' | ||
<br> * On computation and on difference with spoken lanuage and computer language [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D01_01_computation.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D01_01_computation.pdf [pdf] ] | <br> * On computation and on difference with spoken lanuage and computer language [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D01_01_computation.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D01_01_computation.pdf [pdf] ] | ||
<br> * Abstract view on python [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D01_02_python.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D01_02_python.pdf [pdf] ] | <br> * Abstract view on python [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D01_02_python.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D01_02_python.pdf [pdf] ] | ||
<br> * Introduction to Flow Diagram [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D01_03_Flowdiagram.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D01_03_Flowdiagram.pdf [pdf] ] | <br> * Introduction to Flow Diagram [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D01_03_Flowdiagram.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D01_03_Flowdiagram.pdf [pdf] ] | ||
<br> '''Workbook:''' | <br> '''Workbook:''' | ||
<br> * In class workbook for understanding the concepts of compution (recommend to use github) [http://open.gnu.ac.kr/lecslides/2020-2-introProg/py_ws/WS_01_language.ipynb notebook] | <br> * In class workbook for understanding the concepts of compution (recommend to use github) [http://open.gnu.ac.kr/lecslides/2020-2-introProg/py_ws/WS_01_language.ipynb notebook] | ||
| style="vertical-align: top;"| '''Reading:''' | | style="vertical-align: top;"| '''Reading:''' | ||
* Variables, operations, and expressions [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D02_01_variables.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D02_01_variables.pdf [pdf] ] | * Variables, operations, and expressions [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D02_01_variables.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D02_01_variables.pdf [pdf] ] | ||
<br> '''Workbook:''' | <br> '''Workbook:''' | ||
<br> * In class workbook for understanding the concepts of compution (recommend to use github) [http://open.gnu.ac.kr/lecslides/2020-2-introProg/py_ws/WS_02_var.ipynb notebook] | <br> * In class workbook for understanding the concepts of compution (recommend to use github) [http://open.gnu.ac.kr/lecslides/2020-2-introProg/py_ws/WS_02_var.ipynb notebook] | ||
|- | |- | ||
| colspan="2"| '''Video:''' | | colspan="2"| '''Video:''' | ||
* Spyder 실행하고 간단한 프로그램 작성하기 (11 min) [[https://www.youtube.com/watch?v=BEnYSxMD9hM&list=PLWm33cHVRby6FzafIXpZLxMTIIjBTN49I watch]] | * Spyder 실행하고 간단한 프로그램 작성하기 (11 min) [[https://www.youtube.com/watch?v=BEnYSxMD9hM&list=PLWm33cHVRby6FzafIXpZLxMTIIjBTN49I watch]] | ||
<br> * Spyder 에서 작성한 코드 파일로 저장하기, 불러오기, 실행하기 (10 min) [[https://www.youtube.com/watch?v=YNaDj-BeM8g&list=PLWm33cHVRby6FzafIXpZLxMTIIjBTN49I&index=2 watch]] | <br> * Spyder 에서 작성한 코드 파일로 저장하기, 불러오기, 실행하기 (10 min) [[https://www.youtube.com/watch?v=YNaDj-BeM8g&list=PLWm33cHVRby6FzafIXpZLxMTIIjBTN49I&index=2 watch]] | ||
<br> * python에서 변수 사용, 생성하기, 그리고 활용하는 예 (8 min) [[https://www.youtube.com/watch?v=_LLC3Cnc8Bw&index=4&list=PLWm33cHVRby6FzafIXpZLxMTIIjBTN49I&t=0s watch]] | <br> * python에서 변수 사용, 생성하기, 그리고 활용하는 예 (8 min) [[https://www.youtube.com/watch?v=_LLC3Cnc8Bw&index=4&list=PLWm33cHVRby6FzafIXpZLxMTIIjBTN49I&t=0s watch]] | ||
<br> * Python의 연산자 종류와 사용 예 (10 min) [[https://www.youtube.com/watch?v=_T2MD7-Sk6A&t=0s&list=PLWm33cHVRby6FzafIXpZLxMTIIjBTN49I&index=5 watch]] | <br> * Python의 연산자 종류와 사용 예 (10 min) [[https://www.youtube.com/watch?v=_T2MD7-Sk6A&t=0s&list=PLWm33cHVRby6FzafIXpZLxMTIIjBTN49I&index=5 watch]] | ||
|- | |- | ||
! colspan="2" style="background: Turquoise; text-align:left;"| Week - 2 Python | ! colspan="2" style="background: Turquoise; text-align:left;"| Week - 2 Python | ||
|- | |- | ||
! style="text-align:left;"| Lecture : 2020/09/10 (Thu) '''For Loop''' | ! style="text-align:left;"| Lecture : 2020/09/10 (Thu) '''For Loop''' | ||
! style="text-align:left;"| Lab : 2020/09/11 (Fri) '''input function''' | ! style="text-align:left;"| Lab : 2020/09/11 (Fri) '''input function''' | ||
|- | |- | ||
| style="vertical-align: top;"| '''Reading:''' | | style="vertical-align: top;"| '''Reading:''' | ||
* for loop is a important building block, and widely used [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D03_01_for.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D03_01_for.pdf [pdf] ] | * for loop is a important building block, and widely used [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D03_01_for.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D03_01_for.pdf [pdf] ] | ||
<br> * In python, range function controls the number of iterations in for loop [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D03_02_range.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D03_02_range.pdf [pdf] ] | <br> * In python, range function controls the number of iterations in for loop [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D03_02_range.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D03_02_range.pdf [pdf] ] | ||
<br> * flow diagram for the for loop and list [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D03_03_flow_list.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D03_03_flow_list.pdf [pdf] ] | <br> * flow diagram for the for loop and list [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D03_03_flow_list.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D03_03_flow_list.pdf [pdf] ] | ||
<br> '''Workbook:''' | <br> '''Workbook:''' | ||
<br> * In class workbook for understanding the concepts of for loop (recommend to use github) [http://open.gnu.ac.kr/lecslides/2020-2-introProg/py_ws/WS_03_for.ipynb notebook] | <br> * In class workbook for understanding the concepts of for loop (recommend to use github) [http://open.gnu.ac.kr/lecslides/2020-2-introProg/py_ws/WS_03_for.ipynb notebook] | ||
| style="vertical-align: top;"| '''Reading:''' | | style="vertical-align: top;"| '''Reading:''' | ||
* Introducing user interaction with input function [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D04_01_input.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D04_01_input.pdf [pdf] ] | * Introducing user interaction with input function [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D04_01_input.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D04_01_input.pdf [pdf] ] | ||
<br> '''Workbook:''' | <br> '''Workbook:''' | ||
<br> * In class workbook for understanding the concepts of input (recommend to use github) [http://open.gnu.ac.kr/lecslides/2020-2-introProg/py_ws/WS_04_input.ipynb notebook] | <br> * In class workbook for understanding the concepts of input (recommend to use github) [http://open.gnu.ac.kr/lecslides/2020-2-introProg/py_ws/WS_04_input.ipynb notebook] | ||
|- | |- | ||
| colspan="2"| '''Video:''' | | colspan="2"| '''Video:''' | ||
* for 문장과 range 함수의 활용 (10 min) [[https://www.youtube.com/watch?v=IcIRxcYHH-I&t=0s&list=PLWm33cHVRby6FzafIXpZLxMTIIjBTN49I&index=6 watch]] | * for 문장과 range 함수의 활용 (10 min) [[https://www.youtube.com/watch?v=IcIRxcYHH-I&t=0s&list=PLWm33cHVRby6FzafIXpZLxMTIIjBTN49I&index=6 watch]] | ||
<br> * input 함수의 활용과 입력한 값의 형의 이해 (9 min) [[https://www.youtube.com/watch?v=HQ06_ThCMkY&t=0s&index=7&list=PLWm33cHVRby6FzafIXpZLxMTIIjBTN49I watch]] | <br> * input 함수의 활용과 입력한 값의 형의 이해 (9 min) [[https://www.youtube.com/watch?v=HQ06_ThCMkY&t=0s&index=7&list=PLWm33cHVRby6FzafIXpZLxMTIIjBTN49I watch]] | ||
|- | |- | ||
! colspan="2" style="background: Turquoise; text-align:left;"| Week - 3 Python | ! colspan="2" style="background: Turquoise; text-align:left;"| Week - 3 Python | ||
|- | |- | ||
! style="text-align:left;"| Lecture : 2020/09/17 (Thu) '''if conditions''' | ! style="text-align:left;"| Lecture : 2020/09/17 (Thu) '''if conditions''' | ||
! style="text-align:left;"| Lab : 2020/09/18 (Fri) '''while loop''' | ! style="text-align:left;"| Lab : 2020/09/18 (Fri) '''while loop''' | ||
|- | |- | ||
| style="vertical-align: top;"| '''Reading:''' | | style="vertical-align: top;"| '''Reading:''' | ||
* Evaluation of expression and logical operators [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D05_01_TF.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D05_01_TF.pdf [pdf] ] | * Evaluation of expression and logical operators [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D05_01_TF.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D05_01_TF.pdf [pdf] ] | ||
<br> * Controlling flow of a program with if and else [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D05_02_flow_cond.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D05_02_flow_cond.pdf [pdf] ] | <br> * Controlling flow of a program with if and else [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D05_02_flow_cond.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D05_02_flow_cond.pdf [pdf] ] | ||
<br> * Introducing randomness to a program [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D05_03_random.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D05_03_random.pdf [pdf] ] | <br> * Introducing randomness to a program [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D05_03_random.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D05_03_random.pdf [pdf] ] | ||
<br> '''Workbook:''' | <br> '''Workbook:''' | ||
<br> * In class workbook for understanding the concepts of flow of a program (recommend to use github) [http://open.gnu.ac.kr/lecslides/2020-2-introProg/py_ws/WS_05_cond.ipynb notebook] | <br> * In class workbook for understanding the concepts of flow of a program (recommend to use github) [http://open.gnu.ac.kr/lecslides/2020-2-introProg/py_ws/WS_05_cond.ipynb notebook] | ||
| style="vertical-align: top;"| '''Reading:''' | | style="vertical-align: top;"| '''Reading:''' | ||
* Another method of making a loop [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D06_01_while.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D06_01_while.pdf [pdf] ] | * Another method of making a loop [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D06_01_while.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D06_01_while.pdf [pdf] ] | ||
<br> * flow diagram for while function [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D06_02_flow_while.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D06_02_flow_while.pdf [pdf] ] | <br> * flow diagram for while function [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D06_02_flow_while.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D06_02_flow_while.pdf [pdf] ] | ||
<br> '''Workbook:''' | <br> '''Workbook:''' | ||
<br> * In class workbook for understanding the concepts of while loop (recommend to use github) [http://open.gnu.ac.kr/lecslides/2020-2-introProg/py_ws/WS_06_while.ipynb notebook] | <br> * In class workbook for understanding the concepts of while loop (recommend to use github) [http://open.gnu.ac.kr/lecslides/2020-2-introProg/py_ws/WS_06_while.ipynb notebook] | ||
|- | |- | ||
| colspan="2"| '''Video:''' | | colspan="2"| '''Video:''' | ||
* if 문장으로 조건 비교하여 실행하기 (15 min) [[https://www.youtube.com/watch?v=Czlotwgg0P0&t=46s&list=PLWm33cHVRby6FzafIXpZLxMTIIjBTN49I&index=8 watch]] | * if 문장으로 조건 비교하여 실행하기 (15 min) [[https://www.youtube.com/watch?v=Czlotwgg0P0&t=46s&list=PLWm33cHVRby6FzafIXpZLxMTIIjBTN49I&index=8 watch]] | ||
<br> * for 문과 유사한 기능의 while문으로 반복 동작을 더 정교하게 조정하기 (7 min) [[https://www.youtube.com/watch?v=bSXZttF79xM&t=0s&index=9&list=PLWm33cHVRby6FzafIXpZLxMTIIjBTN49I watch]] | <br> * for 문과 유사한 기능의 while문으로 반복 동작을 더 정교하게 조정하기 (7 min) [[https://www.youtube.com/watch?v=bSXZttF79xM&t=0s&index=9&list=PLWm33cHVRby6FzafIXpZLxMTIIjBTN49I watch]] | ||
|- | |- | ||
! colspan="2" style="background: Turquoise; text-align:left;"| Week - 4 Python | ! colspan="2" style="background: Turquoise; text-align:left;"| Week - 4 Python | ||
|- | |- | ||
! style="text-align:left;"| Lecture : 2020/09/24 (Thu) | ! style="text-align:left;"| Lecture : 2020/09/24 (Thu) | ||
! style="text-align:left;"| Lab : 2020/09/25 (Fri) '''Custom Functions''' | ! style="text-align:left;"| Lab : 2020/09/25 (Fri) '''Custom Functions''' | ||
|- | |- | ||
| style="vertical-align: top;"| '''Reading:''' [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D07_01_func.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D07_01_func.pdf [pdf] ] | |||
* Dividing the code into functions to reduce the duplicate codes [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D07_01_func.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D07_02_func_ex.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D07_02_func_ex.pdf [pdf] ] | |||
| style="vertical-align: top;"| '''Reading:''' | <br> * Example of using function [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D07_02_func_ex.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D07_03_flow_func.pptx [pptx] ] [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_pdf/ICP_D07_03_flow_func.pdf [pdf] ] | ||
<br> * flow diagram on function [http://open.gnu.ac.kr/lecslides/2020-2-introProg/slides_py_rec/ICP_D07_03_flow_func.pptx [pptx] ] | |||
| style="vertical-align: top;"| '''Workbook:''' | |||
* In class workbook for understanding the concepts of flow of a program (recommend to use github) [http://open.gnu.ac.kr/lecslides/2020-2-introProg/py_ws/WS_07_function.ipynb notebook] | |||
|- | |||
| colspan="2"| '''Video:''' | |||
* 함수의 작성의 문법과 활용의 예와 자기 자신을 다시 부르는 재귀함수의 예 (11 min) [[https://www.youtube.com/watch?v=eWNhiCgqR94&list=PLWm33cHVRby6FzafIXpZLxMTIIjBTN49I&index=10&t=0s watch]] | |||
|- | |||
! colspan="2" style="background: Turquoise; text-align:left;"| Week - 5 Python | |||
| | |- | ||
! style="text-align:left;"| Lecture : 2020/10/01 (Thu) '''Chuseok(추석)''' | |||
! style="text-align:left;"| Lab : 2020/10/02 (Fri) '''Chuseok(추석)''' | |||
|- | |||
| style="vertical-align: top;"| '''National Holiday''' | |||
| style="vertical-align: top;"| '''National Holiday''' | |||
|- | |||
! colspan="2" style="background: Turquoise; text-align:left;"| Week - 6 Python | |||
|- | |||
! style="text-align:left;"| Lecture : 2020/10/08 (Thu) '''Review''' | |||
|- | ! style="text-align:left;"| Lab : 2020/10/09 (Fri) '''Exam I''' | ||
! style="text-align:left;"| Lecture : 2020/10/ | |- | ||
! style="text-align:left;"| Lab : 2020/10/ | | style="vertical-align: top;"| '''Workbook:''' | ||
|- | * Practice before the exam [http://open.gnu.ac.kr/lecslides/2020-2-introProg/py_ws/WS_08_overall.ipynb notebook] | ||
| style="vertical-align: top;"| | | style="vertical-align: top;"| '''Exam''' | ||
* Place : Online | |||
* Time : 16:00-18:00 | |||
|} | |||
|} | |||
=== Part II - C Fundamentals === | === Part II - C Fundamentals === | ||
Line 370: | Line 360: | ||
|- | |- | ||
! colspan="2" style="background: Turquoise; text-align:left;"| Week | ! colspan="2" style="background: Turquoise; text-align:left;"| Week 13 - on C Language | ||
|- | |- | ||
! width=50% ; style="text-align:left;"| Lecture : 2020/11/26 (Thu) ''' Pointers and Arrays ''' | ! width=50% ; style="text-align:left;"| Lecture : 2020/11/26 (Thu) ''' Pointers and Arrays ''' | ||
Line 391: | Line 381: | ||
|- | |- | ||
! colspan="2" style="background: Turquoise; text-align:left;"| Week | ! colspan="2" style="background: Turquoise; text-align:left;"| Week 14 - on C Language | ||
|- | |- | ||
! width=50% ; style="text-align:left;"| Lecture : 2020/12/03 (Thu) ''' Structures ''' | ! width=50% ; style="text-align:left;"| Lecture : 2020/12/03 (Thu) ''' Structures ''' | ||
Line 412: | Line 402: | ||
|- | |- | ||
! colspan="2" style="background: Turquoise; text-align:left;"| Week | ! colspan="2" style="background: Turquoise; text-align:left;"| Week 15 - on C Language | ||
|- | |- | ||
! width=50% ; style="text-align:left;"| Lecture : 2020/12/10 (Thu) ''' Review ''' | ! width=50% ; style="text-align:left;"| Lecture : 2020/12/10 (Thu) ''' Review ''' | ||
Line 425: | Line 415: | ||
* Time: 14:00-16:00 | * Time: 14:00-16:00 | ||
|} | |} | ||
== Miscellaneous == | == Miscellaneous == | ||
* A and B Group will be taught with the same text book, class materials, exercises, and assignments. | * A and B Group will be taught with the same text book, class materials, exercises, and assignments. |
Latest revision as of 13:52, 17 September 2020
open.gnu.ac.kr
Class Information
Class Info | |
---|---|
Class | ETA00014 - 컴퓨터 프로그래밍 기초 PBL, ETA00015 컴퓨터 프로그래밍 기초 실습 PBL |
Lecturer | Seongjin Lee |
Time and Place | A & B Group (Theory): 407-508 Thursday 14:00-16:00 |
A Group (Practice): 407-203, Friday 12:00-14:00 | |
B Group (Practice): 407-203, Friday 14:00-16:00 | |
1st Exam | on 02-Oct Friday 16:00-18:00 in 407-101 |
2nd Exam | on 06-Nov Friday 16:00-18:00 in 407-101 |
3rd Exam | on 11-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.
- 모두의 파이썬 20일 만에 배우는 프로그래밍 기초 | 이승찬 지음 | 길벗 | 2016년 05월 09일 출간 교보문고 바로가기
- 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.
- Main K.N. King, "C Programming: A Modern Approach," W. W. Norton & Company, 2nd Edition, 2008 교보문고 바로가기 (KNK로 표기)
- Translated version available on the Internet is here
- Supplementary Brian W. Kernighan, Dennis M. Ritchie, "C Programming Language" Prentice Hall, 1988 (2nd Edition) (Kernighan 의 C언어 프로그래밍) 교보문고 바로가기 (K&R로 표기)
- Supplementary Stephen Prata. "C Primer Plus". Sams, 2004 (C 기초 플러스) 교보문고 바로가기
Homework and Guidelines
- Please share any question through …
Part I - Python
Week - 1 Python | |
---|---|
Lecture : 2020/09/03 (Thu) Introduction | Lab : 2020/09/04 (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:
* Variables, operations, and expressions [pptx ] [pdf ]
|
Video:
* Spyder 실행하고 간단한 프로그램 작성하기 (11 min) [watch]
| |
Week - 2 Python | |
Lecture : 2020/09/10 (Thu) For Loop | Lab : 2020/09/11 (Fri) input function |
Reading:
* for loop is a important building block, and widely used [pptx ] [pdf ]
|
Reading:
* Introducing user interaction with input function [pptx ] [pdf ]
|
Video:
* for 문장과 range 함수의 활용 (10 min) [watch]
| |
Week - 3 Python | |
Lecture : 2020/09/17 (Thu) if conditions | Lab : 2020/09/18 (Fri) while loop |
Reading:
* Evaluation of expression and logical operators [pptx ] [pdf ]
|
Reading:
* Another method of making a loop [pptx ] [pdf ]
|
Video:
* if 문장으로 조건 비교하여 실행하기 (15 min) [watch]
| |
Week - 4 Python | |
Lecture : 2020/09/24 (Thu) | Lab : 2020/09/25 (Fri) Custom Functions |
Reading: [pptx ] [pdf ]
* Dividing the code into functions to reduce the duplicate codes [pptx ] [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 - 5 Python | |
Lecture : 2020/10/01 (Thu) Chuseok(추석) | Lab : 2020/10/02 (Fri) Chuseok(추석) |
National Holiday | National Holiday
|
Week - 6 Python | |
Lecture : 2020/10/08 (Thu) Review | Lab : 2020/10/09 (Fri) Exam I |
Workbook:
* Practice before the exam notebook |
Exam
* Place : Online * Time : 16:00-18:00
|
Part II - C Fundamentals
Week 7 - on C Language | |
---|---|
Lecture : 2020/10/15 (Thu) | Lab : 2020/10/16 (Fri) |
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 ]
|
Video:
* Introduction to C programming [watch ] (44m)
| |
Week 8 - on C Language | |
Lecture : 2020/10/22 (Thu) | Lab : 2020/10/23 (Fri) |
Reading:
* Expressions and Operators [ppt ]
|
Reading:
* if-else and switch cases [ppt ]
|
Video:
* Selection Statement [watch ] (44m)
| |
Week 9 - on C Language | |
Lecture : 2020/10/29 (Thu) | Lab : 2020/10/30 (Fri) |
Reading:
* Summary on control flow [ppt ]
|
Worksheet:
* for loop [worksheet ]
|
Video:
* On Control flow [watch ] (58m) | |
Week 10 - on C Language | |
Lecture : 2020/11/05 (Thu) | Lab : 2020/11/06 (Fri) |
Reading:
* Summary on array [ppt ]
|
Review and Reading:
|
Video:
* Creating and Subscripting Array watch (11:06)
| |
Week 11 - on C Language | |
Lecture : 2020/11/12 (Thu) | Lab : 2020/11/13 (Fri) |
Review and Reading:
|
Exam
* Place : 407-101 * Time : 16:00-18:00 |
Part III - C Arrays and Pointers
Week 12 - on C Language | |
---|---|
Lecture : 2020/11/19 (Thu) Exam II | Lab : 2020/11/20 (Fri) Fucntions: Exercise |
Reading:
* Pointers Summary [ppt ] [pdf ]
|
Worksheet:
* Excercises on Pointers [worksheet ]
|
Video:
* Pointer Animation (Stanford Univ.) [watch ] (3m) | |
Week 13 - on C Language | |
Lecture : 2020/11/26 (Thu) Pointers and Arrays | Lab : 2020/11/27 (Fri) Pointers and Arrays: Excercises |
Reading:
* Pointers and Arrays Summary [ppt ] [pdf ]
|
Worksheet:
* Pointers and Arrays Worksheet [worksheet ] |
Video:
* pointer operators [watch (4:41)]
| |
Week 14 - on C Language | |
Lecture : 2020/12/03 (Thu) Structures | Lab : 2020/12/04 (Fri) Structures: Excercises |
Reading:
* Structures Summary [ppt ] [pdf ]
|
Worksheet:
* Excercises on Structures
|
Week 15 - on C Language | |
Lecture : 2020/12/10 (Thu) Review | Lab : 2020/12/11 (Fri) Exam |
Review:
* Review of Functions, Pointers, Structures |
Exam III
* Place: 407-101 * Time: 14:00-16:00 |
Miscellaneous
- A and B Group will be taught with the same text book, class materials, exercises, and assignments.
- Each class is graded separately.
Evaluation
Categories | Ratio | Categories | Ratio |
---|---|---|---|
Attendance | 15 | Exam I | 20 |
Before Class Meet-up Report | 15 | Exam II | 20 |
Assignments | 10 | Exam III | 20 |
Total | 100% |
Setup Instructions
Step 1: 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.
Step 2: Installing Python and C
Python
Linux
- Open terminal via
Ctrl+Alt+T
or search for "Terminal" from app launcher in Linux - Type the following to install Python:
sudo apt-get update; sudo apt-get install python3.8
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
Windows
Download and install python for windows from here
C
Linux
C in Linux is prebuilt into the system; however, on windows it is not.
If C compiler is not installed in the system then follow the steps in the terminal Ctrl+Alt+t
.
sudo apt-get update # 패키지 리스트 최신화
sudo apt-get upgrade # 패키지 업그레이드
sudo apt-get install build-essential # 컴파일러 환경 설치
gcc -v # gcc 설치 버전 확인
make -v # make 설치 버전 확인
Windows
Follow the description on here
Step 3: Installing Jupyter Notebook
Option 1: Installation via Anaconda
It is recommended that you install Jupyter Notebook via Anaconda
- Download & install Anaconda for Python here
- Run
jupyter notebook
to confirm that it is properly installed
If Anaconda doesn't have jupyter: you can try running
conda install jupyter
Option 2: Installation via pip
You can also install via the python package manager pip
- Make sure you have installed
python
andpip
- Make sure
pip
is updated to its latest versionpip install --user --upgrade pip
- Install Jupyter Notebook
pip install --user --upgrade jupyter
Step 3: Installing Other Dependencies
Installing C for Jupyter
Open up the terminal and type the following commands to install minimal C for jupyter
pip install jupyter-c-kernel
install_c_kernel
jupyter notebook
Git
Git is a version control system which we use to store the various course material; you can download from here
- you can download the course material from here
- If you want the up-to-date version of the course material, checkout the course repository from the git by typing the following command
git clone https://github.com/resourceful/ICP
IDE
If you wish to use other IDE, such as pycharm or spyder, you can also install them by typing
sudo apt-get install spyder
- When asked password for installing the programs, use your log-in password.
Installing Vi or emacs: the editors
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
- When asked password for installing the programs, use your log-in password.
Step 4: Getting Started
Getting the latest course materials
You can always access the latest course materials on the course website. You can download all at once and keep them synced by using git. To get started with this, run:
git clone https://github.com/resourceful/ICP.git
Now you should have all the materials in Introduction to Computer Programming; to get the latest version, run the following command in the repository.
git pull
To read the notebook
In the directory where the relevant course materials are, run:
jupyter notebook
Useful Sites
- https://www.codesdope.com/ - Well documented online learning site for a number of programming languages.
- https://cs50.harvard.edu - People say CS50 in hazard is "Demanding, but definitely doable. Social, but educational. A focused topic, but broadly applicable skills. CS50 is the quintessential Harvard (and Yale!) course." There video lectures on c and its applications are really helpful.
- Intro to CS and Prog in Python MIT - There video lectures on python are also helpful
- Intro. to C and C++ MIT - The slide for lecture one is impressive. They give lectures on c and c++
- Practical Programming in C MIT - Yet, another lecture on C
- cs107 Stanford (archived, 2016) - For deeper understanding of C and its relationship with the system.