【編入】受験時に知りたかった筑波情報学群対策~情報基礎編~
この記事を開いてくださったということは、筑波大の情報学群に編入したいということだと思います。情報学群の科目は、TOEIC、数学、そして情報基礎です。この謎に包まれた科目と僕との1年半をここに晒し上げます。
「情報基礎」って結局何?
情報基礎という科目名ですが結局のところ何が問われるのか。
募集要項には次のように記されています。
知っとるわ!といった感じですね。
H24年からR7(本番)までの問題を解いた感じだと、
C言語
データ構造とアルゴリズム
情報理論
といった感じです。上二つが出題されることは有名ですが、近年では情報理論もお目にかかるようになり、これが年を追うごとに無視できなくなってきています。ただ、問題設定で取り扱われるというだけで、情報理論の知識が直接問われまくるということではない(断言はできません。)ので、上二つに比べて比重は小さめです。
情報基礎について知っておいてほしいこと
①四大勢と、高専生との差は思ったより開かない
四大の人でも十分に戦えるということです。もちろん、僕たちがちまちま家庭科とか道徳とかやってる間に彼らは高専の授業でC言語をやっています。ただ、高専生はC言語以外にも学ぶことが非常に多く、そのため一点集中でC言語をやっているわけではありません。
また、高専生の人たちは編入試験を受ける時点で、高校受験までの5年間のブランクがありますが私たちは基本2年です。大学受験時に積み上げた受験勉強の助走といったおまけ付きです。この点では、私たち四大勢が有利です。
したがって、スタート位置を考えれば確かに不利かもしれませんが、彼らを追い越せないことはないです。最初はバケモノに見えますが。
②出題範囲が局所的な傾向がある。
かなり絞って出題してきたイメージがあります。そのため、「せっかくグラフに全振りしたのにクイックソートしか出なかった ( ; ∀ ;) 」みたいなことが起こりかねません。みなさんに伝えたいことは、「山を張って勉強するのではなく、どれが出ても対応できるように対策してほしい。」ことです。一つでも理解が不十分な単元を残してはいけません。
③試験で問われることは、情報学全体のごく一部である。
試験では、一般的な情報学生が2年かけて学んだことが問われるかといわれると、そうではありません。かなり少ないです。なので、間に合わないかも、、などと諦める必要はありません。
ただ、ここで話しておきたいことは上記の事ではありません。
入学後の話になりますが、合格した場合は3年次から内部生に交じって勉強をします。3年からの勉強内容はより専門的になってきます。1~2年についてはC言語やアルゴリズムくらいしか身についていない人が、3年の勉強についていくことは非常に難しいです。したがって合格後もかなりの確率で受験時と同じ勉強生活が続くことになるでしょう。その覚悟がある人はぜひ挑戦するべきですが、まだ考えたいひとは一旦自分のやりたいことと編入を天秤にかけてみてください。
参考書の紹介
合格者の方々がよくやられている参考書の紹介を僕もやってみます。
おすすめ度ですが、僕はつけないことにします。理由は、他の方々の紹介を見ていると、自分が使いまくっている参考書が評価されていなかったり、逆もあったりするからです。でもどちらも受かってます。その人によって必要な参考書は違います。
よって、僕はここでは、自分が余り使わなかった参考書から順に、
本の概要
レベル(体感)3段階評価
おすすめしたい人
を記述していきます。
①定本C
難易度 ★★★
・アルゴリズムとデータ構造が、文字でかなり丁寧に書かれています。いくつかソースコードが載っていますが、C++で記述されているので注意が必要です。
・おすすめしたい人:アルゴリズムやデータ構造の学習が一通り完了した人
僕はこの本を読んだ時全く分かりませんでした。よく有効活用されている方をお見掛けしますが、少なくとも初学者がすらすら読める内容ではありません。一通り知識を蓄えた人が、その確認として、またその知識をさらに深めるために読むといいなと感じました。
②けんちょんさんが書いた本(アルゴリズムとデータ構造)
難易度 ★★★
・競技プログラミングの形式で、データ構造やアルゴリズムのoutputができます。
・おすすめしたい人:データ構造やアルゴリズムのoutput教材が欲しい人
上記で説明した通り、アウトプットができます。これは良いです。なぜなら情報基礎は数学とは違って演習できる教材が少ないからです。さらに、AOJをつかってコードを提出すれば自動採点もしてくれます。一通り学習が終わって、自分の知識を確実なものにしたい人に自信をもっておすすめします。
④やさしいC
難易度 ★
・「C言語ってなにそれ?おいしいの??」という人がこれを読むと、Cは食べ物ではないことに気づくことでしょう。解説が非常にわかりやすい。
・おすすめしたい人:C言語初学者、また、C言語を原理から理解したい人
突然ですが、参考書で大事なのは、「わかりやすいか」と「ごまかさずに解説されているか」だと思っています。そしてこの参考書はこの2つのバランスが非常にバランスよく取れていると感じます。最初は専門的な単語を使わずにやさしく解説されて、しかし一単元読み終えたころには十分な専門的知識として身についているはずです。
⑤C言語による初めてのアルゴリズム入門
難易度 ★★
・僕が一番使用した参考書です。特筆すべき点は、アルゴリズムとデータ構造が網羅されている点です。ほぼすべてのアルゴリズムにソースコードが付いていて、よく写経して勉強しました。グラフィックなどについての章が後半にありましたが、自分はやりました。おそらく試験で必要になることはありません。
・おすすめしたい人:アルゴリズムとデータ構造の勉強を始める人
写経が可能なので、ひとまずコーティングして実行してみましょう。アルゴリズムやデータ構造についてよく「このコードは覚えるのか」といった相談がありますがそんなことはありません。アルゴリズムやデータ構造のコードは覚えるものではありません。考え方を覚え、言葉を紡ぐようにC言語で作り上げるものです。プログラミングで意味のないコードなど一つもありません。一文一文全てに意味があります。なぜこのコードが必要なのかを意識しながら勉強してみてください。
その他:AtCoder
AtCoderは競技プログラミングのサイトです。「競技プログラミング」という単語の響き、ぞくぞくしますね。毎週土曜日に大会があり、それに参加していました。また、有志がまとめた過去問サイトを解き漁っていました。
AtCoderは情報基礎の対策で用いられますが、内容は体感「情報基礎8割+数学2割」といった感じです。直接数学の対策になるわけではありませんが、基礎的な数学力も養えます。
AtCoderは編入受験生全員におすすめしたいです。なぜなら、論理的思考力を養えるからです。この力で自分が感じた利点は
数学ではっきりとした解法プロセスをたてる力が付く
日常生活でタスクの処理能力が上がる
要領がよくなった気がする。
ざっとこんな感じです。教科の垣根を越えて効いてきます。論理的思考力は普通に勉強していては中々身につかないと思います。このサイトを有効活用して、是非皆さんに身に着けてほしいです。
fami的参考書ルートは
④やさしいC → ⑤C言語による初めてのアルゴリズム入門 → (②けんちょん本(余裕があれば))→ AtCoderか③螺旋本やりながら過去問
隙間時間に①定本か⑤C言語による初めてのアルゴリズム入門です。
情報の受験勉強の様子(ざっくり)
詳しいことは合格体験記に書いています。
1年6月 - 1年8月
やさしいCでC言語の基礎を学ぶ。
1年8月 - 1年2月
C言語による初めてのアルゴリズム入門をやり始める。このころ大学の授業でC言語の授業がありました。ファイル操作とかろくにやっていなかったのであまり評価高くなかったです。AtCoderもこのころ始めました。
1年2月 - 2年7月
過去問を始めました。↑の体験記に僕が泣きながらまとめた編入対策用のExcelシーートがあるので見に行ってください。
情報理論について
ここでお気づきかもしれませんが僕は情報理論の勉強をやっていません。正確には過去問で出た奴だけ少しやりましたが、同じものが出るはずがありませんので今思えば対策になってないどすえ。
最初に書きましたが、問題でかなり丁寧に説明してくれるので勉強しなくても解けないことはないですが、理解しているに越したことはないです。情報理論弱者が頑張って問題文読んでいる間に問題を解きだすことが出来ます。説明文は丁寧な分、分量が多いのでこの差はでかいです。
対策するかは皆さん次第です。ただ、2年3月に過去問を解きだすまで、僕はかなり余裕があったので、だらだらアルゴリズムの勉強するくらいだったら少し情報理論やってもよかったのかなと思います。
今年(令和7年)は単純パーセプトロンが出ました。(勉強してないからこれが情報理論の分野なのかすら知らない。)僕はなんとか解けはしましたが問題文を見たあの瞬間の絶望を今でも鮮明に覚えています。
この内容で今年易化したとか言ってる今年の合格者の方々。えぐい。
易化の正しい読み方は ”いか” だそうです くコ:彡
最後に
情報基礎とは関係のない話ですが、これから受験を迎える人たちに伝えたい内容です。
・勉強をやったかどうかの基準は「理解できたかどうか」
よく「一日10時間やる」とか「ワーク2周する」といった目標をたてる輩がいますが、僕は全く意味がないと思います。1日10時間やったとして、その時間中に解いた問題がテストに全て出たとき、どれくらい解けるでしょうか。想像がつかないと思います。もしかしたら2割しか解けないかもしれない。場合によっては8割以上解けるかもしれない。ただ、10時間やって、その収穫にばらつきがある時点で勉強は失敗です。自分がどれくらい出来るようになったかを把握できていないのは致命的です。「今やった問題はテストに出たら解けますか?」当たり前ですが、テストで点数をとるのが目的なのでこれを意識して勉強するべきです。理解できた量がそのまま勉強した量と言えます。勉強は10時間やるのでなく2周やるのではなく、理解できるまで、テストに出た時に解けると判断できるまでやってください。「ワーク2周」は何を根拠に2周なのですか??
さらに、最初に紹介した目標の立て方をしている人は受験において最も悲惨な結果を迎える場合が多いです。なぜなら勉強をやったという感覚だけが残り、実際には何も成長していないからです。だったら何も勉強していない自堕落な人の方がまだ合格の可能性があります。
・結果よりも過程が大事
もちろん受験をする以上、結果にもこだわってほしいですが、僕はそれよりも過程にこだわることが合格への近道だと思っています。編入受験は1年半の長い道のりです。「必死に勉強して落ちたらどうしよう」と思って全力を注げない時期が必ず訪れます。編入の受験科目は将来の仕事に繋がります。これに周りの大学生よりも全力を注いだあなたはたとえ落ちてしまったとしても周りとは十分すぎるアドバンテージを持っていると言ってよいと思います。結果にこだわってしまうと先ほどのように委縮してしまいます。自分が意識していなくても、嫌でも結果発表の時はやってきます。それなら「自分がこの受験勉強でどれくらい成長するのか」といった過程を大切にすることが大事です。
プログラミングは非常に魅力的で、自分が書いたコードがうまく動いたときの達成感は、他の何物にも代えられません。勉強スタイルは人それぞれであるため、他の方々の記事もよく参考にしてもらいたいのですが、たとえどのような勉強法を選んだとしても、楽しみながら勉強することだけは是非忘れないでほしいです。