詫間電波工業高等専門学校研究紀要 第 33 号

(2005)

プログラミング教育とプログラミングコンテストへの取組み
金澤 啓三*

高城 秀之*

宮武 明義*

Programming Education and Challenging to a Programming Contest
Keizo KANAZAWA* Hideyuki TAKAJYO* and Akiyoshi MIYATAKE*

Synopsis
We think the programming ability is one of the most important skills for the students. In thepast, we have been teaching the Pascal language to the students in the lower grades. But almost
all of them did not use the Pascal language to their graduation research. Since 1993, we havebeen participating in the programming contest. And the students who attend the contest use thevarious programming languages. Then we have changed the programming language to teachthe students many times.
In this paper, we describe a history of the programming education and the challenge to theprogramming contest in the department of information engineering.

1. はじめに(4)

本校情報工学科（以下 本学科）では，プログラミング教育にもっとも重点を置いている．
昭和 60 年ごろから低学年を対象に，プログラミ
ング言語Ⅰ(1 年)，情報処理(2 年)，ソフトウェア設計論(3 年)の３科目を開講していたが，講義内容や教授方法，教育に用いるプログラミング言語などが不統一で，高学年になっても十分なプログラムを作成できない学生が少なからずいるという問題があった．
そこで，担当教官が集まり，議論した結果，平成元年に低学年のプログラミング教育のために
Software 演習[1] を自費出版した．このときの方針を以下に示す．
(1) 学生を一人たりとも落ちこぼれさせないこと．ソフトウェアを嫌いにさせないこと．
(2) 3 学年終了時点までに到達すべき目標は，学生全員が 100 ステップ前後のプログラムを自由自在に作れるようになること．
(3) 演習を多くすること．類似した演習問題を繰り返し出題し，体で覚えさせること．

(5)* 情報工学科

魅力的な演習問題を用意すること．演習問
題は積極的に教師が自作すること．
プログラム言語はPASCAL に統一すること．
表 1 低学年における教育言語の変遷

年度
(平成)
１〜4

5〜6

7

8

9〜14
15
16

学年 単位数
12
3
1
2
3
1
2
3
1
2
3
1
2
3
2
3
2
3
3

科目名

言語 (時間数)

4 プログラミング言語Ⅰ
Pascal (120h)
4 情報処理Pascal (120h)
4 ソフトウェア設計論
Pascal (120h)
4 プログラミング言語Ⅰ
C (120h)
4 情報処理C (120h)
4 ソフトウェア設計論
C (120h)
2 情報処理Ⅰ
BASIC (15h）
4 情報処理C (120h)
4 ソフトウェア設計論 C (60h）/CASL (60h)
2 情報処理Ⅰ
BASIC (15h）
4 情報処理ⅡC (120h)
4 ソフトウェア設計論 C (60h）/CASL (60h)
2 情報処理Ⅰ
BASIC (15h）
4 情報処理ⅡC (120h)
4 ソフトウェア設計論
C (120h)
4 情報処理ⅡC (120h)
4 ソフトウェア設計論 C (60h）/JAVA (60h)
4 情報処理ⅡC (120h)
4 ソフトウェア設計論 C (60h）/JAVA (60h)
2 情報システムⅠ
VisualBASIC (60h)

この本は，平成 4 年に出版した基礎プログラミン
グ演習 [2] の基となった．基礎プログラミング演習
21111

THE BULLETIN OF TAKUMA NATIONAL COLLEGE OF TECHNOLOGY No.33 (2005)

では，プログラミング演習への多用性を考慮し，PASCAL 以外に，BASIC,FORTRAN,C 言語の例題も追加した．

1 全くできそうにない
2 教師や友達に一部聞きながらなら作成できて，かつプログラムの内容を理解できる
3 マニュアルや書籍を見ながらなら，独力である程

2. 教育プログラミング言語の変遷度（80%）まではできる
4 マニュアルや書籍を見ながらなら，独力でできる

表 1 に，本学科が低学年(1 年から 3 年)に対して教育を行ったプログラミング言語の変遷を示す．平
成元年に，低学年で行うプログラミング教育に用いる言語を PASCAL に統一した．これは，言語仕様を覚える負荷を軽減し，アルゴリズムやデータ構造の学習に専念させるためである．しかし，高学年になって卒業研究等で PASCAL 言語を用いる学生はほとんどいないという現実もあった．
平成 5 年度より，プログラミング言語を当時の卒業研究で最も多く使用されていたC言語に変更した．
平成 7，8 年度でカリキュラムが変更され，本校 4学科の第１，2 学年で統一授業を行う混合学級での授業編成となった．第１学年の情報処理Ⅰでは，コンピュータリテラシー教育が中心となり，15 時間だ
け BASIC 言語を教えることになった．また，通商産業省(当時)の主催する情報処理試験への合格率も上げるため，本試験で採用されているアセンブリ言語 CASL の教育を始めた．
平成 12 年度から，混合学級は第１学年だけとなった．第 1 学年も専門科目だけは，学科別にもどして授業をおこなうことになった．
平成 15 年度から JAVA 言語，平成 16 年度から
Visual BASIC 言語を教えるようになった．

3. 現在の問題点と対策
本学科で昨年度までに教育した主要プログラミン
グ言語であるＣ，JAVA，Visual BASIC 言語について，学生の習熟度および好き嫌いについてのアンケートを行った．アンケートは，現在の 5 年生４１名を対象に行った．なお，本学生は４年次に情報システムＩという授業で 60 時間 Visual BASIC 言語の教育を受けている．
アンケートの内容は以下の通りである．
質問１ アルゴリズムが提示されているとき，100 行程度のプログラム課題を自分でＣ言語を用いて解くことができますか？
回答群22112

5 独力で何も見ずにできる
質問２ Ｃ言語は好きですか？
回答群
1 嫌い
2 どちらかというと嫌い
3 普通
4 どちらかというと好き
5 好き
質問３ 質問 2 でそのように答えた理由は何ですか？

質問 1 から 3 を JAVA 言語および Visual BASIC
言語に対しても行った．図１および図２に本アンケートの結果を示す．
本アンケートではプログラミング能力および言語の好き嫌いについて調査したが，いずれの言語についてもこの 2 つの間には強い相関が見られた．すな
わち質問 1 で，独力でプログラム開発ができると答えた学生ほど，質問 2 でその言語を好きと答える傾向が見られた．
図１に示すように，Ｃ言語の場合，約半数の学生が独力でプログラミングすることができると答えている．また，Ｃ言語を好きと答えた学生の多くは，
質問 3 で，その理由として低学年のときから慣れ親しんでいることを挙げている．一方，JAVA 言語については半数以上の学生が嫌い，もしくは，どちらかというと嫌いと答えているが，その理由として多くの学生が，この言語を使いこなせない，もしくは，授業でよく理解できなかったことを挙げている．実際に，図１からもわかるように，半数以上の学生がJAVA によるプログラミングが全くできないと答えている．ただし，この結果は，Ｃ言語と JAVA 言語の教育に割り当てる授業時間数の差が大きく影響しているものと思われる．
アンケートをとった学生は，Ｃ言語 180 時間に対して，JAVA 言語は 60 時間しか授業を受けていない．仮に，この時間数が逆であったなら，アンケートの結果も違ったものになっていたかもしれない．
Visual BASIC については，JAVA 言語と同じ授業詫間電波工業高等専門学校研究紀要 第 33 号

時間数であるが，質問 1，質問 2 の両方でＣ言語を上回る結果であった．質問 3 で，Visual BASIC を好きと答えた学生の多くが，この言語の分かり易さやとっつき易さを挙げており，これは文法的な容易さよりもむしろボタン等の各種コンポーネントを貼り付けていく Visual BASIC のプログラミングスタ
イルによるところが大きいと思われる．

CJava
Visual Basic
0%5432
120%40%60%80%

Visual Basic

JavaC31015670467242118119100%

図１ 質問１ に対するアンケート結果

CJava
Visual Basic
0%
5432
120%

40%60%80%

Visual Basic

JavaC

81395603
101315613697100%

図２ 質問２ に対するアンケート結果
本学科では，平成 5,6 年度には，Ｃ言語を用いたプログラミング教育に合計360 時間を割り当てていた．特に，1 年生を対象としたプログラミング言語
I の授業で 120 時間を確保していた．しかし，その後のカリキュラムの変更に伴いこの120 時間を削ることとなった．替わりに，平成７年度から 14 年度にかけて，1 年生を対象とした情報処理 I の授業の一部として BASIC を導入した．当時，既に構造化の機能を持ったプログラミング言語が主流の時代に，旧来の文番号主体の制御構造を持つ BASIC 言語を導入することに対しては教官の間でも議論があった．
しかし，この情報処理 I の授業の目的がリテラシー教育であること，コンピュータにおけるプログラムの役割を理解させること，プログラムの基本構造，(2005)

基本アルゴリズムを理解させるには十分であること，さらに，BASIC 言語では簡単なコマンドでグラフィクスを扱えることからプログラミングに対する抵抗をなくし，楽しみながら学ぶことができるという点が評価され，最終的に BASIC 言語が選ばれた．
一方，プログラミング言語 I の授業が無くなった
ため，C 言語によるプログラミング演習の時間が大幅に減ったことによる弊害も生まれた．特に，C 言語を使いこなす上で難解とされるポインタや構造体の説明に十分な時間を割り当てることができなくなった．本学科では，４年次にＣ言語を用いたシステムプログラミングの授業を UNIX 上で行っているが，本授業ではポインタや構造体を用いた処理が必要となる．そのため，本授業の最初の数回をポインタ等の説明に当てざるを得ない状況となった．
以上の問題点をふまえ，昨年度，プログラミング担当教員で授業内容の見直しを行った．まず，各教員の担当する授業内容を相互チェックし，重複部分を無くすとともに，授業間の連携がスムーズにいくようカリキュラムの変更をおこなった．さらに，C言語の授業時間数を増やすために，平成 15 年度よりソフトウェア設計論の半期 60 時間を当てている
JAVA 言語を，今年度からＣ言語に戻した．これによりC言語教育に合計240時間を割り当てることが可能となった．

4. プログラミングコンテストへの取組み
本学科では，平成 5 年度より，全国高等専門学校プログラミングコンテスト（以下 プロコン）に参加している．表２に示すように，当初は自由部門への参加が多かったが，徐々に他部門へも参加するようになり，平成 15 年度からは全部門に応募するようになった．
表２に，プロコンで学生が使用したプログラミン
グ言語を示した．VB, VC++は，それぞれ Microsoft
Visual BASIC および Visual C++である．この表から C++, Visual BASIC, JAVA が圧倒的に多いのがわかる．C++言語については，授業でＣ言語を使用しているのが大きく影響している．本学科ではオブジェクト指向の C++言語については一部の授業で簡単な説明がある程度であるが，プロコンに参加する学生は一般にプログラミングのスキルが高いこともあり，独力で勉強して使いこなすようになる場合が多い．JAVA については，アンケートの結果（図１）が示すように，本学科では苦手とする学生が多
23113

THE BULLETIN OF TAKUMA NATIONAL COLLEGE OF TECHNOLOGY No.33 (2005)

いが，授業で学んだ知識を実際のプログラム開発に生かしてみたいという興味から，この言語を開発言語として選択するケースもあった．平成 16 年度のプログラミングコンテストでは，言語に対する興味ではなく，それぞれの言語の得意，不得意とする分野をふまえ，複数の言語を組み合わせた開発を行えるようになった．
表 2 プログラミングコンテストへの出品
開催回

開催年
(平成)

出品部門

審査結果

主な開発言語

45

課題

佳作

MS-C

89

自由審査委員特別賞

VB

910

自由佳作

VC++1213

コンテンツ

敢闘賞

JAVA

競技

JAVA
1 回戦

13

14

14

15

課題

審査委員特別賞

VB

学生交流企画賞

VC++

競技

1 回戦

VB

課題

敢闘賞

VC++

自由

審査委員特別賞

VC++

学生交流企画賞
15

16

競技

2 回戦

JAVA

課題

審査委員特別賞

VB,(佐藤賞）

Perl

敢闘賞

VB,

自由BC++
競技

1 回戦

VC++,
JAVA

授業で扱うプログラムは，規模も小さく内容的にも，文法を習得するための課題や，ソート，文字列処理の課題など面白さという面では学生の興味を引きにくいところがある．一方，プロコンでは，作成するプログラムの規模も大きくなり，学生の様々なアイデアを盛り込むことができるため精力的に取り組む姿勢が見られる．本プロコンでは，プログラミング技術のみならず，プレゼンテーションやマニュアルのできも評価の対象となる．そのため，プログ
ラミングの得意な学生だけでなく，説明の得意な学生や文章を書くのが好きな学生などが，個々の能力を生かして分業を行うことになる．また，大会の期日に合わせてスケジュールに従って開発を進める必24
114

要がある．これらは全て実社会に出てから必要とされる能力であり，その経験の場としても大きな教育的効果を果たしているといえる．

5. おわりに
本学科では，学生に対しプロコンへの参加を積極的に呼びかけている．プロコンの教育的効果は既に述べた通りであるが，参加人数の制限からクラスの全員が参加できないという問題がある．現在，高専対象の本プロコン以外にも様々なプログラミングコンテストが開催されており，これらのコンテストへの参加も呼びかけていきたい．
これまで，情報処理 II の C 言語の授業では，言語の文法を教えた後，その文法を使用した課題を繰り返し解くという演習方法をとってきた．この方法
では，基本的な文法を身につけることができる一方で，学生が興味を持って取り組むという点では問題があった．そこで，本年度より PBL(Project BasedLearning)を本授業に試行的に導入することとした．
具体的には，これまでの演習課題の数を減らし，16時間分を PBL に当てる．グループに分かれ，分担してプログラミングを行い，最終的にはミニプログラミングコンテストの形で発表会を行う予定である．
本学科では平成 15 年度よりソフトウェア設計論の半期を使い JAVA 言語の教育を行ってきた．既に述べたように，今年度よりこの時間を C 言語教育に当てることとした．現在，本学科では，一部の授業の中でオブジェクト指向プログラミングについて言及するものの，十分な時間をかけて体系的に学ぶことのできる授業が無い状況である．今後 JAVA 言語や C++言語，C# 言語等のオブジェクト指向言語によるプログラミングは益々必要となってくると思われる．今後は，これらオブジェクト指向によるプログラミングの授業を新たに追加する必要があると思われる．その一方で，プログラミング手法のパラダイムや言語に依存しない，基本的なアルゴリズムやデータ構造などの教育にも力を入れる必要がある．

参考文献[1] 佐藤隆士，松下浩明，河田進， Software 演習，
自費出版(1989)[2] 全国高専教育方法改善専門委員会専門基礎教育部会編，基礎プログラミング演習，森北出版(1992)