科目名 |
情報科学2 |
担当教員 |
篠森 敬三 |
対象学年 |
1年 |
クラス |
学部:自然004 |
講義室 |
K−WS |
開講学期 |
2学期 |
曜日・時限 |
火2,金2 |
単位区分 |
選択 |
授業形態 |
一般講義 |
単位数 |
2 |
準備事項 |
|
備考 |
|
授業の詳細1 |
講義の目的 本講義は,いわゆるプログラミングリテラシーである。すなわち情報システム工学科の学生として必要なプログラム作成が出来るようになることが目標である。本講義は情報システム工学科における最初のプログラム実習科目であり,最も優れた教育言語であるPascalを用いてプログラミングへの入門とする。 『情報科学』は情報科学のエッセンスを,Pascalプログラミングを通じで学習する科目である。高知工科大学工学部における『情報科学』の講義の概念的範囲は(1)「PCの操作とPascal環境の操作」,(2)「プログラミングの概念」についての講義,(3)実際に作ってみる,(4)情報科学に対する理解と実際のプログラミング,に分割される。ただし,情報システム工学科においてはプログラミング能力を身につけることと,情報科学の概念を理解することは死活的に重要であるため,上記内容を,『情報科学2J』の枠を越えて,いくつかの科目に分割している。(1)の「PCの操作とPascal環境の操作」は,『情報科学1J』と『情報科学2J』の2科目に射影される。(2)については主として『計算機言語第1』さらには『情報科学2J』によって行われる。また(3)は『情報科学2J』によって実施される。(4)は『情報科学3J』が主に分担する。 さらに本講義では,(5)「プログラミングにおけるより高度な概念」の獲得にも主眼を置く。(5)が示すところの「抽象化,カプセル化,階層構造,多様性」という概念をさらに具体的に,「プログラミングによる問題解決」の作業を通じて理解する。座学的に抽象的な概念だけを学ぶのではなく,実際にソースコードを作成する作業を通じて,具体的にそれら概念を獲得することを目指す。つまり「概念の説明と学習<->実際のプログラミング」のサイクルの中で,身につけるべき情報科学の概念を獲得することを意図した。 学習の流れから考えて,本講義を履修する全ての学生は『計算機言語第1』と『情報科学1J』の2科目の同時履修(ただし『情報科学1J』は2Qに履修)を行わなければならない(あるいは単位取得済であればよい)。
達成目標
本講義により,基本的なPascalの習熟から始めて基本的な制御構造(分岐と繰り返し)で記述可能な課題に対するプログラミング能力を身につける。 |
授業の詳細2 |
さらに,より複雑な変数宣言を学習するとともに,関数や手続きの学習を通じて,手続き型言語の応用的使用法について修得する。また,実際に演習の中で解決する課程で,アルゴリズムとコンピュータ科学に対する理解を深めるとともに,仕様を考えプログラムを設計してからコーディングし,テスト,デバッグする一連の流れを身につける。
講義の進め方 K-WSのWork Stationの使い方およびUNIX上のアプリケ?ションの使い方の概説をまず復習する。これはPascalのプログラミングを早急に始めるために,UNIXの知識が必要なためである。ただし復習は短時間で終了する.A-WSの使い方やUNIX上のアプリケーションの使い方については,『情報科学1J』の中で修得していることを前提とする。 そしてコンピュータ言語の入門としてのPascalプログラミング実習を行う。各回ごとに,その回の目標達成度を確認するために出題される「今日の課題」を完成させ,「今日の課題レポート」として提出する。また確認演習を演習形式で実施し,そこでの確認課題の達成度を確かめる.また最後にプログラム課題を出題し,基本的な制御構造までを用いたPascalプログラミング能力が修得できたかどうかを判定する。 本科目ではプログラミング演習を主体とし,Pascal言語の文法に関する詳しい説明は『計算機言語第1』の講義の中で行う。 なおプログラミング作業時間を増やすため,本講義の「専門科目演習」は本講義の各コマの直後に一対一対応で設定されており,全体として「専門科目演習」も14回程度実施されるのであらかじめご了承願いたい。
履修者への注意
再履修者であって『計算機言語第1』の単位を既に取得している学生を除いては,『計算機言語第1』との同時履修がほとんど必須である。 また1年生3Q火曜日3限・金曜日3限の専門科目演習はこの2つの科目の教育効果を最大化するために,つねに『計算機言語第1』の演習か授業,あるいは『情報科学2J』の演習が組み込まれている。つまり,一般的に週に2時限分の専門科目演習が常に実施されているので,必ず専門科目演習も出席すること。他の科目の専門科目演習と異なり,レポート課題などが専門科目演習の時間にのみ出題される,などのことが行われることに注意されたい。 |
授業の詳細3 |
講義計画 詳細な授業と演習の日程は3Qでの最初の授業の時に説明する。
(プログラミングの前に(1回分)) 実験室における約束事,K-WSの基本的な使い方を説明する。その後,早急にPascalのプログラムを書くために必要な知識を学習する。これによって作業全体の流れをつかむことを目的とする。
1 Pascalコンパイラとは? 10/3 ・その概念と機能,Begin-End構造 1-1 K-WSのUNIXを使い始める。 ・ワークステーションの使い方 アカウントについての説明を受け,ログイン・ログアウトの方法やデスクトップやメニューの基本的な使い方を修得する。 ・UNIXファイルシステムとディレクトリ UNIXファイルシステムの概説を受けるとともに,ディレクトリ基本コマンド,ファイルの中身を見るコマンドおよびファイルの管理コマンドについてとりあえず出来るようになる。 1-2 XEmacsの復習 ・XEmacsの使い方ー1(基本的使い方の復習) Emacsの概念と開始と終了,基本操作,ポイントの移動,スクロールなどについて修得する。 ・XEmacsの使い方ー2(入力方法) カット&ペースト,日本語入力などについて修得する。 ・XEmacsの使い方ー3(より高度な使い方) ファイル・バッファ・ウインドウ操作などについて修得する。 (「PascalとUNIX-WSテキストブック」の「XEmacsの基本操作」の章に対応) 1-3 まずはPascalコンパイラを使ってみる。 ・A-WSにおけるパスカル・コンパイラの使い方 A-WSに装備されたPascalコンパイラの使い方について修得する。 (「PascalとUNIX-WSテキストブック」の「A-WSにおけるパスカル・コンパイラの使い方」の章に対応) ・Begin-End構造 単純なPascalプログラムを作成し,コンパイルと実行を行う。 (「PascalとUNIX-WSテキストブック」の「BEGIN-END」の章に対応)
|
授業の詳細4 |
(Pascalの学習・第1次(5回分)) Pascalテーマの回では,Pascalの基本的な構文を毎回新しく学習して修得しながら,各回の演習課題をこなしていく中で,プログラム設計/ソ?ス設計/コンパイル/デバックという流れに習熟する。UNIX関連テーマについては,その回に,UNIXの使い方とUNIX上のアプリケーションの使用法を復習する。
2 データ型と関数(Pascal) 10/7 Real型,Integer型などの基本的な変数宣言と一般定義関数を用いたプログラム 2-1 データ型と関数(Pascal) Real型,Integer型などの基本的な変数宣言と一般定義関数を用いたプログラムについて演習する。 (「PascalとUNIX-WSテキストブック」の「データ型と関数」の章に対応) 2-2 UNIXファイルシステムとディレクトリおよび重要なコマンド(UNIX) ・UNIXファイルシステムとディレクトリ UNIXファイルシステムについてより深く知るとともに,ディレクトリ基本コマンド,ファイルの中身を見るコマンドおよびファイルの管理コマンドについて修得する。 ・UNIXの重要コマンド 入出力の切り替えと,パイプとフィルタコマンドなどについて修得する。
3 分岐(If〜Then)(Pascal) 10/10, 10/14 計算機による判定と作業流れの分岐 3-1 分岐(If-Then)(Pascal) If〜Then〜Else文を学び,分岐構造をプログラムで表現できるようにする。 (「PascalとUNIX-WSテキストブック」の「If-Then」の章に対応)
4 分岐(Case文)(Pascal) 10/14 計算機による判定と作業流れの多重分岐 4-1 分岐(Case文)(Pascal) Case文を学び,より複雑な分岐構造をプログラムで表現できるようにする。 (「プログラミングと情報科学 テキストブック」の「Case文」の章に対応) 4-2 UNIXプロセスと環境 ・UNIXプロセス プロセスの切り替えとプロセス管理のコマンドについて修得する。 ・UNIX環境 コマンドの増強と環境の変更,シェルコマンドについて学習する。
5 繰り返し(WhileループとRepeatループ)(Pascal) 10/17, 10/21 反復作業の実施と反復回数のブール代数値による制御 5-1 繰り返し(WhileループとRepeatループ)(Pascal) WhileループとRepeatループを学び,繰り返し構造をプログラムで表現できるようにする。 (「PascalとUNIX-WSテキストブック」の「While Loop/Repeat Loop」の章に対応) |
授業の詳細5 |
6 繰り返し(Forループ)(Pascal) 10/21 反復作業の実施と固定された反復回数制御 6-1 繰り返し(Forループ)(Pascal) Forループを学び,繰り返し構造をいろいろな命令を用いてプログラムで表現できるようにする。 (「PascalとUNIX-WSテキストブック」の「For Loop」の章に対応)
注:10/24は担当者が国際会議発表のため授業は実施しません。 注:10/28は『計算機言語第1』の中間試験のため授業は実施しません。
(Pascalのプログラム課題とまとめ(1回分))
7 プログラムの作成と作業報告書 10/31 作業報告書の意義と目的 作業報告書の書き方 プログラムの作成に必要な手順 ある作業を実現するためのアルゴリズムを考え,プログラムとして実現する演習課題を通じて手順に対する理解を深める。 7-1 LaTex A-WS上でLaTeX2eを使うことによってTeXを学び,以降の科目でのレポート作成に必要なドキュメント作成能力を身につける。 (「PascalとUNIX-WSテキストブック」の「XEmacsとLaTeX2e」の章に対応) 7-2 作業報告書の書き方 作業報告書に必要な形式や読みやすいレポートの書き方について学習する。 (「PascalとUNIX-WSテキストブック」の「作業報告書の書き方」の章に対応) 7-3 プログラム作成課題 ある作業を実現するためのアルゴリズムを考え,プログラムとして実現する演習課題を行う。課題は授業中に伝える.課題を完成させた上で課題レポートを提出する。
|
授業の詳細6 |
(Pascalの学習・第2次(5回分)) それぞれのテーマで,Pascalの基本的な構文を毎回新しく学習して修得しながら,各回の演習課題をこなしていく中で,プログラム設計/ソ?ス設計/コンパイル/デバッグという流れに習熟する。
8 配列(Array) 11/4 配列の導入によって広がるプログラミングの自由度について考える。 8-1 いままでの復習(Pascal) A-WSの使い方やPascalコンパイラの使い方などを簡単に復習する。 8-2 配列(Array)(Pascal) Real型,Integer型などの基本的な変数宣言と一般定義関数を用いたプログラムについて演習する。 (「PascalとUNIX-WSテキストブック」の「Array」の章に対応)
注:11/7は開学記念日のため授業はありません。
9 関数(Function) 11/11,11/14 手続き型言語としてのPascalの意義と,構造化プログラミングについて学ぶ。 9-1 関数(Function)(Pascal) Functionの宣言方法を学び,サブルーチンを利用するプログラムについて演習する。 (「PascalとUNIX-WSテキストブック」の「Function」,「Procedure」の章に対応)
10 手続き(Procedure) 11/14 手続き型言語としてのPascalの意義と,構造化プログラミングについて学ぶ。 10-1 手続き(Procedure)(Pascal) Procedureの宣言方法を学び,サブルーチンを利用するプログラムについて演習する。 (「PascalとUNIX-WSテキストブック」の「Function」,「Procedure」の章に対応)
11 レコード型(Pascal) 11/18 レコード型を通じて,object志向にもつながるデータオリエンテッドなプログラミングの基本を理解する。 11-1 レコード型(Pascal) レコード型を利用したプログラムとしてデータベースや行列計算などのプログラムを学習する。 (「PascalとUNIX-WSテキストブック」の「レコード型」の章に対応)
12 ファイルへの入出力(Pascal) 11/21 データをプログラム外部に保持することの意義について学習する。 12-1 ファイルへの入出力(Pascal) ファイルの例としてテキストファイル形式を取り上げてその入出力の基本を学び,プログラム内でファイル入出力を用いることが出来るようになる。 (「PascalとUNIX-WSテキストブック」の「ファイルへの入出力」の章に対応)
|
授業の詳細7 |
(Pascalのプログラム課題とまとめ(2回分))
13 仕様記述とプログラミング 11/25 仕様記述の意義と目的,および仕様記述書の書き方について学習する。 13-1 仕様記述とプログラミング 仕様の詳細化とアルゴリズムとデータ構造の設計を行いながら,仕様記述書を作成する。 (「PascalとUNIX-WSテキストブック」の「仕様記述とプログラミング」の章に対応)
14 仕様記述とプログラムの作成 11/28 仕様記述書を作成してから,プログラムの作成を実施する.最後に作業報告書を提出する。 14-1 プログラム作成課題 ある作業を実現するためのアルゴリズムを考え,プログラムとして実現する演習課題を行う。課題は授業中に伝える。課題を完成させた上で課題レポートを提出する。 14-2 まとめ 本講義のまとめとして, Pascalプログラミングの応用やソフトウエア工学について概説することによって,次クオータの『プログラミング基礎』,『プログラミング応用』に向けての動機づけを行う。 (「やさしいコンピュータ科学」の「ソフトウエア工学」の章に対応)
|
授業の詳細8 |
授業のテキストと参考書 テキスト: (1)『PascalとUNIX-WSテキストブック』,篠森敬三編,(情報システム工学科出版),2007-2008年 (これは学科作成のテキストであり『情報科学1J』,『情報科学2J』を履修する学生には(無償または実費で)配布する。ただし配布を受けられるのは『やさしいコンピュータ科学』を購入済みの学生に限る。) (2)『やさしいコンピュータ科学』,Alan W. Biermann著(アスキー出版局),1993年 (これは『(情報システム工学科)情報科学1J?3J』の共通教科書である) その他必要に応じて参考資料を配布する。
参考書:必要に応じて以下の参考書を参照することを推奨する. (1)『入門UNIXオペレーティングシステム』,JPeekら著(オライリー・ジャパン) (2)『Pascal[思いやりプログラミング]』,デイビッド・プライス著(近代科学社),1984年 (ただし入手困難につき購入は不要.) (3)『コンピュータリテラシ -情報環境の使い方-』,東京工業大学全学情報科目実行委員会編 (昭晃堂), 2001年(これは昔の『UNIX基礎』教科書である) また他の参考書については必要に応じて適宜紹介する。
|
授業の詳細9 |
成績評価 本講義では,各回の最後に与えられる記述式の「今日の課題(テキストの本章の課題)レポート」を65%,プログラム作成課題レポート35%(得点比率は変更になる場合がある)として評価する。それらの得点は,以下の到達度判定に用いられる.最終的な成績評価は到達度によって決められる。
F判定 C判定で定める到達度に到達していない場合で,単位取得は認めない。 C判定 講義内容1〜7の内容を理解し,それらで学んだコマンドやアルゴリズムを利用したプログラム(20行程度)をガイダンスにしたがって作成することができる能力に到達した。 B判定 講義内容1〜12の内容を理解し,それらで学んだコマンドやアルゴリズムを利用したプログラム(50行程度)を独力で作成することができる能力に到達した。 A判定 B判定の到達度に加えて,講義内容1〜12の内容をよく理解するとともに,講義内容13〜14の内容を理解し,それらで学んだコマンドやアルゴリズムを利用したプログラム(75行程度)を独力で作成することができる能力に到達した。 AA判定 A判定の到達度に加えて,講義内容13〜14の内容をよく理解し,それらで学んだコマンドやアルゴリズムを利用したプログラムを含めて,100行以上のPascalのプログラムを独力で自由に作成することができる能力に到達した。
F判定ではあるが一部特定領域(ある一部の講義内容)を除けばC判定到達度を満たしていると考えられる学生については,その領域に関する追加レポート課題を与え,そのレポートの得点を到達度判定に加える場合がある。 演習は,講義時間も含めた作業で作成するレポート提出によって評価される(つまり講義あるいは演習に対する出席はレポートの採点に含まれる)。いわゆる単独の出席点は成績評価に加味しない。したがって最終的に Pascalのプログラムが書けるようにならなかった場合には単位取得出来る可能性は全くない(この科目では,中身の無いレポートを出すだけ出しても単位取得の可能性はない)。
|
授業の詳細10 |
科目の位置付け
他学科履修について 『情報科学1J』との連携や他学科履修学生にK-WSでの演習を適切に提供できない事情を考慮して,他学科履修は認めない(所属する学科の情報科学を履修のこと)。
JABEE対応「情報ネットワークシステムコース」 自然科学分野等科目(共通教育科目)-履修登録必修科目 自然科学分野等科目(共通教育科目)-情報技術選択必修科目(自然科学で17単位)
履修前の受講あるいは同時履修が望ましい科目: 『初等代数学』,『離散数学』,『コンピュータリテラシー』
同時履修(事前履修)が必要な科目(単位既取得や再履修者は除く): 『情報科学1J(情報システム工学科)』, 『情報科学3J(情報システム工学科)』 『計算機言語第1』 (再履修の場合を除いて,特に『情報科学1J(情報システム工学科)』,『計算機言語第1』との同時履修(事前履修)を行なわない場合は,本科目の単位の取得は難しい.)
備考 ・プログラミングの基礎を全て含んだ実験科目であり,「情報システム工学実験1,2」を履修する予定の諸君は必ずこの科目を履修すること。それらの科目の履修前提科目である。 ・再履修の制限(平成15年度より変更) 平成15年度までは,病気,怪我や休学など特段の事情がある場合以外には,この科目は再履修出来なかった(教員の特別な指示によって再履修できる可能性は残されていたが)。平成16年度以降は,科目担当教員の許可があれば再履修可能とする。これはK-WSの台数が大幅に増えたことを反映している。
・受講条件(平成15年度より変更) 平成15年度までは,「コンピュータリテラシ」,「UNIX基礎』(あるいは『情報科学1J』)のうち最低1科目は,履修しかつ単位取得していることが,この科目履修の条件であった。平成16年度以降は条件を満たしていない学生の受講も許可制で認めることとする。ただしそれらの科目のどちらの単位取得も出来ない学生にとっては,本科目の単位取得も困難であることは付け加えておく。
|