今回は、CS1102 Programming 1 を受講した感想まとめです。
最初にコース全体の概要をまとめ、その後にユニットごとの感想、そして最後にmin自身の成績を書いていきます。
基本的に、ユニットごとに学習トピック、課題一覧、印象に残ったことの順でまとめていきます。
この記事は、2022.4.2に公開した記事をはてなブログから移行したものです。
CS1102の概要
コース全体の学習目的は次の通りです。
- Java仮想マシンやJavaコードとバイトコードの区別など、Javaの主要な概念を理解し、明確に述べることができる。
- Javaプログラミング言語の基本的な概念と機能を説明し、実装することができる。
- Java言語を使ってオブジェクト指向の概念を実装できる。
- Javaアプリケーションの設計、構築、実行、デバッグができる。
内容は、主にJavaを使ったプログラミング入門、という感じでした。
Unit1
学習トピック
- コンピュータがプログラムを実行する仕組み
- 同じJavaプログラムが異なる種類のコンピュータで動作する方法
- プログラミングの基本的な考え方
- Javaプログラムと関数
- Javaの型と変数
- Javaの式
- Javaプログラムの書き方
Unit1の課題
- Reading Assignment
- Programming Assignment
- Discussion Forum
- Learning Journal
- Self Quiz
Unit1は、プログラミングに限らないコンピュータ全体のお話と、型や変数などプログラミングの基礎となる物事のお話、開発環境などが主な範囲でした。
課題を進めていく中で、開発環境の構築や使い方を実践したり、自前のJava環境で簡単なプログラムを書くことができるようになりました。
印象に残ったこと
Unit1からProgramming Assignmentが課される
これはminの中でけっこうな衝撃ポイントでした。。。
前タームで受けたFoundationコースは、UNIV1001のWAやCS1101のProgramming Assignmentが始まったのはUnit2からだったのに!Unit1から課題が多いなんて聞いてない!
まあ逆に言えば、前タームのUnit5のような悲劇(前Unitのpeer assessmentとWAやPAが同ユニットで課された、鬼のように課題が多かった出来事の意)はおそらく起きないので、そういう観点から考えればありがたくもありますね。
Reading Assignmentの量が多い
こちらは大変ポイントです。
UNIV1001も中々に読む量は多かったですが、そんなものをかる~く上回ってくるこちらのコース。
文字が小さくて行間が狭かったので、途中からPDFで読むのがしんどくなり、ネット上で読めるほうに移行して何とか読み終えました。
PDFの分量にして、ざっと70ページほどあったみたいです。そりゃ大変なわけだ。
開発環境の日本語問題
こちらは、課題が云々というよりはmin自身のぼやきです。
minの自前のノートPCはWindows10搭載なのですが、デフォルトの言語設定が日本語なのです。
そのことを特に気にせずにコードを書き、Powershellで実行して出たメッセージをMoodleに貼り付けようとして、
「ん。。。?メッセージが日本語?だと。。。?」
となるわけです。
このまま貼り付けて提出したら、海外の方のブラウザでは最悪の場合文字化けするのではなかろうか。仮に文字化けしなくてもたぶんクラスメートは読めないじゃん。と気づき、しばらくググりまくりました。
結局、PCの言語設定を英語にすることで解決したのですが、想定外なところに落とし穴ってあるもんだなあ、という学びを得たのでした。
Unit2
学習トピック
- Javaのループ制御構造(while, do-while, for)
- Javaの分岐制御構造(IfとSwitch)
- トップダウンによるアルゴリズムの設計
- デバッギング
課題
- Reading Assignment
- Discussion
- Programming Assignment
- Peer assessment of Programming Assignment
- Learning Journal
- Self Quiz
今ユニットは、先週に引き続き、プログラミングの基礎を勉強しました。
内容としては主に、forやwhileなどのループ文、ifやswitchなどの条件分岐、配列入門など、プログラムに触れたことがある方なら絶対知っているであろう分野でした。
印象に残ったこと
Unit2の感想は
- Programming Assignment毎週あるんだ!
これです。
シラバスをきちんと読んでいないのがばれてしまう。。。
UNIV1001やCS1101は2週間おきだったのになあ。。。
今のところは指示書に従ってプログラムを組んでいくだけなのでそこまで負担にはなっていませんが、コース後半でどこまで難しくなっていくのか今から震えています。
他はそんなに特筆するようなことはなかった印象でした。
Unit3
学習トピック
- ブラックボックスインターフェース
- 静的メソッドの定義
- 静的メソッドの呼び出し
- 静的メンバ変数の使用
Rubyネイティブのminには「静的、てことは動的もあるの??」くらいでしたが、経験者ならどちらにせよ難しい内容ではないと思います。
課題
- Reading Assignment
- Discussion
- Programming Assignment
- Peer assessment of Programming Assignment
- Learning Journal
- Self Quiz
- Graded Quiz
印象に残ったこと
Programming assignmentのピア評価が返却
Unit3では、初めてProgramming assignmentの結果が返ってきました。
結果としては、課題が満点でピア評価が9.4点。どちらも悪くない結果でした。
理不尽な点数をつけるようなピアもあまり見当たらないため、悪くないクラスにあたったかなと感じています。
Graded quizが凶悪
初のGraded quizがあったのですが、こちらの難易度がわりと高かった印象です。。。
40分で20問出題され、
結果は1問ミスの95点でした。
難易度が高いというより、self quizに出た問題をひねったような問題や、そもそもself quizになかったような問題が、体感で半分ほど出題された気がします。
CS1102はひねくれた先生がつくっている、という噂を聞いたことがありますが、このGraded quizを受けた感じだと、あながちまちがっていないのかも、と思ったり。
再来週のGraded quizや、final examもこんな調子なことが予想できます。
Unit4
学習トピック
- オブジェクトとクラスの関係
- インスタンスメソッドと変数(ゲッターとセッターを含む)
- コンストラクタとオブジェクトの初期化
- オブジェクト指向の設計
課題
- Reading Assignment
- Discussion
- Programming Assignment
- Peer assessment of Programming Assignment
- Learning Journal
- Self Quiz
引き続きフルセットでした。
印象に残ったこと
専門用語が一気に増える
分野が分野なのでもともと専門用語が多いCSですが、今回で一気に専門用語が増えたイメージです。
オブジェクト指向はCS1101ではあまり出てこなかった分野なので、なおさらそう感じたのかもですね。
ですので、minのようなプログラミングを初めて間もない人や、プログラミングに触れた経験があまりない人は、ここで一度??となってつまづくかもしれません。
minはディスカッションの説明課題で詰まったので、日本語のJavaの本も並行して読み、課題に取り組みました。
とはいえ、minでもいつも通りのスケジュールで取り組めたため、Javaなどかっちり系の言語をよく使う方や、プログラミングに慣れた方にはたぶん問題ないレベルかと思います。
Unit5
学習トピック
- 継承、スーパークラスとサブクラス
- ポリモーフィズムと、メソッドのオーバーライド
- 「this 」と 「super」
- インターフェイス
課題
- Reading Assignment
- Discussion
- Programming Assignment
- Peer assessment of Programming Assignment
- Learning Journal
- Self Quiz
またもフルセットでした。
印象に残ったこと
Learning Journalを自分の中でフォーマット化できた
CS1102のLearning journalは、禅問答のようなお題が出されることで有名だったりします。
Termの始めのほうは、minもげんなりしながら質問を埋めていっていました。
ただしこのLJ、お題が毎週同じなのです。
なので、インストラクターのフィードバックの様子を見つつ、答え方を練っていくという対策を取ることができます。
UoPeopleの禁止事項なのでお題をここに書くことはできませんが、毎回満点をもらっているminのフォーマットを紹介しようと思います。
minのLJフォーマット
大項目1
Reading assignment、Discussion forum、Programming assignmentの3つについて、それぞれの学んだこと、取り組んでいる最中に感じたこと、初めて知ったこと、終わってからの感想、peerからのフィードバックをそれぞれ1文くらいずつ書き並べていく
大項目2
ここは素直に、それぞれの質問に各2~3文で答えていく(Unit全体を通した感想についての質問が多い印象です)
大項目3
これも2~3文ほどで質問に答える(UoPeopleでの学習について、今自分がどんな状況か答えればいい気がしています)
いかがでしょうか。
お題をしっかり書いてしまうとおそらく規則違反になってしまうため、漠然とした内容になっていますが、そこはご容赦ください。
だいたいこのフォーマットに沿って完成させれば、word数の制限に引っかからず、過不足ないLJになります。
基本的にLearning journalという名前のとおり、学習日記だと思って少しずつ書いていくと、ストレスなく書けるかと思います。
Unit6
学習目的
- ユーザーインターフェイスコンポーネント(ボタン、HBox、シーン、ラベル、など )
- イベント アクションイベント、マウスイベント、キーイベント
- イベントハンドラ(ActionListener、MouseListener、KeyCode)
課題
- Reading assignment
- Programming assignment (Unit5) のPeer assessment
- Discussion forum
- Learning journal
- Self quiz
- Graded quiz
でした。
なんと今回はProgramming assignmentがなく、少し余裕をもって動けた気がします(シラバスをちゃんと読んでいないことがばれてしまう。。。)。
印象に残ったこと
Graded quizの結果が悪かった
今回のGraded quizは、1時間で20問解く形式でした。
相変わらずSelf quizからの出題は少なく、テキストを読み込んでいないと難しい問題もあったように感じます。
体感としては、プログラムを読んでその出力を答える問題が7割、用語の問題が3割といった出題傾向でした。
結果としては3問落としてしまい(85点)、さすがにショックすぎて、モチベーションがだだ下がりしているところです。。。
そうはいってもfinal examが近づいてきてますし、どこかで切り替えないといけないですね。
eclipseでJavaFXが動かない
今回のディスカッションのお題がJavaFXのプログラムを動かしてみてその動作を説明する、という感じでしたが、JavaFXを動かすのにとても苦労しました。
これだけで半日ほど取られ、とんだ伏兵でした。
JavaFXは早めに入れておこう
ということで、このUnitまでに余裕があるのなら、JavaFXの環境は早めに準備しておくことをおすすめします。
Graded quizもあるUnitでここに時間をとられるのはなかなか致命的ですので。。。
Unit7
学習トピック
- 配列
- for-eachループ
- ArrayListとラッパークラス
- 2次元配列
課題
- Reading assigment
- Programming assignment
- Discussion forum
- Learning journal
- self-quiz
Programming assignmentのピアアセスメント以外のフルセットです。
印象に残ったこと
JavaFXではなくSwing??
今まで、テキストやプログラミング課題でGUIプログラミングといえばJavaFXでした。ところが今回プログラミング課題で、突如Swingが出現。
(JavaFXとSwingは、どちらもGUIプログラミングで使うものみたいです。)
課題の難易度自体は、手順書通りに作っていけば完成するレベルなので高いものではありませんでしたが、お前、マジか、、、
Final examで突然Swingの問題が出たりしないよね??と今から戦々恐々としています。
Unit8
学習トピック
- プログラミングで使われるオブジェクト指向の機能
- 継承とポリモーフィズムの実践
早い話が、今まで学んだことの復習です。
課題
- Reading assigment
- Peer assessment of Programming assignment
- Discussion forum
- Learning journal
- Self-quiz
- Review Quiz
Review Quizが出てくると、もう終わりか、、、という気持ちになります。
印象に残ったこと
課題の量がだいぶ少ない
一覧の字面だけを見ると、今までと変わらない量ですが、今回のReading assigmentは過去に一度読んだことがあるパートばかりでしたので、実際の量はだいぶ少なかったです。そういう意味では楽だったなあという印象です。
なのにDFのお題がしんどい
最初お題の意味がわかりませんでした。
結局、Slackのコミュニティの方々の書き込みを参考に、意味の当たりをつけて取り組みました。
今まで書いた課題を一通り復習して、一つ一つ解釈しないといけなかったため、そういう意味でも負担がかなりあるお題でした。
Final Exam
2回のGraded Quizで良くない成績を叩き出してしまったため、緊張で具合悪くなりそうになりながら受けました。
1時間で30問解く感じです。
Graded Quizの凶悪さがなかったかのような難易度で、見たことがある問題ばかり。
Self Quizの復習をしてReview Quizをきちんと回せば、さほど難しくはないと思います。
結果的に、無事に満点を取ることができました。
成績
結果は、96.73点となり、Aで着地しました。
個人的にはインストラクターもピアも、Term2に引き続きあたりでした。
おかげで、LJやDF、PAはほぼ満点を取ることができました。
それだけに、Graded Quizの失点が惜しまれるところでもありますが、無事にAを取れたので、よしとすることにします。
今までに受講したコース
UNIV1001 Online Education Strategies(AY2022-T2)
CS1101 Programming Foundamentals(AY2022-T2)
CS1102 Programming 1 (AY2022-T3)
他、単位移行で44単位
にほんブログ村