2025年度後期プログラミング基礎演習

曜日・時限 金曜日3時限 期別 後期 週時間数 2
ナンバリング GF110603
開講学科等 情報通信工学部-通信工学科
教員名 村上 恭通
村上 恭通
職務履歴

https://research.osakac.ac.jp/index.php?%e6%9d%91%e4%b8%8a%e3%80%80%e6%81%ad%e9%80%9a

教員情報データベースに遷移します

目的

パソコン・タブレット・スマホ・ゲーム機のソフト(アプリ)はプログラムで動作しています。ブラウザ上で動くプログラムもあります。家電や自動車からロケットまでプログラムで制御されています。また、音楽・映像・芸術分野での創作にもプログラムが必要です。このように、現代の生活はプログラムに支えられていて、何かを創造するにはプログラミング技術の習得は避けられません。
Scratchは、初心者でも簡単にプログラミングを学べるように、MITメディアラボが開発したプログラミング学習環境です。Scratchでは、命令や構文を覚える必要がなく、マウスで部品を組み合わせるだけで簡単にプログラミングができます。しかし侮ることなかれ、構造化プログラミングからオブジェクト指向プログラミングまで、プログラミングに必要な基本的な考え方のほとんどを学習することが可能です。また、Scratchでは,初心者がつまずきがちなコンパイルエラーに煩わされませんので、プログラミングの考え方(アルゴリズムという)を学ぶことに集中することができます。
Pythonは、短いコードで簡単にかけるため初心者がプログラムを学ぶのに適しており、コードが読みやすいのでアルゴリズム表記にもよく使われている人気の言語です。また、最近話題の「機械学習(AI)」、「Web開発」、「教育分野」で広く使われています。
本講座では、プログラミング経験のない1年生を対象に、Scratchで楽しみながら基本的なアルゴリズムを主に学び、そのアルゴリズムをPythonではどう書くかをあわせて少し学ぶことで、次年度以降に本格的なプログラミングを学ぶための基礎作りを行います。
Scratchを使用していますが、プログラミングの基本のすべてを凝縮しています。選択処理(条件分岐)・反復処理(ループ)を自由に使えるようになること、ソートアルゴリズムを理解することが目標です。
なお、プログラミングは「習うより慣れろ」です。事前に課題を自分の力で考えること(反転学習)、多くの似たような課題を繰り返し学ぶこと(反復学習)により、基本的なアルゴリズムをマスターすることが目的です。

授業計画

授業回 形式 学修内容 学修課題
1 面接授業:A,C ガイダンス:プログラミングとは?
ScratchとPythonの紹介・アカウントの作成・使い方の学習
Scratch:マウスで(GUI)Web上でプログラミングできる言語と環境
Python:エディタで(CUI)プログラミングする言語と環境
Scratchで楽しくプログラミング:簡単なゲームを作ってみよう。関数を使ったり、数学の公式で計算しよう。
事前学修 本科目のシラバスをよく読んでくること。
ScratchとPythonについて調べてみよう。
(1時間)
事後学修 各自のPCにプログラミング環境を構築しよう。
Scratchのブロックに何があるかを見ておこう。
数学関数と四則演算を組み合せていろんな計算に応用しよう。入出力の仕方をマスターしておく。
(1時間)
2 面接授業:A,C 構造化プログラミングとアルゴリズム入門:
・構造化プログラミング
①連続処理②選択処理③反復処理
それぞれについて、Scratchで基本的なプログラムを書いてみよう。
・アルゴリズム入門:値の交換・条件分岐・回数ループ
①ミルクとトマトジュースを入れ替えるには?
②二つの数の小さい方を見つけるには?
③数を数えるには?
他にもいろいろチャレンジしよう。
事前学修 アカウント情報(IDとパスワード)を確認し、Scratchにログインできるようにしておく。
入出力を復習しておく。二つの変数の中身を入れ替えるにはどうすればいいか考えておく。
前回に出題された課題のプログラムを作成する.
(3時間)
事後学修 Scratchによる入出力・値の入れ替え方・選択処理・反復処理を復習する。
自宅でもプログラミングして授業内容を確認。
動かなかった人→復習。動いた人→自由に応用。
(2時間)
3 面接授業:A,C 制御構造の表現とアルゴリズムの初歩
・制御構造の表現:フローチャート・PAD
①連続処理②選択処理③反復処理
それぞれについて、フローチャートやPADを通して制御構造を理解しよう。
・アルゴリズムの初歩
前回の基本的なプログラムを少し応用して初歩のアルゴリズムを学ぼう。
①三つの数の最小値を求めるアルゴリズムは?
②コラッツ数列を次々出力するには?
③移動平均を求めるには?
他にもいろいろチャレンジしよう。
事前学修 Scratchのブロックに何があるかを予習しておく。
前回に出題された課題のプログラムを作成する.
(3時間)
事後学修 自宅でもプログラミングして授業内容を確認。
動かなかった人→復習。動いた人→自由に応用。
(2時間)
4 面接授業:A,C 選択処理の基本と反復処理入門
選択処理の基本3パターン:
①あるときは実行(if?型構文):雨が降ったら傘を差す
②いずれかを実行(if?else?型構文):合格それとも不合格?
③どれかを実行(if?elif?else型構文):成績はA,B,CそれともD?
反復処理入門:繰り返しを使って、いろんな数列を出力しよう。
事前学修 選択処理について予習しておく。
前回に出題された課題のプログラムを作成する.
(3時間)
事後学修 Scratchによる条件分岐の使い方を確認しておく。
自宅でもプログラミングして授業内容を確認。
動かなかった人→復習。動いた人→自由に応用。
(2時間)
5 面接授業:A,C 選択処理のネストと反復処理の基本
反復処理の基本3パターン:
①無限ループ(while true型):ずっと?する
②回数ループ(for型):?回繰り返す
③条件ループ(until型):?まで繰り返す
選択処理のネスト:条件分岐をネストして成績を判定しよう。
選択と反復:偶数なら半分,奇数なら3倍して1を足す。無限に繰り返すと…?
事前学修 選択処理(if文)を応用できるように使い方を復習しておく。
Scratchにある3種類のループ(無限ループ・回数ループ;条件ループ)について調べておく。
前回に出題された課題のプログラムを作成する.
(3時間)
事後学修 Scratchによる条件分岐のネストの使い方を確認しておく。
自宅でもプログラミングして授業内容を確認。
動かなかった人→復習。動いた人→自由に応用。
(2時間)
6 面接授業:A,C 選択処理の応用と反復処理のネスト(多重ループ)
多重ループで二進数の繰り上がりを学ぶ。
回数ループで数列の和でπやeを計算しよう。
条件ループで数を数えよう。
虫食い算や覆面算を解いてコンピュータの威力を実感しよう。
事前学修 Scratchにある3種類のループ(無限ループ・回数ループ;条件ループ)について調べておく。
ループのネスト(多重ループ)について調べる。
前回に出題された課題のプログラムを作成する.
(3時間)
事後学修 Scratchで作成した多重ループの動作を理解する。
課題を復習して同じ処理を繰り返すことの便利さを理解する。
自宅でもプログラミングして授業内容を確認。
動かなかった人→復習。動いた人→自由に応用。
(2時間)
7 面接授業:A,C 前半まとめ:選択処理と反復処理の応用課題の演習
分岐処理(条件判断)と反復処理(繰り返し)を利用した課題プログラムを作成する。
事前学修 Scratchの選択処理・反復処理について復習しておく。
前回に出題された課題のプログラムを作成する.
(3時間)
事後学修 いろいろな課題を通して、選択処理と反復処理の使い方をマスターする。
自宅でもプログラミングして授業内容を確認。
動かなかった人→復習。動いた人→自由に応用。
(2時間)
8 面接授業:A,C アルゴリズムと計算量:
・アルゴリズムによって精度や計算時間が変わることを学ぶ。
アルゴリズムの元祖「ユークリッドの互除法」で最大公約数を求める。
乱数:数当てゲームと二分法,πの計算(モンテカルロ法)
・リファクタリング:よりよいプログラムにするにはどうすればいいか?
事前学修 ユークリッドの互除法について調べておく。
前回に出題された課題のプログラムを作成する.
(3時間)
事後学修 条件が成立するまで(until)繰り返すパターンを理解する。
二分法やモンテカルロ法について復習する。
できなかった課題は時間をかけて自宅で取り組む。
(2時間)
9 面接授業:A,C リストとデータ構造:
・リスト:データをまとめて扱うリストの基本的な使い方を学ぼう。
・データ構造:リストを使ってデータ構造(①キュー②スタック③リングバッファ)を学ぼう。
①キューと②スタックで文字列を並べ替えたり、③リングバッファを回転寿しで学んだり、ハノイの塔で遊ぼう。
・リスト応用:ヨセフスの問題(死亡フラグ)・エラトステネスの篩(素数)・ソート(並べ替え)にチャレンジ。
事前学修 Scratchのリストについて調べる。
十進数から二進数への変換について調べる。
前回に出題された課題のプログラムを作成する。
(3時間)
事後学修 Scratchのリストの操作方法を予習する。
キュー・スタック・リングバッファというデータ構造について理解する。
自宅でもプログラミングして授業内容を確認。
動かなかった人→復習。動いた人→自由に応用。
できなかった課題は時間をかけて自宅で取り組む。
(2時間)
10 面接授業:A,C 各種ソートアルゴリズム
参加型イベント「人間ソート」を通じて、下記のソートの違いについて学ぶ。
①交換ソート
②選択ソート
③バブルソート
④コムソート
⑤クイックソート
事前学修 いろいろなソート法について調べておく。
値の入れ替え・ループのネスト・最小値、を復習しておく。
前回に出題された課題のプログラムを作成する。
(3時間)
事後学修 ソートの動作を理解して、アルゴリズムによる計算量の違いについて理解する。
自宅でもプログラミングして授業内容を確認。
動かなかった人→復習。動いた人→自由に応用。
できなかった課題は時間をかけて自宅で取り組む。
(2時間)
11 面接授業:A,C Python入門1:ScratchからPythonへ
今までScratchで学んだ基本的な制御構造をPythonではどのように書くかを学ぼう。
事前学修 Python 学習環境 Google Colaboratory について調べておく。
Python の基本構文について調べておく。
該当するScratchの過去の課題を復習しておく。
前回に出題された課題のプログラムを作成する.
(3時間)
事後学修 自宅でもプログラミングして授業内容を確認。
動かなかった人→復習。動いた人→自由に応用。
できなかった課題は時間をかけて自宅で取り組む。
(2時間)
12 面接授業:A,C Python入門2:Pythonで構造化プログラミング
今までScratchで学んだ各種のアルゴリズムをPythonで書くことを通じて、プログラムを多言語へ移植するノウハウを学ぼう。
事前学修 Python 学習環境 Google Colaboratory の使い方を復習しておく。
Python の基本構文について復習しておく。
該当するScratchの過去の課題を復習しておく。
前回に出題された課題のプログラムを作成する.
(3時間)
事後学修 自宅でもプログラミングして授業内容を確認。
動かなかった人→復習。動いた人→自由に応用。
できなかった課題は時間をかけて自宅で取り組む。
(2時間)
13 面接授業:C,E 総括
今まで学んだことを応用して課題プログラムを作成する。
事前学修 これまでに学習したプログラムを復習し、理解しておく。
前回に出題された課題のプログラムを作成する.
(2時間)
事後学修 本授業を通してできなかった課題は時間をかけて自宅で取り組む。
学んだことを活かして自由にプログラミングする。
(1時間)

授業形式記号

  • A:一斉授業(通常の講義)
  • B:問題発見・解決学習、プロジェクト学習
  • C:体験、実験、実習、演習など
  • D:調査 分析、解析など
  • E:ものづくり、作品制作
  • F:グループワーク(ディスカッション・ディベートを含む)
  • G:プレゼンテーション
  • H:地域・企業 連携型学習
  • I:その他

到達目標

プログラミング経験のない初心者を対象に、本格的なプログラミングを学ぶための基礎作りを目標としています。
具体的には、目的に応じてコンピュータを適切に活用するために、プログラミングに関する下記の各項目を学ぶことが目標です。

本科目に関連するディプロマ・ポリシー項目
〇 2024年度入学生   下記リンク先のカリキュラム・マップを参照.
URL: https://www.osakac.ac.jp/about/policy/faculty/
〇 2024年度以前の入学生
・修得する資質・能力: 知識・理解力、応用力 【DP-F-1-1】 
①プログラミングの基本的な概念を身につける.
②簡単なフローチャートが読み書きできる.
③基本的なアルゴリズムを理解できる.
④簡単なプログラムを自分で作成する能力を身につける.
・修得する資質・能力:汎用的技能 【DP-F-2-2】
課題に粘り強く取り組んで、学んだことを組み合わせて自らプログラムを作成することができる.
・修得する資質・能力:態度・志向性 【DP-F-3-3】
インターネットを活用して自主的に学習に取り組むことができる.
・修得する資質・能力:総合的な学習経験と創造的思考力 【DP-F-4-1】
授業内で得た知識を応用して、自分のオリジナル作品を作成することができる。

評価方法と評価観点

評価方法 配点合計知識・理解力応用力コミュニケーション力態度・志向性創造力 合計
定期試験またはレポート試験 0%
小テスト、小論文 40% 75% 25% 100%
グループワーク 0%
プレゼンテーション 0%
レポート、宿題 20% 50% 25% 25% 100%
授業での姿勢(ノート、質疑など) 20% 50% 50% 100%
作品、パフォーマンス(実技、実演) 20% 50% 25% 25% 100%
その他1(具体的に: 0%
その他2(具体的に: 0%
100% 60% 20% 0% 10% 10% 100%

教科書・参考書

教科書:資料はSlackで配布します。

オフィスアワー

火曜5限(A号館2F教員室)またはMeetによる遠隔.

学内外の用務のため、オフィスアワーでも教員が教員室に不在の可能性があります。
随時、Slackや電子メールでも質問や相談を受け付けますので、活用してください。
また、来られる前にあらかじめSlackや電子メールで質問の概要を送ってもらえると早い対応ができると思います。

その他

授業では資料配布・連絡・コミュニケーション・課題の出題にSlackを活用しますが、課題の提出にはMoodleを使用します。

反転学習を取り入れますので、授業までに課題を行ってもらい、授業で解答を解説するスタイルになります。
全体を通しては、このシラバスに準拠した内容で行いますが、プログラミングは基本的な命令を組み合わせて行いますので、明確に学習項目を分けることができません。
簡単なプログラムから始めて、中身を徐々に段階的に進化させていく、スパイラル型の繰り返し学習が特徴で、非常に多くの課題に取り組んでもらう必要があります。
そのため、学習者の理解度に応じて内容を変更することや学修内容の順序を入れ替えて配置することがあります。
欠席回数が4回以上の者、授業中に課した課題を4回以上未提出の者は不合格となります。

課題は次週に解答と詳細な解説を行います。また、実際に提出した課題を題材によくある間違いやより良いプログラムになるように添削指導します。課題や解答例はSlackで公開します。

アドバイス:
①「習うより慣れろ」:自分で何度も練習する以外に上達の道はありません。予習でわからないことを明確にし、解説を聞き、できるまで復習する、このプロセスが大事です。
②「好きこそものの上手なれ」:プログラミングを好きになってください。
自宅にもプログラミング環境を整えて、授業の内容にとらわれず、どんどんプログラムを楽しく自由に書いてみましょう。

実務経験のある教員による授業科目

メーカーでプログラム開発を行っていた実務経験を活かして、実際に間違いやすい箇所はどこか・プログラムをうまく組むためのコツは何か等、ワンポイントアドバイスを交えながら授業を行います。