【エンジニア志望の人必見】大学でプログラミングを学ぶのはあり?
プログラミング学習公開日 : 2020年03月27日 | [更新日] 2023年06月01日
エンジニア志望でプログラミングを学びたいと考えている方にとって、どのような進路を選べばプログラマーになれるのでしょうか?
その一つの選択肢として大学でプログラミングを学ぶという方法があります。高校卒業後、独学やプログラミングメインの専門学校で学ぶ方法と比較すると、一般教養なども学ぶため、プログラマー以外の職業に就きたくなったときにも対応しやすいというメリットもあります。
では、大学で学べるプログラミングとはどのようなものなのか、ということについて説明していきたいと思います。
目次
大学でプログラミングを学べる学部
大学の講義でプログラミングを学べる、というとほとんどの人が理系の学部を思い浮かべると思いますが、学部名に「プログラム」などの単語が入っているような例はまずありません。
ではどのようにプログラミングを学べる学部を探せば良いのでしょうか?
大学でプログラミングを学べる学部はある?
大学でプログラミングを取り扱う学部は「工学部」「理工学部」「情報学部」といった名前がついていることがほとんど。
その中でも専攻する分野に応じて学科がわかれているわけですが、プログラミングを主に学べる学科としては「情報工学~科」「情報システム~科」「電子情報~科」といった学科が該当します。
文系の学部でもプログラミングを学ぶことは可能?
では、文系の学部にはそういったプログラミングを学べるところがないのでしょうか?
決してそんなことはありません!!
例えば、教育系や経済系の学部の中に「情報システム~科」という学科があったり、「メディア情報~部」といったような新しい区分の学部を設けていたりする大学があります。
プログラミングを学びたいという明確な目的があるなら、学科レベルで選択すれば、文系か理系かという点ではそんなに差はないはずです。
ただ文系だとガッツリ、プログラミングをする機会は少ないと思うので、ガッツリ、プログラミングをしたいという方は理系に進みましょう。
大学でのプログラミング授業内容とは
大学で学べるプログラミングの授業はどのようなことを教えてくれるのでしょうか。
将来、エンジニアとして活躍できるレベルに到達できるのか・・・その授業内容について触れていきたいと思います。
大学でのプログラミング授業はどのように行われるの?
大学でのプログラミング授業はその性格上、基本的には講義形式で行われるケースがほとんど。
あくまで一例ですが、講師が壇上に立ち、スライドなどで説明後、簡単な演習問題を実際に解いてみる、というのがオーソドックスな講義形式です。
それで身につくのだろうか・・・と心配になる方もいらっしゃるかとは思いますが、大学ではプログラムとコンピューターがどのように動くのかといったどちらかというと理論的な部分を中心に学びます。
実際には大学によっても授業形態はさまざまだと思いますので、大学のホームページなどでどのような講義が行われているか、調べてみてください。
参考情報ではありますが、工学教育の外部評価を行う「日本技術者教育認定機構(JABEE)」による情報系の認定審査に合格している大学が行っている教育プログラムなども参考にしてみると良いと思います。
1年次には基礎を徹底的に学習
プログラミング言語の書籍などでも同様ですが、最初の年次では、プログラミングの基礎部分を学習します。
大学でよく扱われるC言語を例にとると、
・for、while、ifなどの制御構文
・基本型、変数、配列
・ファイルの入出力
・関数
・ポインタ
・構造体
といったプログラムを書くために必要な概念と構文を学びます。
学ぶ内容は取り扱う言語によって微妙に違う部分もありますが、言語仕様としては似たような項目を習得する必要があります。
授業中、教室を巡回して質問に答えてくれるTA(ティーチングアシスタント)、SA(スチューデントアシスタント)と呼ばれる方々がいらっしゃるので、わからないことがあればいつでも質問できるので独学よりはるかに学習効率がいいです。
2年次からは演習形式で学ぶ
2年次からはプログラミングの課題が出され、それを解くコードをレポートとして提出する演習形式が中心となります。
ペアやグループで課題に取り組む形式をとる場合が多いです。
課題の内容は、1年次に習う要素を組み合わせて、課題を解くためにはどのような処理を組んだら良いのかといった「アルゴリズム」中心の内容に高度化していきます。
具体的な例ですと、ソートアルゴリズム、線形リスト、スタックやキューなどを学ぶことが多いようです。
授業形態が演習形式となってもTA/SAの方がついてくださるので、わからないことがあれば質問できます。
大学で学ぶことができるプログラミング言語
プログラミング言語にはたくさんの種類があり、特定の用途に特化しているものもあれば、汎用的に使える言語もあります。
では、大学で学ぶことができるプログラミング言語はどういったものが採用されているのかについて説明していきます。
ほとんどの大学で学ぶのはC言語
大学の授業で扱われる言語はC言語が多いです。
プログラム言語的には歴史も古く、今現在でも現役の言語ですので、学ぶメリットもたくさんあります。
ですが、コンピューターの仕組みにひも付いている概念が多いこともあり、初学者には難しいというデメリットもあります。
では、なぜC言語で授業するのでしょうか?
大学でのプログラミング授業はどちらかというと実践的な目的ではなく、コンピューターやプログラムはどう動いているのかという理論を理解する目的が中心だからです。
C言語でプログラミングをするには、メモリやCPUの仕組みにアクセスしたり、ビット/バイトなどのデジタルな概念を操作する必要が出てくるので、そういった目的には向いていると言えるでしょう。
Javaを教える大学もある
C言語と並ぶメジャーな言語に「Java」というプログラム言語があります。
コンパイルされたプログラムはさまざまな動作環境にもっていっても動作するという「Write once, run anyware」の特性があり、企業が扱うような大規模なシステムでも多く採用されています。
C言語と比較してより簡単なのか?
Javaには「オブジェクト指向」という抽象化された概念が出てくるので、初学者にとってはどっちもどっちという難易度ではないかと、、。
冒頭の「卒業後はプログラマーになりたい」といった志望を叶えるのであれば、Javaを教えてくれる大学を狙うという方法もありだと思います。
大学のプログラミング授業が難しくてついていけなくなる前に
大学のプログラミング授業は、専門的に時間を割けるわけではなく全体カリキュラムの一部として行われるため、どうしても決められた授業範囲を1年次、2年次で完了させるという流れになってしまいます。
そのため、一度つまづいてしまうと授業についていくことも難しくなってしまう事実もあります。
わからない時は積極的に質問しよう
わからないときはやはり身近な人に聞くのが一番です。
クラスメイトや友人に詳しい人がいたら積極的に質問してみましょう。
教える方もきちんと解答できることで新たに学ぶこともあるでしょうから、「こんな簡単な質問だと聞きにくいな」と思わずに聞きましょう。
グループで課題に取り組むようなケースでは、締め切りまでの時間も限られてしまうため、つい「できる人におまかせ」みたいになってしまうかもしれません。
ですが、そういった時こそどういう理由でそのコードになったのか、グループで議論していくとグループ全員の理解も深まります。
知り合いが周囲にいないという場合は、授業中であればTA/SAの方々に積極的に質問するのが早道です。
エラーコードの読み方を覚えよう
動くはず、と思って書いたコードがエラーになってしまう・・・。残念ながらプログラムは書いたとおりに動いているので、原因を調べて修正しないとエラーは解消されません。
そのようなとき、画面に表示されるエラーメッセージは解決のヒントを出してくれています。
エラーメッセージはたいていの場合、「コード」と呼ばれる英数字で構成される文字列と「メッセージ」と呼ばれる原因の詳細を説明した文字列の組み合わせで出力されます。
C言語やJava言語のような「コンパイル言語」には大きく2つのエラータイプがあります。
・コンパイル時のエラー:ソースコードを実行形式に変換するときに発生するタイプ
・実行時のエラー:プログラムを実行したときに発生するタイプ
例)コンパイル時のエラー例
sample.c: In function ‘main’: sample.c:6:18: error: ‘b’ undeclared (first use in this function) printf("b=%d", b); ^ sample.c:6:18: note: each undeclared identifier is reported only once for each function it appears in
2行目に出力されている内容がコンパイラーからの指摘内容です。「b」という名前の変数が定義されていないのに関数内で使われていますよ、ということを意味しています。
このようにエラーメッセージにはかなり具体的な指摘内容が出力されているため、ソースコードの書き方に間違いがある場合はすぐに修正が可能なはずです。
ただし、調べるのがちょっと難しいのが実行時のエラー。
理由はプログラムが実際に動いて発生しないとわからないのと、エラーメッセージの内容が急に「segmentation fault」とか「Null Pointer Exception」とかよくわからない内容になることが多いためです。
実行時のエラーが発生した場合は、エラーメッセージだけではわからないことも多いため、「デバッグ」という作業も組み合わせて調べます。
こまめにコメントアウトするようにしよう
実行時エラーが発生した場合、簡単に調べる方法はないのでしょうか?
簡単なプログラムならどこまで動くのかを「コメントアウト」で調べることができます。
例えば、以下のようなプログラムで実行時エラーが発生したとします。
#include 処理A 処理B 処理C
単純にプログラムの後ろのほうから順にコメントアウトしていきながら実行してみて、どこまでなら正常に動くのか?を調べるのです。
#include 処理A /* 処理B */ /* 処理C */
上記のように、処理Bまでをコメントアウトしたらプログラムが動いた、となれば、処理Bの記述に問題がある、ということになります。
非効率ではありますが、自分で何かを処理を書き加えた結果エラーになった場合など、一旦書き加えた処理を全部コメントアウトして、一つずつ前からコメントインして調べるといった使い方も可能です。
大学でのプログラミング学習と独学はどっちが効果的?
ここまで、大学で学べるプログラミング言語と学べる内容について説明してきました。
エンジニアを目指す人たちにとって、それだけでエンジニアとして世の中へ出ていけるのか?
という点は気になるはずです。
では独学でと考えても、どう手をつけてよいのかわからないのも事実ではないでしょうか。
ここでは大学で学ぶのと独学で学ぶのとどちらが効果的なのか?について説明していきます。
大学ではプログラミングを長期にわたってまんべんなく学ぶ
大学でのプログラミング授業は、プログラミング言語の仕様の学習とそれを使ってどのようにアルゴリズムを書いていくか、基礎編の範囲をまんべんなく学ぶイメージです。
全ての大学がそうであると断言できるわけではありませんが、プログラマーとして企業でバリバリ開発できるレベルに到達できる例はほとんどないのではと思います。
やはり大学においては、一般教養や他の専門教育と平行して組み込まれている以上、プログラミングだけに時間をかけれるわけではないのです。
研究室に入るようになると、専攻によってはその専門的な解析のためにプログラムを利用することもあるかもしれません。
ある特定の分野の処理に向いているプログラム言語もあるので、そのようなケースにおいてはまんべんなくというよりは狭く深く学ぶことになるでしょう。
いずれにせよ、プログラマーを目指すならそういったプログラムを学ぶキッカケをもとに、自分でどんどん勉強していく必要があります。
目的に応じて必要な言語を独学するのが最短ルート
大学では「プログラムというもの」を教えてくれますが、実際のプログラム言語は解決したい問題があって開発されるものです。
ある言語の改良版だったり、全く新たな概念でつくられたりもしますが、明確な用途が存在するものがほとんどです。
ですから、まずは世の中におけるプログラム人気言語ランキングなどからでもよいので、「どうしてその言語が開発されたのか」「どういった点が向いているのか」といった「存在理由」を調べてみてください。
その後、自分の専攻内容と結びついている言語や、将来職業にしたい分野で使われている言語をピックアップして独学で学んでいくことをオススメします。
プログラム言語は実際に書いてみないとなかなかその素性が理解できない部分があるので、書いて「なるほど!」と思えることが大切だと思います。
とにかく書いて試してみる、問題が起きたらWebで調べて修正方法を試してみる、といったように「トライ&エラー」で学ぶのが最短ルートです。
最初はオンラインサービス(progate,ドットインストール)で基礎学習
最近ではオンラインでプログラミングを学べるサービスも存在します。有名なサービスとして、
・progate
・ドットインストール
という2つのサービスがあります。(いずれも有料会員プランあり)
Progate
progateはプログラミングを行う環境もオンラインサービス側に用意されており、難しい環境構築などの作業をすることなく、プログラミングを学んでいくことができます。
教材はスライドベースになっているため、自分のペースで読み進めることができるのもポイントです。
ドットインストール
ドットインストールはというと、プログラミングする環境を実際に構築し、その環境上で学習をする形態です。
つまり、実際の開発現場に近い形で学ぶことが可能。
教材は動画ベースで、授業を受けるような感覚で学ぶことができます。
また、複数のプログラム言語を学べる教材が用意されているので、身につけたい言語がいくつかある場合はこちらを選択すると良いでしょう。
大学が文系でもプログラミングは学べる!
ここまでの説明からみても、「大学が文系」という事実は実際にはプログラミングを学ぶのにさほど影響はないのではと思いませんでしたか?
要するに独学に割ける時間さえ確保できれば、理系・文系の差なんて無いに等しく、どれだけソースコードを書いたか、その試行回数のほうが活きてくるはずです。
また、ソースコードを書く環境や実行するための環境はオンライン上で用意してくれるサービスもありますし、大手のクラウドサービスが用意している無料枠も視野にいれると、プログラミングを学べる場所はいくらでも確保できます。
初心者的に「やってみた系」の記事もブログやQiitaなどの技術系サイトにたくさん掲載されているので、ぜひ参考にしてみてください。
独学に限界を感じたらプログラミングスクールで学ぶのも1つの手段
独学による学習は、自分のペースで進められることがメリットですが、理解がすすまなかったときに辛くなってしまう一面もあります。
また、得意な部分と不得意な部分が出てきてしまい、無意識に不得意なところを避けてしまうことから習熟度にムラが発生してしまう懸念もあります。
そのような要因から「行き詰まってしまった」と感じるようであれば、プログラミングスクールを活用するのもありです。
自分が学ぼうとするプログラミング言語について、再度プロの指導のもとで体系的に学ぶことによってより理解を深めることができる効果が期待できます。
わからないところについてもチャットなどを活用することですぐに返答を得られますので、一人でモヤモヤして行き詰まってしまうよりは投資するだけのメリットは得られます。
プログラミングスクールを活用するもう一つの目的として、プログラマーを職種とするためのキャリア支援を受けられる点があります。
プログラミングスクールのサービス内容にもよりますが、プログラミングのスキルそのものよりも、それをどう収入につなげていくか、自身の成長戦略をどう考えるべきか、といったアドバイスを貰える機会としても活用できるので、検討してみてください!
WRITER

コードランとは、プログラミング初心者や副業/フリーランス向けに、プログラミングスクールの評判や口コミを比較できるサイトです。 スクール比較のほかに、現役エンジニアたちが現場で活躍できるようになるまでのストーリーや 「未経験でもプログラマーになれるの?」「 スキルアップするには何からはじめればいいの?」「 フリーランスはみんなどうやって稼いでるの?」 「実際のお給料は?」 など、プログラミングを志すみなさん向けの記事を集めています。