Introduction to compilers
Course: Software Engineering
Structural unit: Faculty of Computer Science and Cybernetics
            Title
        
        
            Introduction to compilers
        
    
            Code
        
        
            ННД.32 
        
    
            Module type 
        
        
            Обов’язкова дисципліна для ОП
        
    
            Educational cycle
        
        
            First
        
    
            Year of study when the component is delivered
        
        
            2018/2019
        
    
            Semester/trimester when the component is delivered
        
        
            6 Semester
        
    
            Number of ECTS credits allocated
        
        
            4
        
    
            Learning outcomes
        
        
            LO07. Know and apply in practice the fundamental concepts, paradigms and basic principles of operation of languages, tools and computing facilities of software engineering.
LO13. Know and apply methods of algorithm development, software design and data and knowledge structures design.
LO15. Choose with motivation programming languages and development technologies to solve problems of software construction and maintenance.
LO16. Have the skills of team development, approval, design and release of all types of software documentation.
        
    
            Form of study
        
        
            Full-time form
        
    
            Prerequisites and co-requisites
        
        
            1.	Know: basic principles of computer architecture, elements of discrete structures, particularly, sets, theory of computation, graphs, fundamental concepts of object-oriented programming and their use in C++ and/or Java programming languages.
2.	Be able to: write code in programming language C/C++ or Java. 
3.	Have basic skills: of software testing and debugging.
        
    
            Course content
        
        
            The aim of the discipline is mastering basics of programming language compiler construction, study of compiler structure, principles of lexical and syntactic analyses.
As a result of studying the discipline, the student must:
know types of language processors, general structure of compiler, approaches to lexical and syntactic analyses, respective topics of automata and formal language theories, principles for design of main subsystems of operating systems, algorithms commonly used in these subsystems;
be able to develop lexers and parsers for programming languages with different levels of abstraction, read and understand source code of system software.
        
    
            Recommended or required reading and other learning resources/tools
        
        
            1.	Aho A. Compilers: Principles, Techniques, and Tools, 2nd ed. / Aho A., Lem M., Sethi R., Ullman J. — Addison Wesley, 2007. — 1007 p.
2.	Tanenbaum A. Modern Operating Systems, 4th ed. / Tanenbaum A., Bos H. — Pearson, 2014. — 1136 p.
3.	Hopcroft J. Introduction to Automata Theory, Languages, and Computation, 3rd ed. / John Hopcroft, Rajeev Motwani, Jeffrey Ullman. — Prentice Hall, 2006. — 750 p.
        
    
            Planned learning activities and teaching methods
        
        
            Lectures, laboratory classes, independent work, test, homework, defense of laboratory work, exam.
        
    
            Assessment methods and criteria
        
        
            Intermediate assessment:
1. Test: LO1.1, LO1.2 — 25 points.
2. Test/continuous assessment: LO4.1  — 10 points.
3. Labs 1-3: LO2.1, LO2.2, LO3.1 — 30 points.
Final assessment (exam):
- maximum number of points: 35 points;
- learning outcomes to be assessed: LO1.1, LO1.2.
- exam form: written, based on google-forms.
- assignments with answers filled in the form field directly or uploaded as image, answers are time-limited.
Students that earned less than 25 points are not admitted to exam.
        
    
            Language of instruction
        
        
            Ukrainian
        
    Lecturers
This discipline is taught by the following teachers
                    Oleksii 
                    I.
                    Chentsov
                
                
                    Department of Intelligent Software Systems 
Faculty of Computer Science and Cybernetics
            Faculty of Computer Science and Cybernetics
                    Oleh
                    O.
                    Suprun
                
                
                    Department of Intelligent Software Systems 
Faculty of Computer Science and Cybernetics
            Faculty of Computer Science and Cybernetics
Departments
The following departments are involved in teaching the above discipline
                        Department of Intelligent Software Systems
                    
                    
                        Faculty of Computer Science and Cybernetics
                    
                
                        Department of Intelligent Software Systems
                    
                    
                        Faculty of Computer Science and Cybernetics