General courses
UTT9102 Academic Writing Workshop (3 ECTS credits)
Lecturer:
Jeffrey Andrew Tuhtan
Teaching semester:
spring
Elective course:
More info:
Brief description of the course:
The course is hands-on and based on the student's individual research work, it is a scientific writing for publication course. Over the course of the semester, students will work independently on their manuscript (first authorship is preferred, but not required). Every two weeks, an updated draft of their papers will be uploaded to Moodle, and written feedback will be provided.
The maximum number of course participants per faculty is 10 for engineering, natural sciences, information technology and business and governance PhD candidates. In such cases as the number of applicants exceeds 10 per faculty, the instructors will interview and/or test the applicants to maintain the course size of 10.
A draft manuscript is required for admission in this course, at minimum an extended abstract of three pages.
In sessions of 2-5, students will be separated into groups for peer-review, discussion and feedback, depending on their school / PhD programme.
The maximum number of course participants per faculty is 10 for engineering, natural sciences, information technology and business and governance PhD candidates. In such cases as the number of applicants exceeds 10 per faculty, the instructors will interview and/or test the applicants to maintain the course size of 10.
A draft manuscript is required for admission in this course, at minimum an extended abstract of three pages.
In sessions of 2-5, students will be separated into groups for peer-review, discussion and feedback, depending on their school / PhD programme.
IAS0051 Applied Data Communication (6 ECTS credits)
Lecturer:
Vitali Vansovitš
Teaching semester:
autumn
Elective course:
More info:
Brief description of the course:
Digital and analog communications. Standardization of data communications. Hierarchy levels of industrial communication networks. Criteria for selecting the suitable communications network. Peculiarities and requirements of industrial data communications. Communications protocol stacks (MAP/TOP). Interoperability and collaboration in industrial enterprises (MIS, MES). Electrical noise and interference. Serial interface standards (RS-232, RS-485). Error detection and correction. Asynchronous and synchronous transmission. Data encoding techniques. Transmission synchronization in bit, byte and frame level. Data transparency requirement. Bit- and byte-oriented data link control protocols. Flow control methods. Medium Access Control (MAC) methods. Ethernet. Peculiarities of industrial ethernet. Industrial networking standards. Inter-process communications (OPC).
IAX0010 Discrete Mathematics (6 ECTS credits)
Lecturers:
Harri Lensen
Margus Kruus
Margus Kruus
Teaching semester:
autumn - spring
Compulsory course:
Elective course:
More info:
Brief description of the course:
Boolean algebra and logic functions. Fundamentals of logic. Truth table. Laws of logic. Canonical standard forms. Disjunctive and conjunctive normal forms. Logic functions minimization. Shannon's expansions of logic function. The derivative of logic function. Complete system of logic functions. Fundamentals of set theory: sets, subsets, set operations, laws of set theory, Venn diagrams, simplification of expressions. Cartesian products, relations, functions. Onto and one-to-one functions. Equivalence relation. Partially ordered sets. Introduction to graph theory. Classical problems of set theory.
IAS0001 Introduction to Speciality (6 ECTS credits)
Lecturer:
Priit Ruberg
Teaching semester:
autumn
Compulsory course:
IACB17/26 Hardware Development and Programming (Bachelor study)
More info:
Brief description of the course:
The goals of Hardware Development and Programming and its role in society. Speciality’s specialization possibilities, courses being taught and interconnections between them in future studies. Potential employers of the graduates of the curriculum. The main approaches of creation of electronic systems and devices. Physical quantities, their units and unit systems. Measurement process and evaluation of accuracy.
Measurement equipment. Devices to measure electrical signals:
multimeters, oscilloscopes. Programming of Arduino based robot platform.
The basic team work skills, project based workflow and using repositories in software development. Skills for formatting and defending of reports and presentations.
Measurement equipment. Devices to measure electrical signals:
multimeters, oscilloscopes. Programming of Arduino based robot platform.
The basic team work skills, project based workflow and using repositories in software development. Skills for formatting and defending of reports and presentations.
IXX9102 Research Literature Review (3 ECTS credits)
Lecturer:
Maarja Kruusmaa
Teaching semester:
autumn - spring
Elective course:
IAXD22/22 Information and Communication Technology (Doctoral study)
More info:
Brief description of the course:
search of research literature, using research databases for literature search, reading research papers, writing a critical overview of the research field, identifying knowledge gaps and possible research problems, assessing their novelty and significance with respect to the related work. Writing an overview article
IAS0470 Research Seminar (6 ECTS credits)
Lecturer:
Aleksei Tepljakov
Teaching semester:
autumn
Elective course:
IACM23/26 Hardware Development and Programming (Master study)
More info:
Brief description of the course:
A systematic approach to research design. Elements of research design. Identifying the broad problem area, problem statement. Data gathering. The hypothesis. With selection of master degree theme. Independent work with scientific publications. Participation at research meetings and conferences. Masters students obtain experience how to write and present research papers at international level.
Systems and Control Engineering
IAS0020 Automatic Control and Systems Analysis (6 ECTS credits)
Lecturer:
Eduard Petlenkov
Teaching semester:
spring
Elective course:
IACB17/26 Hardware Development and Programming (Bachelor study)
More info:
Brief description of the course:
Concept of a system. Abstract system. Classification of systems. Modeling of systems: analytical and nonanalytical models. Systems analysis. Linear continuous and discrete time analytical models: transfer and state-space models. Representation of these models. Analysis of linear systems. General properties of systems: controllability, observability and stability. Structural properties of systems, composition and decomposition. Structure and elements of control systems. Feedforward and feedback control systems. Disturbances in control systems. Mathematical description of systems and disturbances: input-output models, state space models. Examples of control systems. Control techniques: pole placement, optimal and adaptive control. Pole placement - output and state feedback, synthesis of tracking systems, compensation of disturbances. Optimal control - statement of optimal control problem, optimal control of systems, prediction, filtering, estimation and compensation of disturbances. The course consists of lectures and laboratory trainings.
ATR0130 Automation of Smart Buildings (6 ECTS credits)
Lecturer:
Martin Thalfeldt
Teaching semester:
spring
Elective course:
More info:
Brief description of the course:
The course starts with introductory lectures into the topic followed by building service system specific lectures. Each of the latter are followed by a practice in the next week and by system initial analysis presentations in the week after that. Detailed analysis of the building service systems in a building is conducted by the end of the course, which is presented in class. The analysis is based on real buildings and their automation system. The building service systems analyses are done in interdisciplinary teams. An individual test in Moodle environment should be done after each lecture to consolidate the knowledge obtained in lecture.
There are no prerequisites for participants, but it is beneficial to have pre-knowledge about building service systems or control systems and data-driven analysis to effectively participate in inter-disciplinary group work.
There are no prerequisites for participants, but it is beneficial to have pre-knowledge about building service systems or control systems and data-driven analysis to effectively participate in inter-disciplinary group work.
IAS0065 Control Instrumentation (6 ECTS credits)
Lecturer:
Kristina Vassiljeva
Teaching semester:
autumn
Elective course:
More info:
Brief description of the course:
The course provides theoretical knowledge and practical skills in industrial control instrumentation. Topics include the structure of control systems, controller types and tuning methods, programmable logic controllers, and signal conversion in industrial automation systems. Students study industrial sensors and actuators and perform laboratory experiments to analyse and evaluate control system performance using simulation and experimental methods.
IAS0190 Intelligent Buildings (6 ECTS credits)
Lecturer:
Andres Rähni
Teaching semester:
autumn - spring
Elective course:
IACM23/26 Hardware Development and Programming (Master study)
More info:
Brief description of the course:
Intelligent buildings concept and aspects. Building subsystems; automation, energy management, lighting, communication, life safety and security; hierarchy and their integration with the building envelope; internationally standardized building automation functions.
Building automatic control instrumentation. Communication networks in buildings and in automation, standardized solutions (KNX, LonWorks, BACnet, etc) and trends. Open standards in systems integration. Cybersecurity issues in building systems. Programmable logic controllers (PLC) and application specific controllers. Building services automation examples.
Building automatic control instrumentation. Communication networks in buildings and in automation, standardized solutions (KNX, LonWorks, BACnet, etc) and trends. Open standards in systems integration. Cybersecurity issues in building systems. Programmable logic controllers (PLC) and application specific controllers. Building services automation examples.
IAS0023 Intelligent Control Systems (6 ECTS credits)
Lecturer:
Eduard Petlenkov
Teaching semester:
autumn
Elective course:
Prerequisite:
Modeling and Identification (IAS0031)
More info:
Brief description of the course:
Internal Model Control. Cascade, feedforward, ratio and override control. Multivariable control. Batch processes control. Plantwide control. Process safety. Safety instrumented system. Control engineering projects.
Nonlinear systems, Principes of nonlinear systems identification and control;
Adaptive control systems;
Artificial neural networks. Structures of artificial neural networks and training algorithms;
Artificial neural networks based identification of nonlinear systems;
Artificial neural networks based control of nonlinear systems;
Self-learning neural networks;
Artificial neural networks based image recognition and pattern classification;
Fuzzy control;
Dynamic feedback linearization based control of nonlinear systems;
Genetic algorithms and their applications for identification and control of nonlinear systems.
Nonlinear systems, Principes of nonlinear systems identification and control;
Adaptive control systems;
Artificial neural networks. Structures of artificial neural networks and training algorithms;
Artificial neural networks based identification of nonlinear systems;
Artificial neural networks based control of nonlinear systems;
Self-learning neural networks;
Artificial neural networks based image recognition and pattern classification;
Fuzzy control;
Dynamic feedback linearization based control of nonlinear systems;
Genetic algorithms and their applications for identification and control of nonlinear systems.
IAS0360 Machine Learning for Embedded Systems (6 ECTS credits)
Lecturer:
Uljana Reinsalu
Teaching semester:
autumn
Elective course:
More info:
Brief description of the course:
Overview of main algorithms used in machine learning. Basics of model creation. Building of training data sets and using them. Main concepts of model optimization and their use for embedded systems. No special hardware is developed. Individual tasks and project assignments (by teams of 2-3 members) are solved during the course.
IAS0031 Modeling and Identification (6 ECTS credits)
Lecturer:
Aleksei Tepljakov
Teaching semester:
spring
Elective course:
The course is a prerequisite to:
Intelligent Control Systems (IAS0023)
More info:
Brief description of the course:
Process modeling. Fundamental and empirical models. Classification of systems. Modeling of systems: analytical modeling versus identification from measured data. Static systems: linear, quadratic and nonlinear programming. Linear continuous and discrete time analytical models: transfer and state-space models. Obtaining of these models from principal schemes of mechanical, electrical, hydraulic and thermal systems. Similarity of models of conservative systems: Kirchhoff rules. Simplification of models: linearization, approximation, partial realization. Robust models: Kharitonov theorems, stability margin. Identification as a process: estimation of parameters.
Parametric models: method of least squares. Nonparametric models: correlation and spectral analysis. On-line identification, recursive algorithms. Identification in closed loop.
Parametric models: method of least squares. Nonparametric models: correlation and spectral analysis. On-line identification, recursive algorithms. Identification in closed loop.
IAS0130 Process Control (6 ECTS credits)
Lecturer:
Andres Rähni
Teaching semester:
autumn
Compulsory course:
IACB17/26 Hardware Development and Programming (Bachelor study)
Elective course:
More info:
Brief description of the course:
Tasks and levels of process control. Open and closed loop system, feedback and feedforward. Plant and processes. Control system stability and performance. Discrete event processes, time and event driven sequential control. Continuous processes, thermal and liquid level processes. Control systems instrumentation, software and examples of using in bio, chemical and food -technology. Robotics
IAS0220 Robot Guidance and Software (6 ECTS credits)
Lecturer:
Laura Piho
Teaching semester:
autumn
Elective course:
EAMM23/26 Electrical Engineering and Mechatronics (Master study)
IABM02/26 Business Information Technology (Master study)
IAIB25/26 Informatics and Artificial Intelligence (Bachelor study)
IAIM26/26 Computer Science and Artificial Intelligence (Master study)
IAPM02/26 Computer Science (Master study)
MVEB14/26 Integrated Engineering (Bachelor study)
IABM02/26 Business Information Technology (Master study)
IAIB25/26 Informatics and Artificial Intelligence (Bachelor study)
IAIM26/26 Computer Science and Artificial Intelligence (Master study)
IAPM02/26 Computer Science (Master study)
MVEB14/26 Integrated Engineering (Bachelor study)
More info:
Brief description of the course:
The course provides an introduction to the fundamentals of robotics, covering sensors, algorithms, and actuators, as well as the Robot Operating System (ROS). Through theoretical lectures and practical labs, key robotics concepts and their application using virtual robots in the ROS environment are introduced. Additionally, an opportunity is provided to test acquired skills on real robots, bridging the gap between simulation and real-world applications.
IAS0060 Robotics (6 ECTS credits)
Lecturer:
Roza Gkliva
Teaching semester:
spring
Elective course:
IABM02/26 Business Information Technology (Master study)
IACM23/26 Hardware Development and Programming (Master study)
IAFM21/26 Embedded Systems (Master study)
IAIM26/26 Computer Science and Artificial Intelligence (Master study)
IAPM02/26 Computer Science (Master study)
MVEB14/26 Integrated Engineering (Bachelor study)
IACM23/26 Hardware Development and Programming (Master study)
IAFM21/26 Embedded Systems (Master study)
IAIM26/26 Computer Science and Artificial Intelligence (Master study)
IAPM02/26 Computer Science (Master study)
MVEB14/26 Integrated Engineering (Bachelor study)
More info:
Brief description of the course:
The course is project-based. During the semester, the teams consisting of 3-4 students solve a task comprising of decision making, robot control and data fusion. Building hardware is not required.
Teams will give a weekly overview of their progress and discuss their activities with the supervisor and other students. During the week the students work at flexible schedule on their task as agreed with the supervisor of the work group.
The maximum number of course participants is 20. The participants are required to have C++ or Python programming skills and a basic knowledge of ROS would be beneficial. At the beginning of the semester every student has to take an entrance test (C++ or Python programming) that determines if the student is allowed to take the course.
The students are divided into workgroups based on their background and preferences. Usually, there is a choice between 3 different course projects (https://taltech.ee/en/biorobotics-courses#p1441).
Teams will give a weekly overview of their progress and discuss their activities with the supervisor and other students. During the week the students work at flexible schedule on their task as agreed with the supervisor of the work group.
The maximum number of course participants is 20. The participants are required to have C++ or Python programming skills and a basic knowledge of ROS would be beneficial. At the beginning of the semester every student has to take an entrance test (C++ or Python programming) that determines if the student is allowed to take the course.
The students are divided into workgroups based on their background and preferences. Usually, there is a choice between 3 different course projects (https://taltech.ee/en/biorobotics-courses#p1441).
Hardware Design
IAS0230 Basics of Embedded Systems (6 ECTS credits)
Lecturer:
Uljana Reinsalu
Teaching semester:
autumn
Compulsory course:
IACB17/26 Hardware Development and Programming (Bachelor study)
Elective course:
More info:
Brief description of the course:
The course introduces basics of embedded systems and their development methods:
- Principles of embedded systems, differences from traditional computer systems;
- Architectures and platforms of embedded systems. Generic and application specific architectures;
- Embedded software, differences from application software;
- Energy and power consumption, dependability and fault tolerance of embedded systems;
- Notion of time in real-time embedded systems, scheduling of computation processes and planning of resources;
- Development tools for microcontroller systems (on base of ARM Cortex M).
Introductory video for EuroTeQ students: https://www.youtube.com/watch?v=ngsNT6mhNhY
- Principles of embedded systems, differences from traditional computer systems;
- Architectures and platforms of embedded systems. Generic and application specific architectures;
- Embedded software, differences from application software;
- Energy and power consumption, dependability and fault tolerance of embedded systems;
- Notion of time in real-time embedded systems, scheduling of computation processes and planning of resources;
- Development tools for microcontroller systems (on base of ARM Cortex M).
Introductory video for EuroTeQ students: https://www.youtube.com/watch?v=ngsNT6mhNhY
IAX0043 Computers (6 ECTS credits)
Lecturer:
Priit Ruberg
Teaching semester:
autumn - spring
Compulsory course:
More info:
Brief description of the course:
Computer generations and technological development. Transistor logic, CMOS technology. Digital logic gates and applications, binary functions, truth table, logic function, logic diagram. Processor components: combinational circuits and sequential circuits. Processor: instruction execution cycle, structure, different architectures. Computer memory: classification, hierarchy, technologies, memory organization. Instruction and addressing: instruction formats, instruction system, addressing methods, virtual memory. Microcomputer hardware: architecture, buses, data exchange, other components of microcomputers, increasing computer performance. Input/output devices: keyboard, printers, displays, touch screens, mouse, scanner, analog interface, power supply and uninterruptible power supply. Realization of device control with computing. Special hardware: implementation, areas of use. Initial computer setup: BIOS and UEFI. Parallelism of computers and Flynn's taxonomy. Computer fault tolerance: physical failures, hardware testing, well-testable hardware, fault-tolerant codes
IAS0150 Digital Systems (6 ECTS credits)
Lecturer:
Peeter Ellervee
Teaching semester:
autumn - spring
Compulsory course:
IACB17/26 Hardware Development and Programming (Bachelor study)
More info:
Brief description of the course:
Overview about digital systems and main design phases. Transformation, optimization and implementation of multi-output logic functions using given technology. Systems with memory, control and operation automata, their transformation, optimization and implementation. Design and optimization of digital systems architectures. Number systems, representation in digital systems. Implementation of main arithmetic operations and algorithms as digital systems. Overview about basics of digital systems modeling. Introduction to hardware description language VHDL, using it to model digital systems.
IAX0600 Digital Systems Design (6 ECTS credits)
Lecturer:
Jaan Raik
Teaching semester:
autumn - spring
Elective course:
IACB17/26 Hardware Development and Programming (Bachelor study)
More info:
Brief description of the course:
Overview of the main topics of digital design. Digital systems design methodology using VHDL and FPGA/PSoC. Programmable logic (FPGAs) and programmable system-on-chip (PSoCs) as means for building reconfigurable systems. Rapid prototyping of digital systems.
The most important feature of the course is continuous evaluation based on simple but complete mini-projects. Such projects have to be implemented starting from the initial specification (given by instructors and discussed with students) to the final implementation in FPGA/PSoC.
The most important feature of the course is continuous evaluation based on simple but complete mini-projects. Such projects have to be implemented starting from the initial specification (given by instructors and discussed with students) to the final implementation in FPGA/PSoC.
IAS0330 Embedded Systems (6 ECTS credits)
Lecturer:
Uljana Reinsalu
Teaching semester:
spring
Compulsory course:
IACM23/26 Hardware Development and Programming (Master study)
Elective course:
IAFM21/26 Embedded Systems (Master study)
More info:
Brief description of the course:
Learn the microcontrollers and development of contemporary embedded systems for real-life situations taking into account the requirements to performance, power consumption and dependability. Programming of microcontrollers and usage of professional development environments for coding, simulation and debugging will be studied. In the practical part of the course, using the bottom-up approach, the different interfaces of the integrated to microcontroller peripherals will be studied up to deployment of simplified real-time operating system.
IAS0640 HDL in Digital Systems Design (6 ECTS credits)
Lecturer:
Jaan Raik
Teaching semester:
autumn
Elective course:
More info:
Brief description of the course:
Digital systems design methodology using SystemVerilog and PLD (FPGA). FPGAs as means for building reconfigurable systems. Rapid prototyping of digital systems. Digital signal processing with FPGA devices. Principles of asynchronous design (a systems perspective). The course is based on the development of a real-world projects and case studies.
IAS0430 Microprocessor Systems (6 ECTS credits)
Lecturer:
Tara Ghasempouri
Teaching semester:
autumn
Elective course:
IACM23/26 Hardware Development and Programming (Master study)
More info:
Brief description of the course:
In the course, we will explore the basic theoretical knowledge of Computer Architecture focusing on the design of Microprocessors. We will explore the building blocks of the CPU, the design and implementation of the Instruction Set Architecture (ISA), and the computer memory hierarchy. Topics will also include computer architecture design decisions that are related to the CPU kernel/user modes, overview of Operating Systems design, process and job management, and computer arithmetic.
IAS0550 Systems-on-Chip Design (6 ECTS credits)
Lecturer:
Kalle Tammemäe
Teaching semester:
autumn
Elective course:
Prerequisite:
Digital Systems Design with VHDL (IAS0600)
More info:
Brief description of the course:
Design methodology of modern chips – VLSI, ASIC and SoC - design phases and teamwork. Computer Aided Design (CAD) systems. Hardware description levels - system, high, register transfer, logic and physical levels. System level description languages. Synthesis tasks at different description levels. Allocation, scheduling, and binding in high-level synthesis. Mapping and scheduling in system-level synthesis. VLSI, ASIC and SoC synthesis with modern design tools. Using field programmable logic for prototyping.
Software Design
IAX0590 Algorithms and Programming for Engineers (6 ECTS credits)
Lecturers:
Vladimir Viies
Lembit Jürimägi
Lembit Jürimägi
Teaching semester:
spring
Compulsory course:
More info:
Brief description of the course:
Definition of an algorithm, ways to present and construct algorithms. Dividing a task into subtasks.
Languages. Language classification. Algorithmic languages.
Computer architecture (software layer). Program life-cycle. Command line interface, command line parameters.
Operator precedence. Conditionals and control flow statements (including several conditions). Loops with condition checking before and after the statement.
Converting numbers from one numeral system to another. Fixed point and floating point numbers. Pseudorandom numbers.
Declaring variables. Global and local variables. Various data types and their representation in a computer. Converting data from one type to another.
Declaring and indexing of arrays. Multidimensional arrays. Operations with arrays (searching, sorting, statistical analysis). Strings and string operations. Formatting results.
Creating subroutines, exchanging data between them (parameters, return values). Calling subroutines. Variable scope and lifespan.
Files, accessing files for reading and writing.
Languages. Language classification. Algorithmic languages.
Computer architecture (software layer). Program life-cycle. Command line interface, command line parameters.
Operator precedence. Conditionals and control flow statements (including several conditions). Loops with condition checking before and after the statement.
Converting numbers from one numeral system to another. Fixed point and floating point numbers. Pseudorandom numbers.
Declaring variables. Global and local variables. Various data types and their representation in a computer. Converting data from one type to another.
Declaring and indexing of arrays. Multidimensional arrays. Operations with arrays (searching, sorting, statistical analysis). Strings and string operations. Formatting results.
Creating subroutines, exchanging data between them (parameters, return values). Calling subroutines. Variable scope and lifespan.
Files, accessing files for reading and writing.
IAS0450 Analysis of Programming Languages (6 ECTS credits)
Lecturers:
Vladimir Viies
Lembit Jürimägi
Lembit Jürimägi
Teaching semester:
autumn
Elective course:
IACM23/26 Hardware Development and Programming (Master study)
More info:
Brief description of the course:
Programming language, programming system, compilers.
Language syntax - concept, classification, grammar.
Compiling, the main types of compilers.
Expressions, syntax-trees, syntax diagrams, compilers description languages.
The basic statements of programming languages and an overview of the nature and evolution of them.
Pseudo-language and assembler: constructions conformity.
Lexer and parser.
"Good Language" (comparison of different languages).
Special languages (SQL as language, basic statements, SQL and databases).
Managing a special language as software project.
Different programming methods: structure, object-oriented approach to programming.
Documenting a software project.
Language syntax - concept, classification, grammar.
Compiling, the main types of compilers.
Expressions, syntax-trees, syntax diagrams, compilers description languages.
The basic statements of programming languages and an overview of the nature and evolution of them.
Pseudo-language and assembler: constructions conformity.
Lexer and parser.
"Good Language" (comparison of different languages).
Special languages (SQL as language, basic statements, SQL and databases).
Managing a special language as software project.
Different programming methods: structure, object-oriented approach to programming.
Documenting a software project.
IAS0410 Object Oriented Programming (6 ECTS credits)
Lecturer:
Viktor Leppikson
Teaching semester:
autumn
Elective course:
IACM23/26 Hardware Development and Programming (Master study)
More info:
Brief description of the course:
1. Object-oriented analysis and programming: main principles and their implementation using C++.
2. Advanced programming in C++: operator overloading, templates, pointers to functions, functors, initializing, moving, etc.
3. C++ standard classes for input/output and text processing.
4. C++ standard classes for operating with clock.
5. C++ containers and standard algorithms.
6. Multithreading in C++.
7. Qt framework.
2. Advanced programming in C++: operator overloading, templates, pointers to functions, functors, initializing, moving, etc.
3. C++ standard classes for input/output and text processing.
4. C++ standard classes for operating with clock.
5. C++ containers and standard algorithms.
6. Multithreading in C++.
7. Qt framework.
IAX0583 Programming I (6 ECTS credits)
Lecturers:
Lembit Jürimägi
Risto Heinsar
Vladimir Viies
Risto Heinsar
Vladimir Viies
Teaching semester:
autumn - spring
Compulsory course:
The course is a prerequisite to:
Programming II (IAX0584)
Programming III (IAX0586)
Software Project (IAS1410)
Programming III (IAX0586)
Software Project (IAS1410)
More info:
Brief description of the course:
Definition of an algorithm, ways to present and construct algorithms. Separating a task into subtasks.
Languages. Language classification. Algorithmic languages.
Computer architecture (software layer). Program life-cycle. Command line interface, command line parameters.
Operator precedence. Conditionals and control flow statements (including several conditions). Loops with condition checking before and after the statement.
Positional and non-positional numeral systems. Converting numbers from one numeral system to another. Fixed point and floating point numbers. Pseudorandom numbers.
Declaring variables. Global and local variables. Various data types and their representation in a computer. Converting data from one type to another.
Declaring and indexing of arrays. Multidimensional arrays. Operations with arrays (searching, sorting, statistical analysis). Strings and string operations. Formatting results.
Time and date based tasks.
Creating subroutines, exchanging data between them (parameters, return values). Calling subroutines. Variable scope and lifespan.
Files, accessing files for reading and writing.
Languages. Language classification. Algorithmic languages.
Computer architecture (software layer). Program life-cycle. Command line interface, command line parameters.
Operator precedence. Conditionals and control flow statements (including several conditions). Loops with condition checking before and after the statement.
Positional and non-positional numeral systems. Converting numbers from one numeral system to another. Fixed point and floating point numbers. Pseudorandom numbers.
Declaring variables. Global and local variables. Various data types and their representation in a computer. Converting data from one type to another.
Declaring and indexing of arrays. Multidimensional arrays. Operations with arrays (searching, sorting, statistical analysis). Strings and string operations. Formatting results.
Time and date based tasks.
Creating subroutines, exchanging data between them (parameters, return values). Calling subroutines. Variable scope and lifespan.
Files, accessing files for reading and writing.
IAX0584 Programming II (6 ECTS credits)
Lecturers:
Vladimir Viies
Lembit Jürimägi
Risto Heinsar
Lembit Jürimägi
Risto Heinsar
Teaching semester:
autumn - spring
Compulsory course:
Elective course:
EAAB16/26 Electrical Power Engineering and Mechatronics (Bachelor study)
Prerequisite:
Programming I (IAX0583)
The course is a prerequisite to:
Programming III (IAX0586)
Python for Embedded Systems (IAS0595)
Python for Embedded Systems (IAS0595)
More info:
Brief description of the course:
Overview of structural data types (records, sets, files).
Object-oriented approach to programming (classes, objects, methods, attributes).
Records. Fields and subfields of a record, union records.
Declaring and usage. Files. Text files and typed files, sequential and random access files. File buffer. File open (read, write, edit) and close. Reading and writing records to a text file and typed file.
Sorting data in files, exceptions. Sorting text files. Sorting files by using an index. Sorting outside of files. Recursion: direct and indirect recursion. Advantages and disadvantages.
Data exchange. Examples. Dynamic memory allocation. Pointers, allocating and freeing memory. Stack and its types. Sorting a dynamic structure.
Debugging a program: scanning, checkpoints, debuggers. Decomposing a program. Documentation. Managing a software project.
Object-oriented approach to programming (classes, objects, methods, attributes).
Records. Fields and subfields of a record, union records.
Declaring and usage. Files. Text files and typed files, sequential and random access files. File buffer. File open (read, write, edit) and close. Reading and writing records to a text file and typed file.
Sorting data in files, exceptions. Sorting text files. Sorting files by using an index. Sorting outside of files. Recursion: direct and indirect recursion. Advantages and disadvantages.
Data exchange. Examples. Dynamic memory allocation. Pointers, allocating and freeing memory. Stack and its types. Sorting a dynamic structure.
Debugging a program: scanning, checkpoints, debuggers. Decomposing a program. Documentation. Managing a software project.
IAX0586 Programming III (6 ECTS credits)
Lecturer:
Viktor Leppikson
Teaching semester:
autumn
Compulsory course:
IACB17/26 Hardware Development and Programming (Bachelor study)
Prerequisites:
Programming I (IAX0583)
Programming II (IAX0584)
Programming II (IAX0584)
The course is a prerequisite to:
Programming IV (IAX0587)
More info:
Brief description of the course:
C++ additions to C: allocating and releasing of memory, Unicode implementation, default values for function arguments, references, exceptions.
Paradigmas of object-oriented programmimg and their implementation in C++: classes, objects, attributes, methods, encapsulation, constructor, destructor, inheritance, polymorphism.
Additional knowledge about C++: using of C struct in C++, copy constructor, pointer this, friends, operator overloading, static members, constant objects, casting, keywords bool and nullptr.
The most used C++ standard classes: input and output streams, file handling in C and C++, exceptions, text processing, class stringstream.
Linear data structures: array and linked list, operations with linked list (traversal, inserting and removing of records), doubly linked lists, circular linked lists, stack, queue.
Nonlinear data structures: binary tree and operations with it (traversal, inserting and removing of nodes), balancing, AVL tree, bitwise opoerations in C / C++, digital search tree, trie, multiway trees, red-black tree, priority queues, leftist tree, hashing, solutions for collisions.
STL algorithms: pointers to functions, lanbda expressions, function wrappers standard functions (find, find_if, for_each, sort, etc.). STL containers: templates, keyword auto, vectors, iterators, lists and forward lists, convenient containers (array, stack, etc.), pairs, maps.
Paradigmas of object-oriented programmimg and their implementation in C++: classes, objects, attributes, methods, encapsulation, constructor, destructor, inheritance, polymorphism.
Additional knowledge about C++: using of C struct in C++, copy constructor, pointer this, friends, operator overloading, static members, constant objects, casting, keywords bool and nullptr.
The most used C++ standard classes: input and output streams, file handling in C and C++, exceptions, text processing, class stringstream.
Linear data structures: array and linked list, operations with linked list (traversal, inserting and removing of records), doubly linked lists, circular linked lists, stack, queue.
Nonlinear data structures: binary tree and operations with it (traversal, inserting and removing of nodes), balancing, AVL tree, bitwise opoerations in C / C++, digital search tree, trie, multiway trees, red-black tree, priority queues, leftist tree, hashing, solutions for collisions.
STL algorithms: pointers to functions, lanbda expressions, function wrappers standard functions (find, find_if, for_each, sort, etc.). STL containers: templates, keyword auto, vectors, iterators, lists and forward lists, convenient containers (array, stack, etc.), pairs, maps.
IAX0587 Programming IV (6 ECTS credits)
Lecturer:
Viktor Leppikson
Teaching semester:
spring
Elective course:
IACB17/26 Hardware Development and Programming (Bachelor study)
Prerequisite:
Programming III (IAX0586)
More info:
Brief description of the course:
C++ advanced tools: enumerations, adiotional data types like char32_t, extracting the type from data (typeid and decltype), operating with complex numbers, numerics library, class any, C union and C++ template variant, template optional, initializing constructors, function objects, moving, smart pointers, rational numbers, generation of random numbers, time handling in C and C++.
STL advanced containers:initializer lists, value arrays, template tuple, sets, hash tables.
STL advanced algorithms: standard functions for copying, modifying and erasing.
Multithreading: how it works, starting and énding of a thread, synchronization of threads, class mutex, class conditional_variable, atomic variables, producer-consumer problem and its solutions, templates future and promise.
DLLs: implementing and linking.
Qt: installation, QtCreater development environment, signals and slots, events, multithreading in Qt, stings in Qt, containers in Qt, input and output in Qt, design of graphical user interface, QML overview.
New tools from C++ version 20: coroutines, modules, ranges, output formatting, advanced tools for thread synchronization.
New tools from C++ version 23..
Parallel programming using Open MP and CUDA.
STL advanced containers:initializer lists, value arrays, template tuple, sets, hash tables.
STL advanced algorithms: standard functions for copying, modifying and erasing.
Multithreading: how it works, starting and énding of a thread, synchronization of threads, class mutex, class conditional_variable, atomic variables, producer-consumer problem and its solutions, templates future and promise.
DLLs: implementing and linking.
Qt: installation, QtCreater development environment, signals and slots, events, multithreading in Qt, stings in Qt, containers in Qt, input and output in Qt, design of graphical user interface, QML overview.
New tools from C++ version 20: coroutines, modules, ranges, output formatting, advanced tools for thread synchronization.
New tools from C++ version 23..
Parallel programming using Open MP and CUDA.
IAS0595 Python for Embedded Systems (3 ECTS credits)
Lecturer:
Teaching semester:
spring
Elective course:
IACB17/26 Hardware Development and Programming (Bachelor study)
Prerequisite:
Programming II (IAX0584)
More info:
Brief description of the course:
The course introduces the Python programming language as a host-tool for embedded software developers. During the course, students create a command-line user interface (CLI) compatible with a given embedded system communication protocol, covering all system functionalities and logging data received from the system.
IXX0303 Rapid Application Development for Web (6 ECTS credits)
Lecturer:
Tarmo Robal
Teaching semester:
spring
Elective course:
IACB17/26 Hardware Development and Programming (Bachelor study)
More info:
Brief description of the course:
The course provides skills and knowledge for rapid web-application development on the Oracle APEX platform. The Oracle APEX platform is a visual low-code platform in which the creation of an application takes place in a web-based environment through dialog windows, drag&drop, and wizards, requiring little programming skills to create more complex applications. The course first introduces the necessity and possibilities of data structuring and modelling. This is followed by the creation of a data model and information retrieval for online presentation of data (reports, graphs, dashboard) on the Oracle APEX platform. The second part of the course focuses on creating more complex SQL queries (aggregation, subqueries, data processing) and their application in creating low-code web applications for collecting, managing and presenting information in different ways.
Hardware Security and Reliability
IAS0530 Dependability and Fault Tolerance (6 ECTS credits)
Lecturer:
Gert Jervan
Teaching semester:
spring
Compulsory course:
IAVM23/26 Communications Networks and Services (Master study)
Elective course:
IACM23/26 Hardware Development and Programming (Master study)
More info:
Brief description of the course:
Historic perspective. Basic terminology. Risks. Hazards. Risk analysis. Hazard analysis. Risk management. Safety. Systems (incl. hardware, software) testing. Redundancy (hardware, software, information, time, environment). Enemies of dependability. Accidents analysis. Systems and technology analysis.
IAS0440 Digital Systems Modeling and Verification (6 ECTS credits)
Lecturer:
Jaan Raik
Teaching semester:
spring
Elective course:
More info:
Brief description of the course:
Basics of digital systems modeling and verification. Equivalence-checking, model-checking, simulation. Verification methods, simulation versus formal verification, code coverage, synthesizability. Modeling and verification languages - SystemC, SystemVerilog, VHDL, PSL. Coding for verification, problems with those languages.
IAS0370 Reliability of Chips (6 ECTS credits)
Lecturer:
Maksim Jenihhin
Teaching semester:
autumn
Elective course:
More info:
Brief description of the course:
The course focuses on:
- The latest advances and challenges in chips manufacturing technology
- Issues related to manufacturing-induced process variations
- Manufacturing defects modelling, test and diagnostics
- Nanoelectronics ageing, its modelling, assessment and mitigation (Negative/Positive Bias Temperature Instability, Hot Carrier Injection, Time-Dependent Dielectric Breakdown, Electromigration, etc.)
- Radiation-induced soft errors, their effects (single/multiple event upsets, transients, etc.) and dedicated hardening and masking techniques.
- AI hardware accelerators reliability. Edge AI.
- Industrial standards for robustness and low-level mechanisms for fault tolerance
- Reliability and test for emerging technologies
In the practical part of the course, the students will have hands-on experience with EDA (Electronic Design Automation) tools to simulate state-of-the-art reliability and quality issues in nanoelectronic systems (e.g. a processor chip design). An interactive seminar will facilitate team-work for small-group discussion topics assignments (e.g. one related failure mechanism).
- The latest advances and challenges in chips manufacturing technology
- Issues related to manufacturing-induced process variations
- Manufacturing defects modelling, test and diagnostics
- Nanoelectronics ageing, its modelling, assessment and mitigation (Negative/Positive Bias Temperature Instability, Hot Carrier Injection, Time-Dependent Dielectric Breakdown, Electromigration, etc.)
- Radiation-induced soft errors, their effects (single/multiple event upsets, transients, etc.) and dedicated hardening and masking techniques.
- AI hardware accelerators reliability. Edge AI.
- Industrial standards for robustness and low-level mechanisms for fault tolerance
- Reliability and test for emerging technologies
In the practical part of the course, the students will have hands-on experience with EDA (Electronic Design Automation) tools to simulate state-of-the-art reliability and quality issues in nanoelectronic systems (e.g. a processor chip design). An interactive seminar will facilitate team-work for small-group discussion topics assignments (e.g. one related failure mechanism).
Projects and Practice
IAS1610 Chip Design Project (6 ECTS credits)
Lecturer:
Jaan Raik
Teaching semester:
autumn - spring
Elective course:
IACM23/26 Hardware Development and Programming (Master study)
More info:
Brief description of the course:
A project-based course in which a group of students is given the goal of designing a digital, analog, or mixed-signal chip. The group of students is instructed to work together towards a common goal, document the progress of the project, and capture their personal contributions to the project. The semester-long work results in the completion of project documentation that enables the implementation of the chip or its module.
IXX1530 Computer and Systems Engineering Project (6 ECTS credits)
Lecturer:
Peeter Ellervee
Teaching semester:
autumn - spring
Compulsory course:
IACB17/26 Hardware Development and Programming (Bachelor study)
More info:
Brief description of the course:
Computer systems project contains solving analysis or development task of computer / computer-based artificial systems (e.g., analysis of a computer, embedded or cyber-physical system; development of computer / computer-based artificial system; research in computer / computer-based artificial system fields) together with customer and/or team members.
Students will go through phases of system development: task analysis, decomposition into sub-tasks, system architecture selection; algorithm selection or develeopment; system programming; efficiency analysis of the created system in particular application and possible additional developments to complete the task, cooperation with customer and/or use of teamwork, project report writing (incl. software documentiation), project presentation and defense of selected solutions.
Students will go through phases of system development: task analysis, decomposition into sub-tasks, system architecture selection; algorithm selection or develeopment; system programming; efficiency analysis of the created system in particular application and possible additional developments to complete the task, cooperation with customer and/or use of teamwork, project report writing (incl. software documentiation), project presentation and defense of selected solutions.
IAS1420 Computers and Systems Project (6 ECTS credits)
Lecturer:
Peeter Ellervee
Teaching semester:
autumn - spring
Elective course:
EARB16/26 Product Development and Robotics (Bachelor study)
More info:
Brief description of the course:
Computer and systems project contains solving a technical computer or systems task (e.g., analysis of computers, computer networks or systems; selecting proper computers, computer networks or systems platform and algorithms for particular applications; development of simpler computer systems based technical systems; research in computer and system fields) together with customer and/or team members. Students will go through phases of system development: task analysis, decomposition into sub-tasks, selection of proper architecture and algorithms, cooperation with customer and/or use of teamwork, project report writing, project presentation and defense of selected solutions.
UTT0110 Mechatronics and Smart Systems Project (6 ECTS credits)
Lecturer:
Peeter Ellervee
Teaching semester:
spring
Elective course:
More info:
Brief description of the course:
This is a practical Project course where a team of students is given a real industry or R&D related task to solve a problem, draw the Project plan and design and compose a mechatronic system, which might be a robotic or robot technology application related or some other smart system problem solution which is new in the field and have some real impact on industry or science. The work is organized as real teamwork with a team leader, management and Project planning guided with respective supervisors. The Project ends with an open public demonstration and discussion seminar of the Project results and presenting a journal paper draft ready for the publication in an engineering journal discussing the Project problem, solution approach and results of the Project.
IAS0110 Software Engineering (6 ECTS credits)
Lecturer:
Tarmo Robal
Teaching semester:
autumn - spring
Compulsory course:
IACB17/26 Hardware Development and Programming (Bachelor study)
Elective course:
More info:
Brief description of the course:
Contemporary software engineering. Software life cycle. Software life cycle models: waterfall model, spiral model, iterative and incremental model. Software development methodologies: (UP, agile development methodologies, etc): Quality of software development product and process. Software development maturity models CMM, CMMI.
Practice: specification of initial problem in UML, design, implementation using the component technology, testing.
Practice: specification of initial problem in UML, design, implementation using the component technology, testing.
IAS1410 Software Project (6 ECTS credits)
Lecturer:
Lembit Jürimägi
Teaching semester:
autumn - spring
Compulsory course:
IACB17/26 Hardware Development and Programming (Bachelor study)
Prerequisite:
Programming I (IAX0583)
More info:
Brief description of the course:
Software project includes a teamwork for solving an IT-project (eg, mini-information system, modelling of the experiences, data processing, etc.). Students will collectively work through the stages of software development: analysis of the task; choice the software; refining of tasks; using teamwork, pair-work and individual work; preparing project documentation and project defending. Project team members can be use either classical waterfall method, iterative method, or an agile method for software development.
IAS0720 Industrial Training (6 ECTS credits)
Lecturers:
Peeter Ellervee
Eduard Petlenkov
Eduard Petlenkov
Teaching semester:
autumn - spring
Compulsory course:
IAFM21/26 Embedded Systems (Master study)
Elective course:
IACM23/26 Hardware Development and Programming (Master study)
More info:
Brief description of the course:
During the practical training the student gets familiar with the working and techological environment of the company and puts to practice the theoretical knowledge and acquires work experience. The student takes part in real work process. Practical training can be done in industial company or research company where student takes part in the work of a research group. Companies that deal with designing, implementing, administrating and research in the field of computer systems are suitable for passing the practical training.
IAS0730 Teaching Practice (6 ECTS credits)
Lecturers:
Peeter Ellervee
Eduard Petlenkov
Eduard Petlenkov
Teaching semester:
autumn - spring
Elective course:
IACM23/26 Hardware Development and Programming (Master study)
More info:
Brief description of the course:
Student prepares and teaches some parts of courses assigned by lecturer or professor. Usually that means teaching labs and practical lessons.