ソフト系の次世代の組込み(?)システム教育を考える
久住憲嗣
芝浦⼯業⼤学

コメントやアンケートを実施しますので、アクセスしてください
https://commentscreen.com/comments?id=MeBsooSO6bugL1QFTHcZ

次世代の組込み(?)システム教育を考える 背景• 学んで欲しいコトが増加、変化• 議論• ⼤学⽣に学んで欲しい内容や⾝につけて欲しいスキル、態度• 教えるノウハウ2

事例
芝浦⼯業⼤学 システム理⼯学部
電⼦情報システム学科3

芝浦⼯業⼤学
システム理⼯学部電⼦情報システム学科の事例学修の手引p.43の要約
1. ソフトウェア分野：プログラミング言語、OS、データベース、人工知能基礎や言語理論、ソフトウェア設計・開発技術を学ぶ
2. メディア・ネットワーク分野：画像処理、信号解析、インターネット、無線通信、情報伝送など
基礎理論からユビキタス社会のインフラを支える技術を学ぶ
3. ハードウェア分野：電気磁気学、電気回路、電子回路、論理回路、半導体、LSI、電子デバイス、システム制御など現在のエレクトロニクス技術を学ぶ
4. 講義科目と連携した実験・演習科目を、 1 年次から 3年次まで切れ目なく設置することで、単なる知識の修得ではなく、専門知識を実践的に学修する
5. システム工学演習等で専門知識を基にしたシステム思考、システム手法、システムマネジメント、そしてコミュニケーションスキルを養成する
6. ４年次の総合研究：培った幅広い基礎的知識と深い専門知識を駆使し、各自が設定したテーマを解明し総合的解決策を導き出す能力を養う

4

芝浦⼯業⼤学
システム理⼯学部電⼦情報システム学科の事例
ソフトウェア関連を抜粋• アルゴリズム - データ構造とアルゴリズムI, II• 適切な実現⽅法でソフトウェアを実現したい• プログラミング• 実現したいことを書けるようになりたい• C⾔語 – 情報処理I, II, 情報処理演習I, II, プログラミング演習I• 情報実験I, 情報実験II• Java⾔語 – オブジェクト指向プログラミングI, II, プログラミング演習II• 情報実験I, 情報実験II• 設計 - ソフトウェア設計論• 創りたいもの（要求）を、良い品質で、コードに• プログラミングだけでは物作りは出来ない• ⽅法論が必要• 情報実験I, 情報実験II

充実したプログラミング関連講義

書かないと出来るようにならないのでぜひ積極的に受講を︕
5(その他実験科⽬も充実してます)（久住にとっての）課題• 何を教えるか• 伝統的な内容（2000年前後）• ⼿続き型 -> オブジェクト指向 -> オブジェクト指向分析、設計• どのように教えるか• 実課題ではない実験• ⼈数がとにかく多い• プログラミングで100⼈以上, 設計でも80⼈以上• ⼈⼿でのフィードバックはたいへん

6

何を教えるか7

specific (the task setting). Appendix D elaborates on these component tables in greater detail.

コンピューティング知識
Table 4.1 illustrates thirty-four abbreviated knowledge areas partitioned into an ordered sequence of six categories.
While the table is incomplete, it does provide an example of high-level vocabulary for computing knowledge rooted
in the collective wisdom of different computing communities. This summary of computing knowledge areas represents
ACM/IEEE-CS
Computing
Curricula(CC2020)a well-understood andconsistent vocabulary
from 2020
which computing
competency statements can evolve.

• 知識だけで無くコンピテンシ（スキルや態度）を重視
Table 4.1. Elements of Computing Knowledge
Users andOrganizations

Systems
Modeling

Social Issues andProfessional
Practice
Security Policy andManagement
IS Management andLeadershipEnterpriseArchitecture
Project Management
User Experience
DesignSecurity Issues
and Principles
Systems Analysis& Design
Requirements
Analysis andSpecifications
Data andInformation
Management

Systems
Architecture andInfrastructure
Virtual Systems andServices
Intelligent Systems (AI)Internet of Things
Parallel and Distributed
ComputingComputer Networks
Embedded Systems
Integrated Systems
Technology
Platform Technologies
Security Technology andImplementation

SoftwareDevelopment

SoftwareFundamentals

Software Quality,
Verification andValidation
Software Process
SoftwareModeling andAnalysis
Software Design
Platform-Based
Development

Graphics andVisualization
Operating Systems
Data Structures,
Algorithms andComplexity
Programming
Languages
Programming
Fundamentals
Computing Systems
Fundamentals

HardwareArchitecture andOrganization
Digital Design
Circuits andElectronics
Signal Processing

8うちの場合• 要求、設計、実装、テストが理解できる• プロセスの教育と実験での実践は（なんとなく）出来てる• システムモデリング系は導⼊したい• 新しい⾔語パラダイムにむけた設計の⽅法論を⼊れたい• 課題の途中で設計プロセスをモニタリングして介⼊したい• Javaや類似の⾔語で開発が出来る• ⾔語は現状維持で (できればKotlinとかにしてしまいたいが...)• プログラミング⾔語の新しい概念はあまりやれてない…
• 型推論、Lambda式、Streams、遅延評価• (形式⼿法のエッセンスをどこかで...)• 今時の開発で必要な基礎的なツールはやりかけているがまだまだ…
• git, コンテナ, CI

9どのように学ぶか教えるか10

ファンダメンタル、プロフェッショナル知識
Computing Curricula 2020
CC2020Computing Curricula Report2020 December 31

Table 4.2. Elements of Foundational and Professional Knowledge
Knowledge Elements
Analytical and Critical Thinking
Collaboration and Teamwork
Ethical and Intercultural Perspectives
Mathematics and Statistics
Multi-Task Prioritization and Management
Oral Communication and Presentation
Problem Solving and Trouble Shooting
Project and Task Organization and Planning
Quality Assurance / Control
Relationship Management
Research and Self-Starter/Learner
Time Management
Written Communication

Meaning
A mental process of simplifying complex information into basic parts andevaluating results to make proper decisions
Apportion challenging tasks into simpler ones and then work together tocomplete them efficiently
Ethical perspectives of the different viewpoints someone uses to view aproblem in the context of individual human values
Use of numbers and theories abstractly especially in the collection andanalysis of numerical data
Processing several issues or tasks at once while arranging them according toimportance to do specific one firstConveying a message orally using real-time presentations with visual aids
related audience interests and goals
A logical and orderly search for the source of a unit problem and making theunit operational again
A process to provide decisions about a project concerning organization andplanning to achieve a successful result
Use of techniques, methods, and processes to identify and prevent defects
according to defined quality standards
A strategy to maintain an ongoing level of engagement usually between abusiness and its customers or other businesses
Someone who begins or undertakes work or a project without needing
direction or encouragement to do so
An ability to use a person’s time in an effective or productive manner towork efficiently
Use of a written form of interaction between people and organizations thatprovides an effective way of messaging

11

Computing Curricula 2020 (CC2020), ACM/IEEE-CS, 2020.

うちの場合（他でも︖）
Computing Curricula 2020
CC2020Computing Curricula Report2020 December 31

Table 4.2. Elements of Foundational and Professional Knowledge
Knowledge Elements
Analytical and Critical Thinking
Collaboration and Teamwork
Ethical and Intercultural Perspectives
Mathematics and Statistics
Multi-Task Prioritization and Management
Oral Communication and Presentation
Problem Solving and Trouble Shooting
Project and Task Organization and Planning
Quality Assurance / Control
Relationship Management
Research and Self-Starter/Learner
Time Management
Written Communication

Meaning
A mental process of simplifying complex information into basic parts andevaluating results to make proper decisions
Apportion challenging tasks into simpler ones and then work together tocomplete them efficiently
Ethical perspectives of the different viewpoints someone uses to view aproblem in the context of individual human values
Use of numbers and theories abstractly especially in the collection andanalysis of numerical data
Processing several issues or tasks at once while arranging them according toimportance to do specific one first
Conveying a message orally using real-time presentations with visual aids
related audience interests and goals
A logical and orderly search for the source of a unit problem and making theunit operational again
A process to provide decisions about a project concerning organization andplanning to achieve a successful result
Use of techniques, methods, and processes to identify and prevent defects
according to defined quality standards
A strategy to maintain an ongoing level of engagement usually between abusiness and its customers or other businesses
Someone who begins or undertakes work or a project without needing
direction or encouragement to do so
An ability to use a person’s time in an effective or productive manner towork efficiently
Use of a written form of interaction between people and organizations thatprovides an effective way of messaging

やれてない領域︖

他も体系的には教育できていない印象
12

Computing Curricula 2020 (CC2020), ACM/IEEE-CS, 2020.

その他雑多な話

14

継続的インテグレーション(CI)による⾃動フィードバック• GitHubでテンプレートを提供• テンプレート中に⾃動テストを実⾏をあらかじめ記述• GitHub Classroomで演習管理• GitHub Actionsでビルドとテストケース⾃動実⾏ & フィードバック• テストケースのパス率を成績に算⼊• 全体の30％

15

フィードバック事例（全体）• テストケースのパス率に応じた解説• 演習1-7 : 平均 -> int / intに注意• 演習1-9 : 要求をちゃんと読む• 演習1-12 : これは難しいでしょうか…

16フィードバック事例（個別）• ビルドエラーなどはログを⾒て、個別にフィードバック• GitHubのissueでフィードバック• GitHub Actionsでログを収集する（簡単な）⽅法がないので⼿元でビルド• フィードバック⽀援ツールなどが欲しい…
ex5-07-12-2021-08-28-42/XXXXXX/src/main/java/Person.java:9: エラー: シンボルを見つけられません
public Person(String n, int a, double w, double h) throws IlligalRangeException {^シンボル:クラス IlligalRangeException
場所: クラス Person
エラー1個
FAILURE: Build failed with an exception.
ex5-07-12-2021-08-28-42/BBBBBB/src/main/java/Main.java:14: エラー: >がありません
if( longest.length() =< line.length() )
^…..

17

（個⼈の）感想• 受講⽣へのフィードバックとして有⽤• パス率が⾒えるので、出来ている出来ていないが⾃分で分かる• あまりにも出来ていない場合には、⾃分から質問ができる• 学⽣の状況の可視化• 全体の進捗が⾒えやすい• フィードバックがしやすい• 全体• 個別• （ダッシュボードがあるとなお良い）

18