授業-ソフトウェア工学 > 2018年度


授業-2018年度-ソフトウェア工学

(公開) 




お知らせ

[ 編集 ]

追試(2019-02-06)

  • 追試
    • 2019-01-16に授業内で実施した最終試験の追試
      • 時間: 通常の時間割での4時限目(14:45-16:15)
      • 場所: 矢上 12-202E (いつもの授業の部屋の向かいの定員18名の小さい教室)
      • インフルエンザで試験を受けることができなかった若干名のための追試を行います.
        • 一応,試験前後にご連絡をくださった皆さんが対象であり,ご都合はその皆さんから伺い日程を決定しました.
      • ※折角,試験を作成しますので,最終試験は受けたが,この試験も受けたいという方がいたら,
        • 当日2/6の 9:30までにアンケートでご回答ください.試験問題を余分に印刷します
          • 前日の連絡になってしまい恐縮ですが,余分なサービスということでご容赦ください.
        • ちなみに,最終試験の代わりにはなりませんが,最終試験に失敗したなぁという方には,採点の参考にします.
        • 昨年度までは,補助レポートを実施していましたが,今年度は実施しません(履修案内にも実施するとは記載しませんでした)
          • どうしてもレポートは問題が難しくなりすぎてしまうのと,厳密でなくても自力で問題解決できることが目的なので,今年度は,この方法で試します.

最終試験(2019-01-16 授業内で実施)

学力確認試験 (第02回の持込用紙)

[ 編集 ]

学力確認試験の答え合わせ (12・05は予定を変更して答え合わせをします)

[ 編集 ]

学力確認試験

[ 編集 ]

  • 第01回 学力確認試験の内容を,一応,確定しました(2018-11-26).
    • 平均1問あたり15分とみて,4問で60分としたいと思います
      • 例年ですと(PythonではなくJavaプログラミングでしたが)1問あたり10分で.30~45分くらいの目安でした
      • が,PythonとJavaでは異なりますが,時間が短いという要望がありましたので,1問15分としたいと考えています.
    • 試験は,紙に,Pythonプログラムを書いていただく形式です
      • その際には,PCはログアウトしていただきます
        • したがって,回答時にはPCで動作確認したり,インターネットで関連知識を検索することはできません.
        • 字下げは,半角4文字を単位とするように,書いてください
          • (手書きなので,ちゃんと字下げしていることが分かる範囲であれば,多少幅が変動してもかまいません)
      • 試験後に,答え合わせをする予定です(時間次第)
    • 4問の内訳
      • 今年度は,新しい知識を増やすというよりも,基本的なプログラミングをしっかり,自力でできるようになることが目標です.
      • 各設問の対象とすること
        • [1] 関数定義,データ入出力
          • 関数を定義して,それを呼び出すわけですが...
          • 対象は,何らかの数値の変換と考えてください.数値は文字列(数字列)として扱うかもしれません.
          • 対象とするデータは,キーボードから読み込ませます.
        • [2] 文字列とリスト
          • 文字列を何らかの規則で変換する操作を対象とします.
          • 文字列は,変更不可(イミュータブルなので),一旦,(ミュータブルな)リストに変換してから,リスト上で何らかの変換操作を施し,最後にリストから文字列に戻すということを考えています
          • 補足
            • 対象とするデータは,キーボードから読み込ませます.
              • データの入出力に関する知識は必要です
            • 関数を定義していただきます
              • やはり関数定義の方法,関数呼び出しの方法の知識も必要です.
        • [3] 二重リスト
          • 二次元配列と考えてください.
          • 行列計算です.計算結果も表示させる必要があります.
          • Pythonの機能としては,あまり難しい機能をつかうつもりはありません.
          • 補足
            • 関数を定義していただきます
              • やはり関数定義の方法,関数呼び出しの方法の知識も必要です
        • [4] 辞書(dict),乱数の生成
          • 単語の出現頻度表という例題をやりましたが,同じようにカウントするものです.
          • 指定範囲の正整数の乱数を生成する方法を復習しておいてください
          • Pythonの機能としては,あまり難しい機能をつかうつもりはありません.
          • 補足
            • 対象とするデータは,キーボードから読み込ませます.
              • データの入出力に関する知識は必要です
            • 関数を定義していただきます
              • やはり関数定義の方法,関数呼び出しの方法の知識も必要です
      • 当然ですが,4問中何問かできればよいという発想は危険です.
        • 全問,正解できるようにご準備をお願いします.

学力確認試験 持込用紙

[ 編集 ]

第01回 学力確認試験 持込用紙

ドラフト原稿
  • 持込用紙 ドラフト原稿 (pdf) 2018-11-19
    • まず, ドラフト原稿は,41ページのプレゼン形式にしてありますので,勉強用に使ってください.
    • 最終的な持ち込み用紙は,この原稿をベースにA4用紙1~2枚(両面)に縮小して印刷します.
      • スペースの都合上,一部,省略せざるを得ません
      • 配布版の形に圧縮する作業に,少々時間がかかりそうだったので,とにかく,ドラフト版を掲載しておきます.

    第01回

    学力確認試験

    持込用紙

    ドラフト版(Ver.0.80)

    2018-11-19c

    20181119c-draft

配布版
  • 持込用紙 配布版 (pdf) 2018-11-21
    • ドラフト原稿を圧縮して,A4で4頁(両面印刷で2枚; 白黒印刷を予定)にしました.
      • 何とか,両面2枚に収めることができました(ちょっと自信作です)
      • いわゆるチートシートというものです
        • 但し,授業で扱っていない内容は省いています
    • 最終的に試験当日に配布する持込用紙はこちらで用意します
      • 初見で戸惑うといけないので,イメージをつかんでいただくために掲載しました.
      • 前日までに,何回か,修正変更があるかもしれませんので,適宜ご確認ください

    第01回

    学力確認試験

    持込用紙

    配布版(Ver.0.80)

    2018-11-21e

    20181121e-handout

  • 持込用紙 配布版 (pdf) 2018-11-26 改訂
    • 「import文の使い方」として,授業で取り上げていなかったfromやasの使い方が含まれていました.
      • もちろん,単純にモジュールをインポートするimport文は授業で取り上げていますので,含めておきます.
        • たとえば,乱数モジュールを使う前には,import randomと書きますね.これは範囲内です.

    • これらを削除した版を,最終版としたいと思います.
      • 他にも,少々タイプミスや,小項目のタイトルで(本質的ではない)不備があったりしましたので,気づいたところは修正します
      • 最終版は,試験当日の午前中に掲載しますが,印刷して持ってくる必要はありません
        • こちらで印刷して(白黒両面です),配布します.

    第01回

    学力確認試験

    持込用紙

    最終版
    (Ver.0.90)

    2018-11-28f

    20181128f-handout-color

    カラー

    20181128f-handout-mono

    モノクロ

*


メッセージ

[ 編集 ]

教室

  • 2018年度も,週一回(水5) 12-204で実施します.
    • 矢上キャンパスです.
      • 日吉キャンパスよりも,教室の収容人数が多く,実習環境にも自由が利くので,
        • こちらで実施しています
      • 日吉キャンパスからの移動には,少々時間がかかりますので,
        • 授業開始の10分間程度は,前回授業の課題の提出(まだ提出していない場合)と質問対応などに充てています.

前提科目

使用するプログラミング言語

  • 使用するプログラミング言語は,2017年度までJavaを使ってきましたが,2018年度以降はPythonを使用します
    • 2年生の授業では,将来,学科内のいろいろな分野へ進みますので,どういう分野を選択しても,共通に使える機会が多く,敷居の低いプログラミング言語として採用しました.
      • 前提科目である,春学期の「プログラミング言語」も,併せて,RubyからPythonに変更しました.
        • 前提科目では,はじめてプログラミングをする人もいるという前提のもと,進めていただいていますが,この授業は,一応,この前提科目を踏まえて進めます
          • とはいっても十分に,むしろ,しつこいくらいに,復習を繰り返し含めますが
    • プログラミング言語としては,Javaの方がかなりしっかりしていて,ある程度以上の規模のソフトウェア開発にはJavaをお勧めします.
      • Pythonにもオブジェクト指向の機能はあるとはいえ,かなり不完全です.
      • モジュール構造,スコーピングルールも,結構,雑なつくりになっています
      • コンパイラによる静的チェックを前提としていないので,実行時にエラーが発生しないように保証するためには,テストが不可欠です.
    • しかし,Pythonは,とっつきやすい面があり,手軽に入門できます
      • 言語仕様としては十分に練れておらず,未だに,過渡状態にあることは否めません
        • どの言語も,常に進化していっているのですが...
        • 今後もまだまだ互換性のない拡張や変更がありそうに思えます.
        • でも,特にメタプログラミングなどでは,なかなか興味深いことができます
    • C/C++言語(やFortran)プログラムとの連携がしやすい(いわゆるCPython)
      • そのため,それらで書かれた高速なライブラリを手軽に呼び出す小さめのプログラミングに優位性が発揮されます.
        • 今,Pythonがよくつかわれているのは,この理由によるところが大きいと考えています.
    • スクリプト(バッチファイル)代わりにも気軽に使えます
      • 実際,私も,スクリプト(バッチファイルやbashスクリプト)代わりに,ファイル操作や,コマンドの制御などに,よく使っています.
        • bash等のコマンドシェルや,バッチファイルの機能はかなり中途半端なため,結構,苦労してきましたが,そこをPythonに置き換えるとかなり書きやすくなります.

[ 編集 ]

*


スケジュール

[ 編集 ]


スケジュール設計の考え方

[ 編集 ]

  • 最初のうちは,春学期(前提科目)の復習も含めますが,よくわかっている人が飽きないように新しい話題も少しずつ導入します
    • 春学期の復習では,同じことを繰り返すのではなく,春学期に少しずつ導入された概念の体系的/総合的な理解をできるだけ目指します
      • 最初に勉強するときには,少しずつ導入する方がいいですよね
      • でも一通り,学んだあと,全体的に眺めなおしてみることは,理解を深めるうえで悪くありません.
      • まだまだ,本当に体系的な理解を得ることは難しいでしょう.今回は一周目の復習です.今後も,二周目,三周目で全体を眺めると理解が深まっていきます.
    • 応用的な内容では,ゲームのように興味を引きそうな話題と,アルゴリズム(とデータ構造)の設計につながるようなものを考えています.
      • アルゴリズム(とデータ構造)は,ソフトウェアのベストプラクティス(成功事例)です.授業の中でもお話ししたように,プログラミングスキル向上のためのコツが詰まっています.
  • 授業では,皆さんを「置いてけ堀」にして,スケジュールをこなしても意味がありません.
    • 確実に理解していただくよう,皆さんの理解具合を確認しながら,進行スピードを調整したり,復習や例題を追加したりします.
    • そこで,どうしても,必要に応じて,予定がずれ込むことがあります.
    • 適当に「復習」の時間を設けて,理解を確実にするとともに,進捗状況に応じて課題の軽重を替える(基本課題の一部を拡張課題にしたり,チャレンジ課題とする)ことにより,遅れがあったら,そこで吸収します.
*


各回のページ

[ 編集 ]

*

*


成績評価


評価

基本的な考え方

[ 編集 ]

  • 成績評価
    • 学期末の期末試験と,授業中に2回~3回程度実施する,学力確認試験を重視します.
      • 学力確認試験の目的は,学期途中で,自分がちゃんと理解できているのか,応用力は備わったのかを,確認していただくことも大きいです
        • 学期末になって,理解できていない・応用力がついていないということに気づいても,ちょっとリカバリーが大変ですしね.
    • 日常的な課題の提出と,その提出内容も,考慮に入れます
      • 「課題を提出する」こと自体が目的になってしまってもいけません
        • あくまで,課題をとおして実力(理解と応用力)を養成することが目的です
          • 「課題を提出する」こと自体が目的ではないので,課題をすべて提出しても,試験の成績が悪ければ,評価は低くなります
        • が,「課題を提出しなくてもよい」と思うと,ついついサボってしまって,結果的に実力が身につかず,単位を落とす人もいるようです
          • 単位を取得したければ,課題は提出することをお勧めします.
          • おそらく,皆さんの中には,すでにかなりの実力を身に着けている人もいます.
            • 実際にいました.
          • 一方で,自己判断では,十分な実力を持っていると思っていても,結構偏っている人もいます.
          • 周りを眺めて「まだ下がいる」と思っているうちに,いつの間にか,きっちり課題をこなしている人に逆転されているということも,決して少なくないようです.
        • それに実力のある人にとっては,この授業の課題の提出は,決して苦にならないはずです
          • 大して時間もかからず負担にならないのなら,そのコストを惜しむ理由はありません.
          • 課題提出が負担になるという人の場合は,実力不足ともいえるでしょうから,むしろ課題を提出することをお勧めします

蛇足ですが..

出席について

[ 編集 ]

  • 人によっては,もう十分わかっているから授業に出ないという人もいるかもしれません.
    • もちろん,強制はできないので,自分で判断してください(他の授業や必修の授業に関しては,また別の話ですよ).
      • 但し,上記のように,スケジュールは,皆さんの習熟度やよりよく理解していただくために適宜再編します.
      • せっかく,履修申告したのに,単位を取得できないというリスクは自分で負ってください.
        • そもそも出席を強制することは不可能ですし,それはそれで問題かもしれません.
      • 授業を途中で抜けて帰宅するのも,自分でリスクを負うということであれば,自由です.
        • というより,そもそも出席を強制することは不可能ですし,それはそれで問題かもしれません.
        • なので,自分で判断して授業をエスケープするのはご自由ですが,下手に他の人を誘わないでくださいね.
          • 自分で判断しないで,誘われてしまう人もどうかと思いますが,人間は誘惑に弱いですしねぇ...
          • 他人を誘わずに,「一人でエスケープできない」というのは,「格好悪い」と思います(個人的意見にすぎませんが)
          • 逆に,「エスケープしようよ」って誘われたとしても,自分は,この授業を受けた方がよいと判断したら,相手が誰であろうと,スパッと断わると「格好良い」ですよね.やっぱり,誘惑に流されたり,周りに流されるよりも自分の判断で行動しているっていうのは,格好よくみえます(これも個人的意見ですが)

課題について

[ 編集 ]

  • 課題をきちん提出したからといって,試験の成績が悪ければ,単位が取得できるとは限りません.
    • 当然ですが,課題が提出されているかどうかに重きをおいているのではなく,それを通して,問題解決とプログラミングのスキルを身に着けることができたかどうかが評価基準です.
      • 授業に毎回出席したとしても,課題を全部提出しても,実力がつかなければ,単位履修のための基準を満たしたということにはなるはずがありません.
    • 課題を提出しなくても,数回実施する試験の成績が良く,実力があることを証明できれば,単位が取得できる可能性はあります
      • ですが,課題の提出状況や内容は,成績に全く考慮しないわけではありませんし,試験の成績が悪かった時に頼りになるのは,これくらいです.
      • なので,ぜひ授業に出席し,課題をこなして,実力を養成することをお勧めします.
    • 授業の単位に限りませんが,先輩から,「勉強しなくても単位が取れたよ」とか「君なら大丈夫」って言われても信用しないでくださいね
      • 先輩からすれば他人事ですから,結構,いい加減なことも言いますからね.
        • その先輩も,実は,結構,自分に実力があったからうまくいったのに,それに気づいていないことだってあるでしょう.
      • 基準も毎年同じとは限りません.
        • 人づてに聞いた過去の基準に「過剰に適応」してしまうと,環境変化に適応できずに絶滅してしまった動物種と同じ道をたどるかもしれません.
        • たとえば,試験が悪くても,補助レポートを提出すれば「単位が取れた」という事実が過去にあったとしても,今年,そもそもそのような補助レポートが出題されるとは限りません.
        • 授業の内容も,年度によって,大きく改善することはありますし,付随して,いろいろなやり方が毎年同じとは限りません.

不正行為について

[ 編集 ]

  • 不正行為は絶対にダメですよ.
    • 仮に,どれかの授業で,あるいは,過去の授業で,「うまくいってしまった」としても,今回も「うまくいく」とは限りません
      • (もちろん,「『うまくいく』ならよい」...という話ではありません)
      • 不正行為検出の技術は,どんどん進んでいます
      • 同時に厳罰化もどんどん進んでいます
        • (厳罰化しないとなくならないというのもその傾向の一因ですが)
    • 不正行為を安易に考えているケースは別として...
      • ついつい不正行為の誘惑に負けてしまうのは,それなりに「切羽詰まっている」ケースだと思います
        • たとえば,単位が取れないと留年してしまうという状況では,誘惑に負けてしまいそうになるかもしれませんが,でも,それは理由になりません.
      • 「こりゃだめだぁ」とあきらめてしまうケースの原因はいくつかパターンがあるようです
        • 「ちょっとまずい(いわゆる「ヤバイ」ということでしょうか)」と感じたら,まず相談して下さい.
        • 授業の最初の方を「わかっているから」と安易にエスケープした結果であることも結構ありそうです.
        • 危機感は持っていても,ついついそのままにしてしまうこともあるようです.
          • 繰り返しになりますが,「課題を提出すること」が目的にすり替わってしまっては問題で,重要なのは「課題を自力で溶けるような実力を養成すること」が目的です.
          • 「なんだか,内容についていけなくなってきた」とは感じているけど,「課題さえ提出しておけば大丈夫にちがいない」(これまでもそうだったし)と思ってしまうと,後になって困ることも起こりがちです
        • 授業によっては,前半が理解できなくても,途中で,気を取り直して後半だけでも理解できるというタイプのものもあるでしょう
          • ある程度,共通の基礎があって,応用的な側面の強い内容の科目だと,そういうタイプになりやすいかもしれません.
          • ですが,プログラミングですと,基礎からの積み上げが未だ必要だったりします.
            • 最初の方の内容で,つまづきそうだったら,早めに相談してくださいね.

質問と補習について

[ 編集 ]

  • 「授業」は一方的なものではなく,質問もいくらでも受け付けます
    • 受け身になるのではなく,主体的に,質問してください.
      • 今は,とても多くの,入門書があります
        • それらの多くは,自習書/独習書なので,授業の補助資料とは異なり,基本的に完結した内容になっています
          • 授業の補助資料は,あくまで授業の補助ですから,それを読んだだけで,完全に理解できるという種類のものではありません.授業があって初めて完結します
      • 単に,教科書を読み上げて,それを受け身で聞くというだけの座学でしたら,今なら,YouTubeなどでもたくさんあります

        • 英語でのものなら,英語の勉強もできて,お得です.
      • 授業のメリットは,質問できることです.
        • 海外の大学の授業では,教科書は宿題として事前に読んでおいていただいて,授業中は議論や質疑応答だけで構成するという話も聞いたことがありますよね.大人数の授業では授業運営が難しいですが...
      • 難読症(ディスレクシア)といった障害のある場合には,ご相談ください.

    • 質問内容は,その時の授業内容に直接関係なくてもかまいません
      • その場合,(その場で解答する時間はなくても)別途時間を設けることもできます.
      • すぐに回答できないものであれば,持ち帰って,検討したうえで,回答します.
      • 要望があれば,適宜,可能な範囲で補習も受け付けます.
        • 過去にも何回か実施しています.
          • 授業前の時間に,いつもの教室で実施することが多いですが,中には,冬休み期間に入って早々に,14棟地下のITCのワークステーション室を借りて実施したこともあります
        • 授業前の時間帯や,予約してくれれば他の時間帯でも可能なことがあります
        • 補習の進め方は,特定のテーマの講義形式でも,質疑応答主体(個別指導塾みたいなもの)でもかまいません.
          • 希望者が数名でも集まってくれれば助かりますし,特定のテーマで追加で補習授業をしてもかまいません
          • 個別に,質問を受け付けるという形式でも構いません
            • 最近はやりの,個別指導塾みたいなものでしょうか.
            • 人にも依るのですが,一斉講義を受けるのは(聞き逃しがちで)苦手だけど,質問して回答をもらうという個別指導形式だとどんどん理解が進むタイプの人もいるようです(さすがに100人に1名ずつ対応することはできませんが,数名なら対応できるかもしれません)
*


プロジェクト


Q&A


*

SoftEng: 2018 (最終更新日時 2018-09-26 08:07:46 更新者 TadashiIijima)