大学のプログラミングの授業の期末テスト【C言語】

11月16日の木曜日。この日はプログラミング言語の授業の期末テストが行われた日です。

プログラミング言語のテストと聞くと、なんかパソコンを使ってテストをするような印象があるかもしれませんが、実際には紙に鉛筆(シャーペン)で書いて答える筆記試験でした。

コンピューターを使うのではなく、わざわざ紙に手で書いて答えるという形式をとるのにはやはり理由があり、それは主に「紙に手書きで答えさせた方が生徒がどれだけプログラミングを理解しているかを判断しやすいから」だそうです。この点について説明をする前に、まずは予備知識として簡単にプログラミング言語の基礎知識を紹介しましょう。


そもそもプログラミング言語って?

プログラミング言語とは、コンピューターに「こういう処理・こういう動作をしなさい」といった命令を与えるための言語で、その言語の種類はいろいろあります。

僕の通っているオーランド大学のITの学部の1年生のプログラミングの授業では、まずはC言語という言語から勉強し始めました。C言語は、人間の言語で言えばラテン語のようなものだそうです。ラテン語はヨーロッパでも現代社会では話されていませんが、ラテン語がわかる人はフランス語やイタリア語やスぺイン語などの他のラテンベースのヨーロッパの言語を容易に覚えられるようになると言われています。

同じように、C言語も現代においては実践ではあまり使われていないものの、「他の多くのプログラミング言語のベースとなっている」ような言語なので、まず最初にC言語を覚えておくと、後々文法の似通ったJavaやC++やPHPなどの他の言語も覚えやすくなるため、プログラミングの入門にC言語を採用する所は少なからずあるようです。ちなみに、ハーバード大学のコンピューターサイエンスの学部のプログラミングの授業でも、まず最初のうちはC言語を何週間か取り組むカリキュラムになっています。



授業で使っているツール、「コンパイラー」

普段の授業ではもちろんパソコンを使ってC言語を練習するのですが、そのパソコンの中にはあるツールが入っています。それは「コンパイラー」というもので、一言で言えば「プログラム言語の自動文法チェック機」といった所でしょうか。

(※本当はコンパイルは人間の書いたソースコードをコンピューターが理解できる「機械語」に変換するのが主な役割で、その際に文法チェックも行っているのですが、「機械語への変換」の部分まで説明しだすとプログラミング経験のない人にはどんどんややこしくなるので、ここでは「コンパイラー」=「文法チェック機」という事で話を進めてしまいます)

C言語で書いたプログラムを実際にコンピューターに実行させるには、まずそれを「コンパイラー」に通さなければならず、この作業を「コンパイル」と呼びます。そしてコンパイルをした時に、コンパイラーから「うむ、文法ミスはないのぉ。これなら実行してよいぞよ。」とOKが出なければプログラムを実行させられないようになっているのです。

逆にコンパイル時にいろいろ文法ミスがあると、例えば

「おぬし、☆型の入れ物を用意しといたクセにその中に□型のモノを詰め込もうとするとは何事ぞ?形が違うんだから入るワケがなかろうが!」

とか、いろいろ「ココがおかしい!」と文句をつけられるわけです。(もちろん上記の日本語は意訳ですが)

そして、特に僕ら1年生のような初心者プログラマーたちは、プログラムの中身がおかしいかどうかを自分自身でよくチェックせず、チェック作業を絶対の権限を持つコンパイラー閣下に丸投げし、そこで怒鳴られたか怒鳴られなかったかを基準に判断してしまう事が少なからずあります。そこでコンパイラー閣下のありがたいお言葉に頼らなくても自分で正しいプログラムの書き方を判断できるように意識させるために、あえて紙に手書きで答えさせる、というのが今回の期末テストでの先生の狙いのようなのです。

テスト当日の様子

テスト時間は当日の朝8時から昼の12時までの4時間。ただし4時間ずっと教室にいる必要はなく、できた人から提出して退室していい事になっています。プログラミングが得意で早い人は1時間とかで終わってました。僕は2時間半から3時間ぐらいだったと思います。ちなみに途中でトイレに行くのもOKです。

テスト問題はスウェーデン語で書かれており、回答ももちろん全てスウェーデン語で行います。僕はスウェーデン語のノンネイティブだったため、先生に「問題文のここの単語はどういう意味ですか」と聞いたら、スウェーデン語のまま別の単語に置き換えて教えてくれました。

他の生徒も問題文の意味がイマイチわからない場合は確認の質問をするのはOKで、何人かが先生に質問していました。

テスト問題の内容と配点

そして肝心のテストは以下のような内容でした。

・「〇〇とは何か」とか、「〇〇はどのような場面で何のために使われるか」などといった、記述による定義を求める問題
・「下記はとある学生が書いたプログラミングのソースコードであるが、問題点がいくつかある。どこをどのように直すべきかそれぞれ答えよ」といった、間違い直し系の問題
・「次のような内容でプログラムを実行させると、画面に映し出される実行結果はどのようになるか。またなぜそのような実行結果になると考えるのか、その理由も答えよ」といった、プログラムの実行結果を予測する問題
・「次のような内容の実行結果になるようなプログラムをC言語で書きなさい」といった、自分でプログラムを書くという問題

1問2点の問題もあれば、3点や4点のものもあり、全問完璧に正解すると30点です。さらに、この30点満点のテストは後で100点ベースの点数に変換され(例えば15点/30点だったら50点/100点に置き換えられる)、普段の授業の週に1回のペースで出していた提出物の100点満点の点数と合わせます。この時、成績評価の比重はテストと提出物が7:3の割合でテストが重視されるため、提出物で点数が良くても、テストでもそこそこ以上の点数を取らなければ合格できない事になります。

テストの結果

そして翌週の11月20日の月曜日。テストが返ってきました。果たして出来栄えは…?





















キタ――(゚∀゚)――!!

正答率95%と予想以上の高得点!提出物も94%で、総合でも95%となっており、VGの成績をいただきました。解答用紙を返してもらって早速何か所か自分のスウェーデン語の間違いに気づきましたが、テストで見られているのはあくまでプログラミングの理解度であるため、もちろんスウェーデン語の間違いによる減点は一切ありませんでした。

ちなみにVGとはVäl Godkändの略であり、「大変よくできました」という意味です。

スウェーデン語圏では「合格」は単なる合格のGodkänd(頭文字表記G)と、合格の中でもよくできている事を示すVäl Godkändの2種類があります。ちなみに「不合格」はUnderkändで、頭文字表記ではUとなります。

実はこの大学の他の授業ではこれより前に既に「テスト」と名のつくものは受けた事があったのですが、その時は締め切りまでに仕上げておけば何時間費やしてもよかったものだったし、どちらかというと「提出物」と呼んだ方がいいような内容のものでした。なので実質的には今回受けたものがフィンランドの大学で初めて受けたテストらしいテストといっていいと思います。それにしても高得点で終われてよかった!

%d人のブロガーが「いいね」をつけました。