Course syllabus for Machine oriented programming

Course syllabus adopted 2022-01-26 by Head of Programme (or corresponding).

Overview

  • Swedish nameMaskinorienterad programmering
  • CodeEDA482
  • Credits7.5 Credits
  • OwnerTKDAT
  • Education cycleFirst-cycle
  • Main field of studyComputer Science and Engineering, Software Engineering
  • DepartmentCOMPUTER SCIENCE AND ENGINEERING
  • GradingTH - Pass with distinction (5), Pass with credit (4), Pass (3), Fail

Course round 1

  • Teaching language Swedish
  • Application code 49127
  • Maximum participants192
  • Open for exchange studentsNo
  • Only students with the course round in the programme overview.

Credit distribution

0116 Laboratory 3 c
Grading: UG
3 c
0216 Examination 4.5 c
Grading: TH
4.5 c

In programmes

Examiner

Go to coursepage (Opens in new tab)

Eligibility

General entry requirements for bachelor's level (first cycle)
Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements above.

Specific entry requirements

The same as for the programme that owns the course.
Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements above.

Course specific prerequisites

Introductory courses in imperative programming and computer engineering.

Aim

This course is intended as an introduction to small embedded systems. It should give the student insight into how imperative constructs are translated to assembly code and also demonstrate the problems that arise when event driven systems with several data sources are to be programmed.

Learning outcomes (after completion of the course the student should be able to)

Knowledge and understanding:
  • describe the structure of a single-chip computer
  • describe the function and typical use of counter circuits, circuits for parallel and serial input and output
  • describe and give examples of exceptions and exception handling
  • describe how translation of C-programs to machine programs (compilation, assembly and linking) is performed in the used software development environment
  • describe and explain data types and storage classes in program language C and describe corresponding constructions in assembler language.
Competence and skills:
  • Utilize the program development environment used in the course for implementation and testing of program code in C and assembler language
  • write simple machine-oriented C programs using the data types and control structures of the program language
  • create and use data types and storage classes in the programming language C
  • specially used "pointers" for machine-oriented programming in C
  • create and use application libraries in the used application development environment
  • design and use composite data types especially for machine-oriented programming
  • translate expressions and control structures given in program language C to instruction sequences in assembler language.
Judgement and approach:
  • analyze functions written in the programming language C and translate them into assembler code
  • analyze simpler subroutines, written in assembler language, and describe them in program language C
  • construct software, in C and assembler languages, with different forms of input and output
  • design software, in C and assembler languages, for systems including different types of exceptions (internal exceptions, interruptions, restarts)
  • utilize software development mechanisms for code enhancement (optimization)
  • utilize the software development environment's mechanisms for generating efficient and resource-efficient machine code.

Content

Software development in C and assembly language, testing and troubleshooting. Structured assembler, basic code generation. First level system programming, ie how the computer is programmed to boot from power on, and handling of different types of exceptions such as internal errors, events and interrupts. Programming devices for parallel input and output, time management and programming of timers. Basics of computer communications and programming devices for serial communications. Moreover, a simple time-sharing systems (in C and assembly language) with special emphasis on the use of peripheral circuits, is implemented.

Organisation

Scheduled teaching comprises lectures, demonstrations, and supervised simulation and coding exercises; and also supervised mandatory laboratory.
During the course, the student designs progressively bigger and bigger building blocks of software in C and assembler. The theory is acquired through lectures and demonstrations. The student designs the blocks then carries out tests with the aid of simulators during simulation exercises. In preparation for laboratory exercises the student will finally adapt the software in order to enable hardware verification of the function.

Literature

See the course homepage.

Examination including compulsory elements

Examination is based on a written exam and approved laboratory exercises. Based on the exam result, the grade F, 3, 4, or 5 are given.

You can receive up to 5 bonus points if you complete the optional extra lab assignment. These bonus points are added to the result on the exam and can be used for higher grades but not to pass the course.

The course examiner may assess individual students in other ways than what is stated above if there are special reasons for doing so, for example if a student has a decision from Chalmers on educational support due to disability.