ICM – Computer Science Major – Course unit on Interoperability of Data and Semantics and M1 Cyber Physical and Social Systems – Course unit on System Modeling
Institut Henri Fayol - MINES Saint-Étienne
Objectives and deliverable
You will gain experience through this practical work, where you need to demonstrate your know-how based on screenshots, documents, and programs.
The deadline for this practical work is 2025-11-14
submit your work as LASTNAME.zip to https://ecampus.emse.fr/mod/assign/view.php?id=34360 (expiration date/time: 2025-11-15 01:00 )
|
The zip should contain one directory per section below. Each directory must contain screenshots, documents, or the sources of a program, that together demonstrate you acquired each know-how listed in the corresponding section.
| For this practical work it’s ok to use LLMs. Just make sure the output does what I ask ! |
Example: Sources of a program
If a Section 01 - xyz mentions:
Write a python script to…
Your deliverable MUST contain a folder (named for ex. 01) with the sources of a simple script to do what is asked, and a README.md` with explanations for how to reproduce (what to install, what command to execute)
| You SHOULD use any relevant existing libraries for addressing the problems, and you CAN use generative AI if appropriate. |
Not a word document. Not a pdf document. Not a screenshot. No temporary files such as libraries or .venv folders.
|
Example: Videos or screenshots
If a Section 01 - xyz mentions:
Show me you can …
Your deliverable MUST contain a folder (named for ex. 01) with a video or a sequence of screenshots that demonstrate you know how to do what is asked.
Not a word document. Not a pdf document. Compress your videos with ffmpeg (ask google or chatGPT)
|
Example: Documents
If a Section 01 - xyz mentions:
Write a document that …
Your deliverable MUST contain a folder (named for ex. 01) with the sources of the document (valid, with the right extension, etc).
| Not a word document. Not a pdf document. Not a screenshot. |
01 - NodOn EnOcean device payload
NodOn is a French manufacturer specializing in smart home and building automation devices, particularly wireless actuators and sensors based on protocols such as EnOcean, Zigbee, and Z-Wave.
The EnOcean Micro Smart Plug is a Micro Smart Plug that communicates using the EnOcean radio protocol, enabling wireless control of electrical devices without requiring additional wiring.
EnOcean devices have a standardized interface and payload format by the name of a EnOcean Equipment Profile (EEP), specified by the EnOcean Alliance.
Technical Specification EnOcean Equipment Profiles V 3.1 may be useful for this question, together with the official EnOcean Equipment Profiles to find the specification of the one you’re looking for.
Implement a program that simulates interaction with the device, by taking as input or outputing a payload given as a string of bytes 0x0102030405…. Any error shall be reported to the standard error. The program shall print the result to the standard output in JSON.
The device can switch ON/OFF only one electrical device. It can measure its consumption power/energy. It cannot dim the device. We only consider one channel: the input channel (from mains supply). Furthermore, we only need to support two commands:
-
CMD 0x1 - Actuator Set Output
-
CMD 0x7 - Actuator Measurement Response
For example:
$ python enocean.py decode 0x011F00 --format json
{"on": false}
$ python enocean.py set on
0x011F01
$ python enocean.py decode 0x077F0B74 --format json
{"value": 2932, "unit": "W"}
$ python enocean.py measure --unit W 2932
0x077F0B74
| I’ll grade based on the result of some tests. two encoding, two decoding, two sorts of errors |
| I tried to solve this exercise with different LLMs, don’t trust their output! Read, understand, compare the answer to the spec, adapt. Try other unit tests. |
02 - Open Data - CSV
Here are two CSV documents available on the French Open Data portal.
-
Demonstrate that you can properly load this dataset into Excel or OpenOffice Calc, ensuring that each value is placed in its own cell.
-
Compute the average of values in column
CONCfrom this documents (even if the result has no practical meaning, the goal is to show technical mastery of basic operations).
-
Demonstrate that you can properly load this dataset into Excel or OpenOffice Calc, ensuring again that each value is in its own cell.
-
Compute the sum of values in the last column in this documents.
03 - GeoNames
GeoNames is a freely available geographical database that provides names and attributes of places all over the world. Its public dumps contain tab-separated text files with information ranging from countries and administrative divisions down to cities, villages, and even natural features. These datasets are widely used for location-based applications.
-
Show me you know how to properly load the following document into Excel or OpenOffice Calc, with one value per cell: GeoName’s names for administrative subdivision. Columns: code, name, name ascii, geonameid
-
By combining the file of step 1 with file country information, write a program that outputs a CSV document with columns: ISO code, country name, population, number of admin1 regions, number of admin2 regions.
-
Write a program that gets for a given place in France given as argument, and using the GeoNames dump for France:
-
what is the closest farm (give the distance in kilometers)
-
what is the fipscode* display name and the second administrative division display name of the division where this place is located
-
what is the total population of the first administrative division where this place is (i.e., a state in the US, région in France)
-
what are the five closest cities, villages, etc., ordered by ascending distance from the location
-
|
04 - GitHub issues
Information about a GitHub project can be obtained from the GitHub JSON API at https://api.github.com/repos/{org}/{project}.
-
Show me you can validate your JSON documents online.
-
Show me you can prettify your JSON documents online.
-
Show me you use a text editor with syntax highlighting for JSON
-
Show me you can validate a JSON document in your text editor
-
Show me you can prettify (format) a JSON document in your text editor
Write a program that takes as input a string {org}/{project}, and outputs:
-
one big JSON document that concatenates all the issues (open and closed) in a single array.
-
Which issue was closed the fastest?
-
Which issue received the largest number of reactions?
-
Get the top 5 users by number of issues they created + number of issues they closed
-
For each possible type of reaction, get the top 5 users by number of this reaction they added on issues
|
I don’t want pull requests. I want open and closed issues. I want them all. GitHub enforces some API rate limits. Create a personal token and include it in the header of your API calls. |