Apprenticeships , Teaching and the "Border/Separation" between Computer Science and Electronics

This post is by way of, hopefully, generating interest and discussion. For some time now I have been thinking about technical courses that provide an alternative to going to University and that provide "commercial skills" and yet, also can lead to academic qualifications. Technology is changing so fast and in the embedded systems, industrial automation and telecommunications sectors there is, I feel, a growing need for those with both an electronics and electrical engineering background and strong programming skills.

This week I have been involved in a number of most interesting discussions concerning the kinds of courses to run as part of a strategy of developing "centres of excellence" in digital skills, and am posting a, "very rough" sketch of the kinds of course modules that might be relevant to the development of digital skills. Skills that will become ever more important in the further development of the UK economy, and similarly for other economies. Especially important, I feel, is the convergence of a number of key technologies, namely the Internet of Things (IoT), and , more particularly, the Industrial Internet of Things (IIoT), Cloud computing, Data analytics, Machine learning, Knowledge representation (Ontologies and the Semantic Web), Wireless communications, embedded and real time systems programming ...

The modules / sections mentioned are associated with courses and training we have already delivered at First Technology Transfer, or, are currently developing. One underlying thought is the provision of courses to not only apprentices, but, also teachers, lecturers and technical staff who will be involved in teaching these subjects, both at a practical and at a theoretical level.

Choice of language for teaching AI :

Python ... a good choice and much AI can be taught using Python. There are also powerful Python tools and frameworks for machine learning and data mining using Neural Networks.

Another good choice, I think, is Java .. and the combination of Java with a functional programming language such as Scala, or Clojure, that can co-exist with Java.

The following is a starting list of possible modules :

1. Classical AI - this overlaps considerably with data structure and algorithms

- data representation ... object oriented ...

- search techniques - depth first, breadth first, alpha-beta pruning

- reasoning strategies and systems - forward chaining and backward chaining

- handling uncertainty (basics) and the importance of fuziness

- basic natural language processing

2. Reasoning and Rule Based Programming

- Prolog programming an overview

- Rule based programming for business applications - using e.g. Jess or Drools (both Java based)

- An introductions to ontologies and the semantic web and the uses of semantic web reasoners.

3. Deep Machine Learning

- Classifiers and classification

- Basics of neural networks

- Basics of genetic algorithms

- Machine learning using neural networks

-- Backpropagation

-- Recurrent neural networks

-- Reinforcement learning

-- Hybrid techniques e.g. combining Neural Networks with Genetic algorithms,

- Bayesian approaches and PGM (Probabilistic Graph Modeling)

[ There is probably too much here ... so would need to break up into

smaller sections ...

Also ... would cover Pythonic approaches - e.g. Tensor flow and Theano ...

Computationally ... parallel programming aspects .. using e.g.

CUDA via C/C++ or Python ... and, in class, using moderately powerful graphics cards, and / or NVidia Jetson TX2 ... ]

Also worth including would be coverage of HPC (High Performance Computing) using the new generation of Intel Xeon-Phi processors.

4. Data warehousing, data mining and such

- Data warehousing and star schemas

- SQL vs. No SQL data bases

- Classical data mining using statistical data analysis techniques

- Data mining using machine learning techniques

- Graph databases .. e.g. Neo4J and AllegroGraph

5. Knowledge representation

... a huge area ... from basic AI approaches and then on to

the semantic web and ontologies and uses ... including

approaches to linking and organising data and also introducing

JSON-LD ..

... medical and genetic applications of the semantic web

... legal applications of the semantic web

... business applications of the semantic web

... XML vs JSON ... and such ...

6. Cloud computing

- Essential concepts

- Virtualisation and virtual machines

- OpenStack, Azure, AWS cloud computing frameworks

- DevOps and Docker

- Distributed databases - distributed SQL databases, distributed NoSQL databases

- Computing and data manipulation in the cloud - Map-Reduce, MongoDB, Hadoop ...

7. Internet of Things (IoT) and Industrial Internet of Things (IIoT) [ More than one course module here ... ]

- concepts and potential

- the hype cycle

- emerging and overlapping technologies

- smart sensors (practical section using e.g. Arduino, RaspberryPi and the BBC Microbit) ... there are plenty of other boards to choose from but, from the teaching perspective cheap off the shelf systems with a strong community are probably a very good initial starting point

- collecting, subscribing too and analysing sensor data

-- AWS IoT - a case study

- Wireless and AdHoc networking

- ARM mbed OS5

- Applying IoT approaches to industrial control and automation

- [ somewhere .. probably a separate module ... Ladder Logic programming, Codesys programming, SCADA and OPC, Profibus, CAN bus, EtherCAT, Ethernet Powerlink ... ]

- applications - transportation systems, logistics, smart cars, automated manufacturing and warehousing

8. Social, ethical, environmental and moral issues ... more than simply lip service ...

This is a complex topic ... and also includes things such as "green computing", human rights aspects, philosophical aspects... and also specialisations such as e.g. the effect and impact of living in "Smart Cities"

9. Blockchain

- Essential concepts

- Underlying cryptographic techniques and principles

- applications of blockchain algorithms

- blockchain and financial systems

10 . Robotics [again multiple modules here ... ]

Drones (as a major case study) ... and there are many interesting overlaps here with GIS (Geographic Information Systems), delivery systems, surveillance systems ...

... many interesting embedded systems programming aspects ...

... many overlaps with other areas of robotics e.g.

-- navigation and path planning

-- dealing with multiple data input streams

-- collective robots ... e.g. swarm robotics ...

-- exploring environments

... HMC (Heterogenous Multicore Processor) programming and application development (think e.g. of the Beagle Board X15 (with ARM Cortex M4, TI DSP and PRU processing units in addition to the main ARM processing cores, or iMX6 and iMX7 processors sporting an ARM Cortex M4 core in addition to the main ARM core ... )

Programming wise :

- real time operating systems

  • control systems

- distributed data processing

- digital signal processing

- AI algorithms - search, planning, prioritising strategies, learning on the job ...

- communicating with humans

Also would be need to cover simulation, mechatronics, safety critical systems analysis and development e.g. "hardware in the loop simulation" ...

11. Parallel programming and High Performance Computing

  • SIMD
  • OpenMP
  • MPI
  • CUDA






Very interesting. I would love to keep the material together by means of a business glossary of all involved terms. Doing the glossary with a tool for executable models and extend from domain test to methodology terms (course, lecture, skill, level) would allow to teach conceptual modeling along providing industry-driven technical skills.

回复

There is indeed a chasm between computer and electronics skills, and this is where the IoT resides.

回复

要查看或添加评论,请登录

社区洞察

其他会员也浏览了