2020年プログラミング教育が必修化されました。これにより否が応でも、親、本人(子供)のITへの関心が高まっています。プログラミング教育を語る上で、大学機関でのこれまでのIT教育がどのように実施されている参考になるかと思い記事にしました。また、情報学部卒の私なりのアドバイスも記載しています。
情報系の学部生がどうのような勉強をしてIT人材になっているか、プログラミング教育に関心があれば気になるところだと思います。この記事では、情報系の大学教育について記事にします。
授業外は密かに「タイピング練習」
先ず、いきなりですが、授業外での活動(自習)を紹介します。理由は、ここが他の学部の大学生とは異なる点だからです。ほとんどの情報系の学生(少なくとも僕の周り)においては、誰かに何か言われることもなくブラインドタッチできるようになるために「タイピング練習」をします。タイピングが速ければ、それだけ専門分野の学習が進むからです。
タイピングの速さが「死活問題」
大袈裟に聞こえますが、そうでもないです。年次が上がるにつれてPCに向かう時間が多くなり、それだけタイプする量も増えてきます。授業中ですら、サンプルコードを自分で打ち込んで確認する時間が与えられますが、タイピングが覚束ないと授業に集中できません。
「mikatype」はフリーソフト(無料)で良い。
そんな僕も、一時期タイピングを速くするために、大学の授業中ですら「mikatype」をやっていました。「mikatype」を使ったブラインドタッチの習得については、別途記事にしていますので、そちらをご参考下さい。
プログラミングの第一歩は「四則演算」
「四則演算」とは、剰余算、加減算のことです。足し算(+)、引き算(-)、掛け算(×)、割り算(÷)のことです。プログラムで使う数学の8割は、これら「四則演算」です。これは、小学生、中学生でも十分まかなえる知識です。
え、そんなレベルなの?
と思われるかもしれませんが、このレベルです。実際、初心者は、これがかなり退屈で遠回りしていると勘違いしますが「四則演算」だけしていれば良いです。プログラミングでは、3Dなどに特化しなければ難しい数学知識は必要ありません。「C=C+1;」という加算記述に対して「C++;」とより短く記述するためだけの記述法(プログラミングでは実際に多用します。)もあります。
誰もが知る企業の研究部門でソフトを担当していた僕は、高校の理系で学ぶような「微積」含む、ほとんどの知識を使わなかったです。強いて言えば、ドモルガンの法則で馴染む「集合」「論理」という分野の知識を多用します。
後は、パズルに似ています。例えば、ある一つの数字を100個の数列から見つけ出す効率のよい方法(これをアルゴリズムと言います。)を考えたりします。
1年次はC言語
C言語は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発した汎用プログラミング言語です。人間に近い文章論理(高水準言語)の特徴を持ちながら、ハードよりの機械語も記述できる。低水準言語の特徴を併せ持ちます。
大学では入門時の勉強言語として最初に学びます。
大学生と言えど、最初はプログラミング初心者対象の授業の運びから、徐々に難易度が上がっていきます。僕が、実際に受けた授業は、四則演算の確認、文字列、関数、制御構文、配列、ポインタ、構造体の順で進み最後に3桁の数当てゲームを作成しました。
今、振り返ると、C言語は初心者の入門書を読めば良い文法を3ヶ月から半年も掛けて授業しているので、一律理解が必要となるプログラミングの集団講義形式での教え方は良くないかもしれません。実際、内容としては半月あれば理解できる内容です。
1~2年次はC++、Javaなどオブジェクト指向言語
C言語でプログラミングの作成に慣れてきたら、現在のソフト開発における主流のオブジェクト指向型プログラミングについて学びます。実際に企業等でプログラム開発する際は、このオブジェクト指向言語を扱えることが必須条件になります。
さらに言えば、1年次のC言語すら学ばないで、いきなりPythonなどのオブジェクト指向言語を学んでも良いと思います。現在のソフトウェア開発の流れは非常に速く変化するため、せっかく学んだ言語が使えないということが往々に起こり得るので、学習コストを最小限に抑えるのも大切です。
個人的には、学校でもJavascript、Pythonを軸に教育展開して良いと思います。
というのも、僕はC言語で研究論文のプログラムを作成しましたが、それ以来会社などでC言語を使う機会はありませんでした(C++はありますが。)。当時「難しいと言われるポインターをようやく使いこなせるようになった。」と喜んでいた気がしますが、そのような苦労をわざわざする必要ないかもしれないです。
3年次はチーム課題(アプリ開発)
実際、上記でC言語、Javaなどを習っていますが、僕はアプリが作れるようにはなりませんでした。この授業では、ほぼ無理やりな形でアプリ開発をチームに分かれて行いました。
この授業でも僕はアプリが作れるようにはなりませんでした。
僕に関して言えば、アプリ開発が技術が身について出来るようになったのは、4年次にその学科で一番プログラミングが出来る先生の研究室になってからです。研究指導ではマンツーマンで、その先生から手取り足取り教わりました。このため、僕の経験上、実際にアプリ開発をしている人にアプリ開発のやり方を教わるのが一番の理想的です。
大学教育と専門学校の教育との違いは?
専門学校でもプログラミングは学べます。ケースによっては、専門学校の方がよりその分野に特化して学べたりします。大学と専門学校の教育の違いは、「汎用的な専門教育」か「(一領域)専門教育」かの違いです。
実は、大学は最低限のプログラミング授業があるだけで、それほど熱心にプログラミングの教育を実施してくれません。イメージとしては、四六時中プログラミングの授業があるかと言われたらそうでもなく全体の3割程度です。その代わり、数学など汎用的な幅広い専門分野を学びします。
専門学校はグラフィックスなど自分が希望する一領域に踏み込んで学びますが、大学では応用分野の学習は学生の自主性に委ねられます。このため、せっかくプログラミングがやりたくて入学した学生には、他でプログラミングをやると言って辞めていく学生もいたりします。
授業として明らかに違う点は「数学教育」です。
コメント