コンピュータサイエンス

科目基礎情報

学校 久留米工業高等専門学校 開講年度 令和04年度 (2022年度)
授業科目 コンピュータサイエンス
科目番号 7E12 科目区分 専門 / 選択
授業形態 講義 単位の種別と単位数 学修単位: 2
開設学科 機械・電気システム工学専攻(電気電子工学コース) 対象学年 専2
開設期 前期 週時間数 2
教科書/教材 例解UNIX/Linuxプログラミング教室, 冨永 和人 著,権藤 克彦 著, オーム社
担当教員 加藤 直孝

到達目標

本科目では,Linuxシステムプログラミングの第一歩を踏む出すことを目的とする.15時間でLinuxのシステムプログラミングを習得することは,学修単位であってもかなり困難だと思います.しかし,踏み出さないことには始まりません.そこで,この授業では,テーマをプロセスとソケット通信にフォーカスして学習を進めます.あえて,12章あるうちの2章にテーマを絞って話を進めることで,この2つの章の内容に関しては,受講者全員が完全にその2章をマスターしている状態を目指します.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1C言語で,pointerとstructureを自由に使いこなせる.C言語で,pointerとstructureを使ったプログラムを解読できる.C言語で,pointerとstructureを使ったプログラムを解読できない.
評価項目2プロセスを制御するプログラムを書ける.プロセスを扱うプログラムを解読することができる.プロセスを扱うプログラムを解読することができない.
評価項目3ソケットを使ったプログラムを書ける.ソケットを使ったプログラムを解読することができる.ソケットを使ったプログラムを解読することができない.

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

JABEE B-1 説明 閉じる

教育方法等

概要:
この授業では,Linux(ここではUbuntuに限定する)のシステムプログラミングの習得を目指す.上記の目的・到達目標にも書いたように,全体で12章ある教科書の2章のみにフォーカスして授業を行う.2つの章にフォーカスするが,結局は,streamなどLinuxにおける常識を身に着けている必要がるため,そうでない場合は,前半の他の章の部分を拾い読みしながら学習を進めることになる.ただし,授業の最初の3回はC言語を復習する.
実務経験のある教員による授業科目:加藤は企業(IBM)でソフトウェアの開発を担当していた.その経験を活かし,オブジェクト指向におけるソフトウェア・インターフェースについて授業を行う.
授業の進め方・方法:
教科書の内容に関する限り,学生のグループによる発表で内容の理解を進める.教科書の例や問題は各自が毎回プログラミングして動作を確認して,各自ちょっとした改変を行い,そのプログラムを課題の成果とする.教員は,Michael Kerriskの本(LINUXプログラミングインターフェース,O'REILLY)のプログラムコードの内容を用いて別の角度から,プロセスとソケットプログラミングに関する説明を行う.PCは各自のPCを持参すること.PCは何らかの形でUbuntuが動作すればよい.ただし,最初の約1か月間はC言語の復習をして,ポインターの扱いを思い出すようにする.
注意点:
授業では,
評価方法詳細:
発表 70%,課題等その他 30% を目安として評価する. 60点以上を合格とする.再試は行わない.
発表者以外も次回の授業範囲を予習し、教科書の該当範囲を事前に読んでおくこと。

授業の属性・履修上の区分

アクティブラーニング
ICT 利用
遠隔授業対応
実務経験のある教員による授業

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 オリエンテーションとWSLおよびVirtualbox上のUbuntuの動作確認 独力で色々なプログラミング環境を構築できる.
2週 「ふつうのLinuxプログラミング 第2版,青木峰朗, SB Creative」を用いて,Linuxの全体像を把握する.
ファイルシステム,プロセス,ストリームが大雑把に理解できる.
3週 グループ発表1(発表の中で質問してもよい)
C言語の復習(1):細かいことではなく,後のページを読むために,どこに何が書かれているかを説明する.
教科書の内容の理解ではなく,どこに何が書かれているかを理解する.
4週 グループ発表2(発表の中で質問してもよい)
C言語の復習(2)
ポインターの扱い方を思い出す.
5週 C言語の復習が完了しない場合の予備 C言語を完全に思い出す.
6週 グループ発表3
「プロセスとプログラムの関係,環境変数(5.1-5.2)」について発表する.
環境変数とは何かをはっきり理解できる.
7週 グループ発表4
「プロセスの終了と複製(5.3-5.6)」について発表する.
プロセスを複製するプログラムが書ける.
8週 グループ発表5
「プログラムを実行する(5.7-5.10)」について発表する.
execに関するプログラムを自由に使える
2ndQ
9週 グループ発表5続き
「プロセス関連その他(5.8-5.13)」について発表する.
リダイレクトなとその他のプロセス関連のことが理解できる.
10週 予備(可能なら先輩の講演を聞く) 予備
11週 グループ発表6
「クライアント・サーバープログラムを書く(8.1-8.6)」
C言語でクライアント・サーバープログラムが書ける
12週 グループ発表7
「並行サーバー,selectによる多重化I/Oのプログラムを書く(8.7-8.8)」
並行サーバーのための,子プロセスによる処理とSelectによる処理によるプログラムが書ける.
13週 グループ発表8
「クライアント・サーバープログラム,その他(8.9-8.12)」
gethostbyname関連のAPIを理解している.
14週 予備 予備
15週 予備 予備
16週

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

分類分野学習内容学習内容の到達目標到達レベル授業週
専門的能力分野別の専門工学情報系分野プログラミング代入や演算子の概念を理解し、式を記述できる。3前1,前2,前3,前4,前5,前6,前7,前8,前9,前10,前11,前12,前13
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。3前1,前2,前3,前4,前5,前6,前7,前8,前9,前10,前11,前12,前13
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。3前1,前2,前3,前4,前5,前6,前7,前8,前9,前10,前11,前12,前13
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。3前1,前2,前3,前4,前5,前6,前7,前8,前9,前10,前11,前12,前13
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。3前2,前3,前4,前5,前6,前7,前8,前9,前10,前11,前12,前13

評価割合

試験発表相互評価態度ポートフォリオその他合計
総合評価割合07000030100
基礎的能力0300001040
専門的能力0200001030
分野横断的能力0200001030