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


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

(公開) 




お知らせ

[ edit ]


Pythonプログラミング基本編 (2018年度~)

[edit]

  • Pythonプログラミング基本編
    • 随時追加(必要に応じて,修正も)していきます.
    • 言語の解説ページ
    • 授業範囲のまとめ (試験の持込用紙)
      • 授業範囲のまとめ

      • 試験の持込用紙は,基本レベル(入門と初級の間)のプログラミングの折に,手元に置いておくと便利だと思います.
  • 授業の概要
    • ソフトウェア工学は,本来,ソフトウェアの作り方を扱うものです.
    • ですが,その前提となる基本的なプログラミングのスキルが十分ではないので,プログラミング基本編(入門と初級の間くらい)を実施します.
      • 計算機科学(人工知能/情報システム)関係の研究室だけでなく,管理工学科の全研究室で必要となる最低限のスキルレベル
      • 何とか,書籍に付録としている基本的なサンプルプログラムを理解して,カスタマイズすることができるレベル.
    • 取り扱う範囲 (基本プログラミングのためのスキルセットとして)


試験

[ edit ]


メッセージ

[ edit ]

教室

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

前提科目

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

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

[ edit ]

*


スケジュール

[ edit ]


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

[ edit ]

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


各回のページ

[ edit ]

  • 演習,実習

    概念

    提出課題

    第01回*

    2018-
    09-26
    (水)

    矢上ITC環境で
    Pythonを使ってみる

    ソフトウェア工学とは

    第02回*

    2018-
    10-03
    (水)

    Python復習(1)
    +関数定義

    【復習と整理】
     * データ型の体系的理解
     * データオブジェクトと式
     * 構造化構文(1)(分岐/反復)
    【新しい話題】
     * 関数定義

     * 基本課題(1)
    できたところ
    まで

    第03回*

    2018-
    10-10
    (水)

    Python復習(2)
    +列演算

    【復習と整理】
     *  文字列リスト(基本編)
    【新しい話題】
     * 列の共通的な演算

     * 基本課題(1)
    再帰関数
    まで

    第04回*

    2018-
    10-17
    (水)

    Python復習(3)
    +構造データ

    【復習と整理】
     * 構造化構文(2)
          (break文/continue文)
    【新しい話題】
     * タプル, 辞書, 集合
     * 文字列の書式化

     * 基本課題(2)

    第05回*

    2018-
    10-24
    (水)

    ファイル入出力
    (+例題にデータ
    を与えるため,
    前倒しします)

    【新しい話題】
     * ファイル入出力
     * 例外処理

     * 拡張課題(2)
     * 基本課題(3)

    第06回*

    2018-
    10-31
    (水)

    構造データ応用編(1)
    ※(+予定調整)

     * 表と行列

    第07回*

    2018-
    11-07
    (水)

    ここまでの復習

    (時間があれば)
    【新しい話題】
     * グラフ描画
     * GUI

    2018-
    11-14
    (水)

    補講日

    2018-
    11-21
    (水)

    三田祭

    第08回*

    2018-
    11-28
    (水)

    構造データ応用編(2)

    学力確認テスト
     * (時間があれば)
          ネットワーク構造
          (グラフ構造)

    第09回*

    2018-
    12-05
    (水)

    構造データ応用編(3)

     * 学力確認試験の答え合わせ
     * (時間があれば)
          木構造

    第10回*

    2018-
    12-12
    (水)

    フォローアップ

    第11回*

    2018-
    12-19
    (水)

    フォローアップ

    第12回*

    2018-
    12-26
    (水)

    学力確認試験

    第13回*

    2019-
    01-09
    (水)

    ここまでの復習

    フォローアップ

    第14回*

    2019-
    01-16
    (水)

    期末試験

    第15回*

    振り返り

    追試は2019-02-06

*

*


成績評価


評価

基本的な考え方

[ edit ]

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

蛇足ですが..

出席について

[ edit ]

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

課題について

[ edit ]

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

不正行為について

[ edit ]

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

質問と補習について

[ edit ]

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

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

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


プロジェクト


Q&A


*

SoftEng: 2018 (last edited 2018-09-26 08:07:46 by TadashiIijima)