====== Introduction ====== The art of efficient and compact-code assembler programming is considered to be a crucial skill in the context of many EU initiatives that are targeting to bring back to Europe processor design and manufacturing, as on the low-level it requires engineers aware of low-level programming methods, to correctly design processor architecture and development tools such as e.g. compilers.\\ Assembler programming is also the one giving the best control over hardware. Assembler programming brings the capability to include only essential code and thus generate compact software that is fast, limits resource use, and is energy efficient.\\ The document offers a curriculum for studies (see figure below) in the niche of unique skills in low-level programming and computer architectures, which are still urgently needed.\\ Currently, available digital devices have been classified as contained ones (such as embedded systems, IoT end nodes, smart sensors, etc.), mobiles (including recent notebooks, e.g. Apple and Microsoft, tablets, mobile phones, network equipment and fog class IoT devices) and PCs (all x86-based equipment, including notebooks, desktops and servers).\\ This split reflects the composition of the curriculum. One common module about computer architectures is for those who do not know the hardware concepts behind the construction of digital devices. Familiarising themselves with those concepts is necessary to understand low-level programming techniques. Further modules are designed to familiarise users with class-specific assembler programming using selected technology. Each module has a separate syllabus and is composed of topics intended to be studied in the order in which they are presented. Some of those topics can also be used independently to let experienced users catch up with a particular piece of knowledge (topic). An expected number of ECTS points for each module is presented below (figure {{ref>multiasmcurriculummodules}}): * Computers Architecture (ECTS: 2), * Programming in Assembler for IoT and Embedded Systems (ECTS: 4), * Programming in Assembler for Mobiles and ARM (ECTS: 4), * Programming in Assembler for PCs (ECTS: 4).
{{ :en:multiasm:curriculum:multiasm_curriculum_modules.drawio.png?600 |}} MultiASM Modules
The following section delineates the architecture of the curriculum module in detail. * Study level - provides the study level to which the module is designed for * ECTS credits - how many points can be obtained for completing the module * Study form - explains where the module can take place: class, online, or hybrid * Module aims - gives the overall goal(s) or purpose(s) of the module * Pre-requirements - outlines pre-requirements for the current module, which the student must meet * Learning outcomes - lists what students are expected to know, understand, and be able to do after completing the module * Topics - listed subjects taught in the module. They are based on the books that were made for the MultiASM project * Type of assessment - a general description of how assessment is carried out in the module * Blended learning - the module's overall framework and student tasks are described * References to literature - list of books, online books, articles, etc are given, which helps to improve knowledge in the module * Lab equipment - list of equipment, software, etc., used in the module to do laboratory work(s) locally * Virtual lab - link(s) to a virtual lab(s), which is/are used in the module to do laboratory work(s) remotely * MOOC course - provides a link to a massive open online course made for the MultiASM. Students from all over the world can attend it, and they are also the basics for blended and inverted learning models.