見出し画像

UoPeopleでCS1103を履修した感想

※2022年6月初旬時点の情報です。

UoPeopleでCS1103 Programming 2を履修した感想文です。すでにUoPeopleに入学済みで、今後同講義を受講する予定の方を想定読者としているため、UoPeopleのシステムや独自用語の説明などは割愛しています。

受講した人間のバックグラウンド

Javaの経験はあるものの、特にここ数年は上流工程がメインだったためコーディング経験は豊富とは言い難い状態でした。また、アルゴリズムの知識についても、実務や基本情報・応用情報の勉強で少々見かけたことはあるが……というレベルでした。

講義内容

範囲

詳細は公式ページにあるとおりですが、以下のような内容を学びました。

  • 例外処理

  • 再帰などのアルゴリズム

  • 連結リストなどのADT(抽象データ型)

  • ジェネリックプログラミング

  • ファイルの取り扱い

  • ソケット通信

  • GUIプログラミング

単純にJavaを学ぶだけでなく、データやイベントの取り扱い方など、プログラミングに必要な基礎知識を実践を通して身に着けていくような内容でした。なお、Prerequisitesの科目はCS1102のみとなっていますが、最低限の数学の基礎知識があるほうが進めやすく感じました。


課題・試験

  • Discussion課題

    • 学んだことを実務で活用できる程度まできちんと理解しているかを問われる課題が多かった記憶です。文字数制限がなかったので、書こうと思えばいくらでも書けるし、100~200Words程度で済ませようと思えば済ませられるといったものでした。ただ、自身の理解を深める意味合いもあり、私は基本的にサンプルコードや手描きの図を添えるようにしていました。

  • プログラミング課題

    • 最終週を除き毎週Programming Assignmentがあり、さらにLearning Journalでも提出は任意とはいえExerciseというコーディング課題がありました。つまり、基本的に毎週2種類以上のコードを書くことが求められます。

    • スクラッチ開発はほぼなく、用意されたサンプルコードを改修していく、といったような形が大半でしたが、それでもコーディングにはかなり時間がかかりました。また、仕様書から「結局何を作るのか」「最低何が実装されていれば良いのか」といったところを汲み取るのにも時間を取られました。

  • Learning Journal

    • Learning Journalでは上記とは別にUoPeopleでは頻出である学んだことの振り返りも行いました。指定Word数がそれなりに多く、こちらの文字埋めにもさりげなく時間を取られました。

  • Quiz系

    • Graded Quizなどの問題そのものはそれほど難しくはなかった印象です。対策のしやすさという点ではCS1102の方が難易度は高かったように思います。

  • その他

    • Learning Guideが非常に読みやすくまとまっていたため、指定教科書以上にそちらを何度も読み返していました。


かかった時間

コーディング課題にかなりの時間を取られ、毎週18時間程度はかかっていました。Week6,7あたりはコーディング課題がさらに重くなり、Programming Assignmentだけで18時間を費やしてしまいました。


使ったツール・本など

大学からの指定教科書やツールに加えて、私は以下を利用していました。

開発環境

大学からの指定はEclipseでしたが、Degree Seeking StudentになったことでJetBrainsの学生ライセンスでIntelliJ IDEAが無料で使えるようになったので、そちらをメインで利用していました。

デバッグ時の変数に格納されている値の見やすさや補助テキストなど、使い勝手が良かったです。
ただ、Java Appletの公式サポートは現在なさそうだったため、Java Appletを利用する課題が出たときはEclipseを利用していました。Eclipseプロジェクトからの移行は以下を参照しながら進めました。

なお、この講義の半ばあたりでデバッグ方法を学ぶのですが、その前の時点でデバッグ機能を使えないと開発しづらいのでは?と思われる課題が出てきていたため、事前にデバッグ方法も知っておいてからこの講義に臨んだほうが良いかと思います。
※以下は一例です。

参考書・参考ページ

CS1102に引き続き、Javaの言語仕様の理解には以下を利用していました。実務で利用する場合にはこういった基準で選定すると良い、といった実践的な内容も含むため、Discussion課題の際に重宝しました。

アルゴリズムについては、こちらで紹介されていた以下を利用していました。アニメーションがわかりやすいのはもちろん、疑似コードが載っているためこちらもやはりコーディング課題の際などに重宝しました。

また、Java Swingを含めたGUIプログラミングについてはUoPeopleで学んだこと以外に経験・知識共になく、指定テキストのみでは私には理解が難しかったため、主に以下のサイトにお世話になっておりました。

図の生成

Discussion課題などで、図を描いたほうが説明が早そうなものに関しては、iPadでお絵描きして画像出力したものをぺたぺた貼っていました。


感想

噂には聴いていましたが非常にハードな講義でした。この講義に限らないとはいえ、徐々に難易度が上がっていく一方で疲労も徐々に溜まっていき、終盤は満身創痍状態でした。この講義をフルタイムで働きながらこなしてきた先輩方には頭が下がります……。正直二度と受けたくないレベルです。
ただ、おそらく独学ではこの難易度の内容をこの期間内で勉強することは私にはできていなかったと思うので、達成感はかなりありました。

ちなみに、今TermはMATH1302(離散数学)も同時受講していたのですが、再帰や集合など、一部キーワードが重複する部分もあり、同時に履修していてちょうど良かったと思いました。


この記事が気に入ったらサポートをしてみませんか?