概要
- 問題掲載サイト: http://jr3.cs.uec.ac.jp/24/
学内からパスなしでログインできます。 - FAQ資料
- 多段SSHでCEDにつなぐ方法:UEC クラウドアカウントでログインすると見れます。
- CEDでC言語のコーディングをする際に生じるエラーに関して:UEC MSアカウントでログインすると見れます。
FAQ
再履でクラスの変更をしたい
下記メールを担当の先生に送ってください。
〇〇先生
こんにちは、学域◯年 `学籍番号` の◯◯ ◯◯です。
情報領域演習第三の再履修で受講クラスの変更をしたく、ご相談のメールをお送りします。
・申請内容:(例)2年次の受講では〇クラス(◯曜日◯限)だったが、履修登録の都合で◯クラス(◯曜日◯限)に変更したい。
・クラスを変更する理由:(例)必修の〇〇の授業を履修する必要があり、◯クラス(◯曜日◯限)に出席することができない。
どうぞよろしくお願いします。
〇〇
ツールが使いこなせない
- この授業では、エディタを使ってC言語でアルゴリズムを記述し、CED(電通大 Ⅰ類の計算機室)でコンパイルできれば、問題ありませんが、様々なツールを使いこなせると、より快適に対応できると思います。
- The Missing Semester of Your CS Education (日本語版) には、Computer Scienceに有用な様々なツールの使い方がまとまっているので、参考にすると良いでしょう。
CEDへの接続が面倒くさい
- CED に VScode の Remote-ssh を使ってアクセスするを参考にVisual Studio Codeの設定を行ってください。
全然書けない
- 図書館で適当にC言語の入門書を借りて一冊真面目に読み込んで、自分でコードを書いて理解しましょう。
どこがおかしいかわからない
- 誰かに「何がどうわからないのか」「どう考えているのか?」「どこまでわかっているのか」を話してみましょう。このとき、相手は実在の人間でもいいですし、ぬいぐるみ等でもいいです。自分の考えを言語化していく過程で、問題が整理されて、解きやすくなります。
- 参考:Rubber duck debugging [日本語]
メールで問い合わせる際の注意
- メールには自分の名前と学籍番号を書いて下さい。誰からのメールかわからないとスパムになってしまいます。
- ソースコードは 添付 で送って下さい。本文に貼り付けるとどこまでがコードがわかりません。また改行などが代わってしまったために、そのままコピー&ペーストできないことが多いです。
- コードにはそのコードの方針などをコメントで記載して下さい。
- 変数名などは適当におかず、その変数が何を意味しているのかがわかりやすいように命名には気をつけて下さい。
- 最大値や最小値なら
max_
とかmin_
にする。 - 頭なら
first_
、末尾ならlast_
とかにする。
- 最大値や最小値なら
- 変数名などは適当におかず、その変数が何を意味しているのかがわかりやすいように命名には気をつけて下さい。
コントロールキーの使い方がわからない。
よく使うのは以下の入力です(ctrl= control キー、 + x = xキーを同時に押す)。
ctrl + d
: EOF(End Of File)ctrl + c
: 割り込み(Interrupt)。SIGINTを送る。ctrl + z
: 一時停止。SIGTSTP(SIGnal Terminal SToP)を送る。
Tips
警告の意味が分からない
- 制御が非 void 関数の終わりに到達しました [ -Wreturn - type ]
if
やelse
を良く見直して、return
漏れがないかどうかを確認して下さい。- 参考(釧路工業高等専門学校の平成27年度 3J プログラミング言語IIのページ)
自宅からCEDにアクセスする方法
$ ssh UECアカウント@yellow99.ced.cei.uec.ac.jp
- またはsol経由でアクセスする。詳細は2017度受講学生のページを参照下さい。
- オススメ は 自宅のマシンにもVScodeをインストールして、Remote - SSH等のExtensionをインストールしてcedにアクセスするのがいいです。
サクサク書きたい
- visual studio codeを使いましょう。CEDの管理者にお願いして2019年度から、visual studio codeを導入してもらったので、活用してください。
デバッカを使いたい > gdbを覚えてみよう
下記サイトにgdbの手順が書いてあります。法政大学情報科学部・情報科学研究科のコンピュータ資源を管理している学生有志によるチームによるページらしく、とても丁寧に記載されています。 - gcc+gdbによるプログラムのデバッグ 第1回 ステップ実行、変数の操作、ブレークポイント
参考書
アルゴリズム
アルゴリズムの自習用の参考図書をあげています。 上にあげているもの入門書で、徐々に本格的な書籍になります。書籍名の下に授業で扱う内容が書かれたページを追記しました。授業でつまずいたときはそのページをよく読んでください。
-
アルゴリズムを、はじめよう. 伊藤 静香. インプレスR&D/インプレスビジネスメディア. 2012. 図書館ebook Amazon
- ⑧ pp.190 - 216:第10章 クイックソート
- ⑨ pp.154 - 170:第 8 章 単純交換法(バブルソート)
- ⑩ pp.101 - 116:第 5 章 二分探索法(バイナリサーチ)
- ⑩ pp.118 - 138:第 6 章 ハッシュ探索法
-
アルゴリズム図鑑 絵で見てわかる26のアルゴリズム. 石田 保輝 https://www.amazon.co.jp/dp/4798149772/
-
改訂第4版 C言語によるはじめてのアルゴリズム入門. 河西 朝雄 https://www.amazon.co.jp/dp/4774193739/
-
新・明解C言語で学ぶアルゴリズムとデータ構造(明解シリーズ) . 柴田 望洋 https://www.amazon.co.jp/dp/4797390522/
- ③ pp.173 - 201 : 第5章 再帰的アルゴリズム
- ④ pp.143 - 169 : 第4章 スタックとキュー
- ⑤ pp.333 - 383 : 第9章 線形リスト
- ⑧ pp.228 - 247 : 6 - 6 クイックソート
- ⑧ pp.248 - 253 : 6 - 7 マージソート
- ⑪ pp.387-407 : 第10章 木構造
-
プログラミングの宝箱 アルゴリズムとデータ構造 第2版. 紀平 拓男 https://www.amazon.co.jp/dp/4797363282/
- ③ pp.137-147: 第5章 再帰呼び出し
- ④ pp.97-126: 第4章 スタック&キュー
- ⑤ pp.70-83: 第3章 リスト
- ⑧ pp.6-15 : クイックソート、マージソート
- ⑪ pp.161-199 : ツリー構造(p.191にAVL木、p.194にB木についてかかれています。)
- ⑭ pp.358-375:グラフ
-
セジウィック:アルゴリズムC 第1~4部基礎・データ構造・整列・探索. ロバート セジウィック 図書館ebook Amazon
- ④ pp.121-123: プッシュダウンスタック抽象データ型
- ⑤ pp.80-97: リンクによるリスト、初等的なリスト処理、リストに対する記憶領域の割付け
- ⑧ pp.273-299: クイックソート
- ⑧ pp.300-323: マージソート
- ⑪ pp.195-203: 木
- ⑪ pp.208-213: 木の走査
- ⑫ pp.494-501: 赤黒木 (高さ平衡木=AVL木も書かれています)
- ⑬ pp.106-111: グラフ
-
アルゴリズムイントロダクション 第3版 第1巻 基礎・ソート・データ構造・数学(世界標準MIT教科書) T. コルメン 図書館ebook
Amazon -
渡部 有隆, Ozy, 秋葉 拓哉. プログラミングコンテスト攻略のためのアルゴリズムとデータ構造. マイナビ出版. 2015. 図書館ebook
-
秋葉 拓哉, 岩田 陽一, 北川 宜稔. プログラミングコンテストチャレンジブック ―問題解決のアルゴリズム活用力とコーディングテクニックを鍛える―第2版. マイナビ出版. 2012. 図書館ebook
コンピュータサイエンス
計算機そのものに関する本としては、下記の書籍がおすすめです。Computer Scienceにおける基礎的な内容をギュッと凝縮した本で、計算量・データ・アルゴリズム・データベース・アーキテクチャ・言語などが書かれています。
- みんなのコンピュータサイエンス いま知っておきたいIT技術を支える基礎教養. Wladston Ferreira Filho(著), 小山 裕司(監訳) https://www.amazon.co.jp/dp/B07KXP79Y9/ https://www.honyaclub.com/shop/g/g19498276/
- ③ p63-66: 動的計画法
- ③ p45-46: 再帰処理
- ④ p77-78: スタック
- ④ p78-79: キュー
- ⑤ p79-85: リスト、配列、連結リスト
- ⑧ p96-98: ソート
- ⑪ p86-90: 木、二分探索木
- ⑬ p99-102: グラフ
その他
下記サイトの情報も参考になります。
- 電子情報通信学会知識ベース, 6群 コンピュータ - 基礎理論とハードウェア, 3編 アルゴリズムとデータ構造, 3 章 主要なアルゴリズムとデータ構造 (PDF)
- プログラミング通論(久野先生 シラバス) > 授業のページ
- アルゴリズム論第一(大森先生・新谷先生) > 授業のページ(学内限定)
YouTubeの講義動画
- AVL木について
- AVL木に関する講義です。
- AVL木について、学生と対話しながら説明しています。字幕付きです。
- グラフについて
- JST ERATO 河原林巨大グラフプロジェクト のYouTubeチャンネルにグラフの紹介動画があります。アルゴリズムが世界を変えるシリーズ面白いです。Season 1.0, Season 2.0, Season 3.0, Season 4.0.
- ダイクストラ法について