Archive for the ‘プログラミング2’ Category

C言語入門のはじまり

火曜日, 1月 22nd, 2019

まだ「計算機アーキテクチャ」とか「オペレーティングシステム」とかを知らない、コンピュータの動作原理をイメージできていない学年へのイントロ的に、C言語入門を2週間だけやってます。例年だと本当に基本的な文法と構造体ぐらいをやって、ペアプロで演習やるぐらい。

ポインタ周りは、2年次の「アルゴリズムとデータ構造」で教えるからそこまでやらなくてもいいよという話なんですが、今年は2週目にポインタも少し触れてみようかと画策中。アドレスとポインタぐらいを軽く説明して、実際に演習させて演習4ぐらいがイメージできるようになるなら十分かなと。

str型のあるPython、String型のあるJavaをやってから「文字列型?そんなものはない!」という言語にいくのとか。構造体があってクラスがあるという流れでの説明でもなくてその逆になるとか。説明の仕方に工夫が必要ですが、それもまた楽しいです。

採点祭り

木曜日, 1月 10th, 2019

去年は想定外(だけじゃないけど)タスクがあれこれ入ったこともあって、レポート採点(プログラミング2)が溜まってました。ごめんなさい。今週から採点しまくったので早ければ明日には終わりそう=結果告知できそう。

母数としては少ないけど、複数課題に共通しているミスはリポジトリにpushし忘れてるやつ。古い版しか置いてないとか、そもそもないとか。レポート上には結果書いててもコード確認できない=動作確認できないのは駄目です。

リファレンス参照させる課題。Integer.parseInt(String) でわざと例外履かせて、それを調べさせたり、そのスーパークラス解説させたり。ここで別メソッドを調べてたり、Objectクラス調べてたり。それはそれで悪くないところもあるけど、分かってて意図的にそう書いたという風でもないのはちょっと。

JUnit絡めたリファクタリング。テスト実行でグリーンになれば良いのだと理解してるのか、assertコメントアウトするのはやめてくれ〜。

Gradle。設定ファイルpushし忘れあるある。修正し忘れててデフォルトのままとかも。

ま、いろいろあります。

スレッド

水曜日, 1月 9th, 2019

あれこれあって昨日の日記。

久しぶりにプログラミング2でJavaな授業。教科書は終えたので、今週と来週は演習時間がメインになる予定ですが、それだけなのも寂しいかなということでスレッドの例を実演することに。

担当し始めた頃から実演してはいましたが、去年までは単に Thread.run() して「ほらスレッドが平行に動いてるでしょ」と確認できる例でした。1年次だということもあるし。それを今年は「同期が必要な例がこれ。だけど簡単に避けるのも難しいよ、後は今後の授業で学んでね(はぁと)」と少し踏み込む例示にしてみようかと。失敗例を見ること自体は簡単だし、その後の授業に繋げたいし。

Javaなレポート1での共通指摘事項

木曜日, 10月 25th, 2018

未提出者がまだ居ますが、レポート1の採点が終わりました。
まだJava始めたばかりということもあって、「慣習的な意味でのJavaらしさ」に関する指摘事項が多かったかな。そうでもないものもあったけど。以下、指摘回数が多い順。

・static。
特別な意図がないにも関わらず、(mainじゃない)メソッドにstaticを付けてしまう。このあたりの説明はまだしてないし、mainメソッド見たら付けたくなるよね。ま、この辺りはおいおい。

・命名規則。
クラス名の頭文字は大文字にとかね。これはstaticと比較すると慣習に過ぎないのだけど、可読性高めるならそうすべきだよね。

・インデント不揃い。
おおおおおおおい!? PythonでしこたまIndentationErrorだか出まくってたろうに、インデント強制言語のつもりでもあったのに〜。ということで指摘しまくり。(前述2件と比べると少ないけどね)

・voidしつつreturn。
これもPythonから入ると「なにこれ」か。voidしつつ「return;」と書いてる人が少し。mainメソッドにはreturn文ないじゃん〜。

・==演算子で文字列比較をしちゃう。
String.equals使えと注意した&コード例も書いてたのに、そこ読まずにやってた人もいたようで。最後までそこで躓いてたっぽいレポートも数件。ま、「何故==演算子で判定できないの?」という疑問にぶち当たるのは良いことだ。

プログラミング2の終了

火曜日, 1月 30th, 2018

授業としては今日が最後の週。今週はおまけ話(配列、Makefile)だけにして、余った時間で先週体調の都合でキャンセルさせてもらった口頭試問をやってました。

Javaの最終課題(自由課題)でチーム組んで取り組んだ学生ら対象に、誰かに任せっきりになってないかを確認することを目的に口頭試問を実施しています。去年は2,3グループぐらいだったと思うのですが、今年は6チームも。個人的に推奨してるので増えるのは嬉しいですが、去年と比べて強く押したわけでもないので、単にe17の特性とみたほうが良いのかも。

レポートやら採点タスク消化しないと!(その前に今週〆切な別タスクがあるのでそっちから手を付けてますが)

レポート6採点初め 〜build.gradle + test〜

火曜日, 1月 23rd, 2018

自由課題の採点に手を付け始めました。自由なだけあって採点しづらい部分もありますが、他課題と比べると採点してても飽きないところが教員側にとっては嬉しいです。学生側は自分でテーマ考える必要がある分そこで苦しんでる人もいるようですが、それは仕方ないのでテーマ例から考えてみて下さいってなところ。

まだ10件ぐらいしかチェックしてませんが、Gradle + JUnitの組み合わせの問題なのか「JUnit経由ではテストできるけど、Gradle経由では動かない」ことがちらほら。ググる感じではこんな話があるらしく、build.gradleに

dependencies {
testCompile group: ‘junit’, name: ‘junit’, version: ‘4.12’
testCompile ‘org.junit.jupiter:junit-jupiter-api:5.0.0’
}

こんな感じ(2つ目)でjupiter指定してやると良さげらしい。

これなしで動くこともあるというか、私の環境で作成したIntelliJプロジェクトだと無くても動くのが謎だな。どこの設定が影響いしているのだろう。.ideaのどこかっぽい気はするのだけど。

プログラミング2の自由課題2017

水曜日, 1月 17th, 2018

気温上がったお陰で1〜3部咲きぐらいになってる木もでてきました。雨中の桜もいとおかし。


去年からプログラミング1,2を担当してて、後期のJava編では最終レポートを「条件付き自由課題」にしてます。Gradle使えとかJUnit使えとか。

去年はレポートからリポジトリ&アプリ名を手動で取り出して一覧にしたのですが、それが面倒だったので今回はGoogleフォームに記入して貰いました。リポジトリが空欄だったり、リンクミスになってるのもあるかもですが、これらは何らかの理由で未提出の学生もいるからです。

去年と比べてどうなのかはまだチェックしてないので分かりませんが、同じぐらいには仕上がってるんじゃないかと期待してます。あと、2〜3人のチームで取り組む学生らが増えてるのは、個人的には嬉しいです。質が伴ってるかどうかは別として、互いに補いながらやるのを推奨しているので。

プログラミング2の採点が終了

木曜日, 3月 2nd, 2017

先日書いたように最終課題は自由課題でした。その自由課題を含めて全体の採点が終わり、個々のコメントも付け終えたのですが、それだけで終わると学生にも私にも勿体無いなということで「最終課題を終えた総論」をまとめてみました。

[ レポート7総論 ]

アドバイスを「Gradle, ユニットテスト, 実装, ドキュメント」の4種に分けてみました。ここに書いてることを一通り対応できるなら、余裕で100点満点あげちゃいます。2年次〜3年次の頃には「実装の発展的話題 case 4(hard coding)、case 6(実装とコンテンツの混在)」をどうにかできて、卒業までには case 5 の線引みたいなところまでやれると良いのかな。

ただしこれは一つの目安に過ぎなくて、例えば今時なら「webサービスとも連携するモバイルアプリ」ぐらいは作ってみて欲しい気もするし、「組み込みデバイス上で動作するアプリ」、「機械学習などの大規模計算」とかいろんな行き先があることを踏まえたコアとしての授業が[ プログラミング1 | プログラミング2 ]です。1年間通して達成目標を達成できるようになってるかは一つの基準ですが、「その先へ活用するためのコア」という意味で来年以降の活躍にも期待しています(ニッコリ)。

プログラミング2の自由課題(GitHubリポジトリ一覧)

水曜日, 3月 1st, 2017

1年次のプログラミング最終課題は、Gradle, JUnitとかいくつか条件つけた上での自由課題にしてみました。蓋を開けてみるとGradle/JUnit対応できてないプロジェクトが多かったり、そもそもコンパイル通らないのもあったりしますが、中にはかなり頑張って作り込んでるものも。インタラクティブなアプリでうまいこと例外処理して落ちにくくなってたり、jarファイルに外部ファイル含めるところまでやってるのもあったり。全体としては予想してたよりは良いかな。

個別の評価は後でどこかに書くとして、ここではリポジトリ一覧を列挙しておきます。レポートもpushさせて置けば良かったか。実装前にどう課題設定して、行程をどう見積もったかとか書いてるレポートもあったりします。イイネ!

3目並べ(oxゲーム) https://github.com/e165732/FinalReport.git
AI にゲームをさせてみる https://github.com/M-82s7503/Report7-player_AI-.git
BLACK JACK https://github.com/e165702/report7.git
GUIじゃんけん https://github.com/hsrmy/report7.git
RPG https://github.com/Koo0/Report7_RPG.git
RPG ツクーレール https://github.com/riono210/Report7.git
RPGコードの解読 https://github.com/bouch18/GameMake_repo7.git
SUUJIATE https://github.com/mmasker/Report7.git
codebreakergame https://github.com/165734/Report_7.git
oxゲーム https://github.com/ta-yo/report7.git
囲碁 https://github.com/RyumaRyama/Go_game.git
簡易RPG https://github.com/e165706/report7.git
オセロ https://github.com/Tatsuki-Ishigaki/Report7_0.git
オセロ https://github.com/e165739/Report7_Final_Ohello.git
ポーカー https://github.com/HiRoKiiii/Poker_.git
ポーカー https://github.com/Tomosuuu/report7.git
三山崩し https://github.com/chikito84/Report7.git
五目並べ https://github.com/yosuke1212/report7.git
レストラン https://github.com/YAkitaka/report7.git
カレンダー https://github.com/e165736/report7.git
スイカ割り https://github.com/e165750/Report7.git
簡易オセロ https://github.com/e165752/report7_Othello.git
連打ゲーム https://github.com/moneru/Report7.git
ロボコード https://github.com/naga55/Report7.git
行列ゲーム https://github.com/phuongchul/Report7.git
ロボコード https://github.com/ponyonyon/report7.git
ルーレット https://github.com/shrink64/report7.git
ポケベル入力 https://github.com/CyberKerug/Report7.git
数当てゲーム https://github.com/Eljefemasao/Report7.git
ヒープソート https://github.com/RYOTAMA/report7.git
英単語アプリ https://github.com/e165719/report7.git
目覚まし時計 https://github.com/e165747/Report7.git
ブロック崩し https://github.com/jo-gen-plus/Report7.git
ブロック崩し https://github.com/kodye/report7.git
スロットマシン https://github.com/TsukushiUechi/Report7.git
ヌメロンゲーム https://github.com/e165703/report7.git
ウィンドウ出力 https://github.com/e165749/report7.git
簡略化ポーカー https://github.com/e165760/report7.git
スロットマシン https://github.com/haraotsu/report7.git
反射神経テスト https://github.com/seloli/report7.git
ブラックジャック https://github.com/Kumaharu/report7.git
ブラックジャック https://github.com/Sawanari/re7.git
簡易チンチロリン https://github.com/e165713/Chinchiro.git
非対戦式ポーカー https://github.com/kuroneko1997/Poker.git
ブラックジャック https://github.com/ta-ryo/Final-repo-to.git
ポイント制すごろく https://github.com/Shota13/Report7.git
迷路を作り動かそう https://github.com/e165704G/report7.git
簡単な戦闘システム https://github.com/e165758/report7.git
誰でもできる文字入力 https://github.com/East6/report7.git
スライディングパズル https://github.com/tomo-lav/Sliding-Puzzle.git
スライムがぐるぐるするだけ https://github.com/mani0313/report7.2.git
ハートオブクラウンにおけるランダマイザ https://github.com/e165725/report7.git
個人用電子計算機のためのピアノ協奏曲第1番”蠍火” https://github.com/Fukuzawa3man/Music.git

2016年度/プログラミング2の口頭試問日調整

火曜日, 1月 31st, 2017

最終更新日: 2017/01/31, 9:30

プログラミング2・最終課題の口頭試問日調整用の記事です。

なお、口頭試問は「ペアもしくはチームでレポート提出する人たち」が対象です。
「空き時間目安」を参照の上、「口頭試問希望の手順」に沿って調整してください。
便宜上2月末まで期日を記入していますが、レポート提出締め切りから1週間程度を目安に終えるようにしてください。


口頭試問希望の手順

(1) レポートを提出(共有フォルダにアップロード)する。
 フォルダ名は「e165700+e165761」のように、グループメンバ全員のアカウント名を+で列挙して下さい。

(2) 提出後、別講義向けに書いてる「空き時間目安」を参照の上、希望日&時間帯をメールで申請する。その際、グループメンバもCcに含めること。
 なお、原則としてグループ単位での実施です。
 どうしても全員が揃う日程で調整できない場合には個別相談ください。

(3) 特に問題無ければ、私から承認メールを返信します。

(4) 予約時間帯にグループメンバ全員で口頭試問。(約20分程度。長いと30分オーバーになることも)
 *場所はその都度調整します。(デフォルト地創棟508の予定)
 *レポートに書いてあることを説明してもらいます。
 *当日は予め提出されたレポート(PDF)を見えるように準備します。
  用紙等の準備は不要です。(追加したい資料があれば電子データで提出ください)


メモ

実施状況
(現時点で無し)