プログラミング通論

科目基礎情報

学校 熊本高等専門学校 開講年度 2019
授業科目 プログラミング通論
科目番号 CI1305 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 履修単位: 2
開設学科 制御情報システム工学科 対象学年 3
開設期 通年 週時間数 2
教科書/教材 Head First C(David Griffiths, Dawn Griffiths, O'Reilly)
担当教員 嶋田 泰幸

到達目標

This course aims that students can:
1) allocate portions of memory resources by calling some functions.
2) declare and use structures.
3) make programs which use system services (system call) and IPC (Inter-Process Communicaition
4) make programs for multiprocessing and/or multithreading.
5) implement datastructures and several sorting algorithms in C language.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
Pointers and structureStudents can write programs which utilize poiters and structure to handle data/informationStudents can write simple programs which utilize pointers and structures.Students can't write simple programs which utilize pointers and structures.
System call, MultiProcessingStudents can execute some programs using system calls, and create some processes by calling fork( ).Students can write programs in the textbook using system calls and multiprocessing, and make simple programs which call system call or fork( ).Students can't write programs in the textbook using system calls and multiprocessing, and make simple programs which call system call or fork( ).
Inter process communicationstudents can write programs which communicate with other process.Students can write sample programs of inter process communication in the textbook.Students can't write sample programs of inter process communication in the textbook.
Data structure and algorithmsStudents can implement datastructures and several sorting algorithms in C language.Students can implement several sorting algorithms.Students can't implement several sorting algorithms.

学科の到達目標項目との関係

教育方法等

概要:
This course provides an introduction and implementation of computer programming; C language.
C language is one of the most widely used computer language in the world and it's very useful for you to lean C language. This course covers pointer, structures, memory allocation, task management and interprocess communication program.
授業の進め方・方法:
Flipped teaching will be introduced in this subject. Learning video will be provided by uploading on Web server in advance of the class. Students have to access ther web server and watch the video for self-learning. Only students who learned by watching the video can participate in the class.
During class, students have to discuss with friends/team-mates in order to solve problems that are given at the beginning of each class, and submit a report within the class.
注意点:
In order to understand contents of this course, it's very important for students to make as many programs as possible.
Prescribed teaching hours : 60 hours a year

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 Introduction Students will be able to understand the basic concepts of programming in C.
2週 Memory, Pointers and Strings Students will be able to understand similarities/differences between arrays and pointers. And, students will be able to make simple programs using pointers instead of arrays. Students will be able to know how to handle strings in C and use some built-in library functions.
3週 Structures, Unions and Bitfields(1) Students will be able to write programs which combine the basic data types into structures.
4週 Structures, Unions and Bitfields(2) Same as above.
5週 Dynamic Memory Allocation(1) Students will be able to know basic concept of linked list. Also, students will be able to know how to make data structure cope with flexible amounts of data by dynamically allocating memory on the heap.
6週 Dynamic Memory Allocation(2) Same as above.
7週 Comprehensive exercise Students will be able to make some programs using pointers, and structures.
8週 File Input/Output Students will be able to save/fetch data into/from a file instead of standard stream.
2ndQ
9週 Advanced Functions(1) Students will be able to write programs that utilize pointers to functions.
10週 Advanced Functions(2) Same as above.
11週 Static and Dynamic Libraries(1) Students will be able to make own libraries and reuse the same code across several programs.
12週 Static and Dynamic Libraries(2) Same as above.
13週 Processes and System Calls(1) Students will be able to create and control processes using system services.
14週 Processes and System Calls(2) Same as above.
15週 Comprehensive exercise Students will be able to write some program using several technics which is taught in the first semester.
16週 Examination, Evaluation & Course summary
後期
3rdQ
1週 Inter-Process Communication(1) Students wil be able to let processes work together and communicate with each other.
2週 Inter-Process Communication(2) Same as above.
3週 Inter-Process Communication(3) Same as above.
4週 Socket and Networking(1) Students will be able to create programs that behave as servers and programs that behave as clients.
5週 Socket and Networking(2) Same as above
6週 Socket and Networking(3) Same as above
7週 Comprehensive exercise Students will be able to make some programs using system calls and Inter-Process communications
8週 Threads(1) Students will be able to know how to create threads and how to use synchronization mechanisms to protect the integrity of sensitive data.
4thQ
9週 Threads(2) Same as above.
10週 Data structure(1) Students will be able to make some programs to implement datastructures in C language.
11週 Data structure(2) Same as above.
12週 Sorting algorithm(1) Students will be able to make some programs to implement sorting algorithms in C language.
13週 Sorting algorithm(2) Same as above.
14週 Sorting algorithm(3) Same as above.
15週 Comprehensive exercise Students will be able to write some program using several technics which is taught in the second semester.
16週 Examination, Evaluation & Course summary

モデルコアカリキュラムの学習内容と到達目標

分類分野学習内容学習内容の到達目標到達レベル授業週
基礎的能力工学基礎情報リテラシー情報リテラシー同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを知っている。3前7,前15,後7
与えられた基本的な問題を解くための適切なアルゴリズムを構築することができる。3前7,前15,後7
任意のプログラミング言語を用いて、構築したアルゴリズムを実装できる。3前7,前15,後7
専門的能力分野別の専門工学情報系分野プログラミングプロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。3前8,前9,前10,前13,前14,前15,後1,後2,後3,後4,後5,後6,後8,後9,後10,後11,後12,後13,後14,後15
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。3前1,前2,前3,前4,前8,前9,前10,前11,前12,前13,前14,前15,後1,後2,後3,後4,後5,後6,後8,後9,後10,後11,後12,後13,後14,後15
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。3前1,前2,前3,前4,前8,前9,前10,前11,前12,前13,前14,前15,後1,後2,後3,後4,後5,後6,後8,後9,後10,後11,後12,後13,後14,後15
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。2前8,前9,前10,前11,前12,前13,前14,前15,後3,後4,後5,後6,後8,後9,後10,後11,後12,後13,後14,後15
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。2前9,前13,前14,前15,後3,後4,後5,後6,後8,後9,後10,後11,後12,後13,後14,後15
計算機工学整数・小数をコンピュータのメモリ上でディジタル表現する方法を説明できる。3前5,前6,前7,前8,前11,前12,前15,後8,後15
情報通信ネットワークローカルエリアネットワークの概念を説明できる。1後3,後4,後5,後6,後8,後9,後10,後11,後12,後13,後14,後15
分野別の工学実験・実習能力情報系分野【実験・実習能力】情報系【実験・実習】与えられた問題に対してそれを解決するためのソースプログラムを、標準的な開発ツールや開発環境を利用して記述できる。3前1,前2,前3,前4,前5,前6,前7,前8,前9,前10,前11,前12,前13,前14,前15,後1,後2,後3,後4,後5,後6,後8,後9,後10,後11,後12,後13,後14,後15
ソフトウェア生成に利用される標準的なツールや環境を使い、ソースプログラムをロードモジュールに変換して実行できる。3前1,前2,前3,前4,前5,前6,前7,前8,前9,前10,前11,前12,前13,前14,前15,後1,後2,後3,後4,後5,後6,後8,後9,後10,後11,後12,後13,後14,後15
ソフトウェア開発の現場において標準的とされるツールを使い、生成したロードモジュールの動作を確認できる。3前1,前2,前3,前4,前5,前6,前7,前8,前9,前10,前11,前12,前13,前14,前15,後1,後2,後3,後4,後5,後6,後8,後9,後10,後11,後12,後13,後14,後15

評価割合

試験レポート合計
総合評価割合4060100
基礎的能力000
専門的能力4060100
分野横断的能力000