現代社会においては様々な場面でコンピュータを使用することが求められる。 多くの人はコンピュータがどのように動いているのかについて意識することなく利用しているが、真の意味でコンピュータを利用するためにはそのしくみを理解しなければならない。 人それぞれのやりたいこと(創造力)の実現のためにコンピュータの力を利用できるようになれば、結果をとてつもなく大きなものにすることができる。
コンピュータを動かしているのはハードウェアとソフトウェアである。 ハードウェアとは目に見え、触ることができる、物質としての実体があるものを指す。 一方ソフトウェアは「人間の思考」を表したもので、物質としての実体はないことが多い(印刷したものやコンピュータのデータとして存在している)。 プログラミングとはソフトウェアをつくる技術を指す言葉で、人間の思考をコンピュータが理解できる指示書(プログラム)に変換することを意味する。
人間には人間らしい考え方があり、様々な自然言語にはそれぞれが得意とする表現がある。 例えば日本語は擬音語や擬態語が豊富で、自然の描写にはとても向いていると言われる。 同じことがコンピュータにも言える。 コンピュータは私たちの脳とは異なる方法で作られたものなので、それにふさわしい考え方(計算方法)が存在する。 人間の考えをコンピュータにわかるように変換することができれば、コンピュータの強力な計算力を得ることができるようになる。
この講義ではコンピュータがどのようなしくみで動いているのかを考えながら、プログラミングの技術を学ぶことを目的とする。 最後には文字の操作や複雑な計算を行うことができるようになることを目指す。
この講義はオンデマンド(自由な時間に自由な場所で受講できる)形式で行われます。 提示された解説を読み、動画を参考にして、プログラムの作成や課題に取り組んでください。
講義内容や課題に対する質問は電子メールで受け付けます。
成績は課題の完成度で評価します。 期限に遅れたものは半分の点数で評価します。
前半の講義は主にオンライン教材を利用します。 教材のコースをクリアし、指示された画面のスクリーンショットを提出してください。
後半の講義は自由なプログラムを作成するために必要なことを学びながら、各自でプログラムを作成します。 提出されたプログラムの動作をもとに採点します。
プログラミングの学習はペアで行うと効率が上がると言われているので、本講義では2から3名の組をつくって議論しながら課題を作成することを勧めます。 またCoursePowerに設置してある掲示板を使った受講者間での教えあいも推奨します。 ただし課題の作成と提出は各自行うこと。同じものが提出された場合、不正行為(すなわち春学期のすべての履修科目が不合格)となる可能性があることに注意すること。
Microsoft Windowsが動作するコンピュータを前提に講義を行います。 他のOSでも受講できますが、スクリーンショットの作成方法などは各自で解決してください。
https://algo.jeita.or.jp/を開き、アルゴロジック1(ジュニアとチャレンジ)と2を行う。
アルゴロジックの問題のいくつかはパズル的な要素が強く、プログラミングを学ぶ上でよくないものもあるので、全ての問題をThat's greateでクリアする必要はない。
プログラミングに重要な要素は三つあります。 逐次実行、繰り返し、条件分岐です。
逐次実行とは与えられたコマンド(命令)を一つずつ順番に行うということです。 コンピュータはそれぞれの命令の意味や意図を理解することなく、指定された順番で実行していきます。 そのためプログラミングでは命令の順番を正しく整える必要があります。 向きを変えるのは移動前なのか移動後なのかをよく考えないと、予期していない方向へ進んでいくことになります。
繰り返しがコンピュータを使う最大のメリットで、人間にはとてもまねできない速さで計算を繰り返すことができます。 プログラミングにおいては繰り返しの要素をみつけて、それを取り出すことが重要です。 上手な繰り返しの単位を見つけることができれば、簡潔でわかりやすいプログラムを書くことができます。 逆に繰り返しが見つからないプログラムはコンピュータにさせる意味が少なくなります。
条件分岐はアルゴロジック2で「IF」として出てきます。 繰り返しを条件で分岐して、複雑な問題に対応できるようにします。 条件をうまく見つけることがコンピュータに意図した計算をさせることになります。
アルゴロジック2の24個の問題のうち、18個以上に丸または二重丸をつける(以下の画像を参照)。 そのスクリーンショットを提出すること。