Software Engineering

Major: Computer Engineering
Code of subject: 6.123.00.O.031
Credits: 5.00
Department: Electronic Computing Machines
Lecturer: Puida Dmytro Volodymyrovych, PhD
Semester: 5 семестр
Mode of study: денна
Мета вивчення дисципліни: The software engineering discipline should: 1. Familiarize students with popular software development methodologies (Scrum, Kanban, Waterfall). 2. Familiarize students with modern standards in software development. 3. Familiarize students with popular tools that are used in modern software development (version control systems, static code analysis tools, documentation generation tools etc.). 4. Familiarize students with modern approaches to software testing.
Завдання: General competences 1. Basic knowledge of fundamental sciences, to the extent necessary for mastering general professional disciplines. 2. Basic knowledge in the field of computer engineering (computer logic, programming, electrical engineering) is necessary for mastering professionally oriented disciplines. 3. Ability to analyze and synthesize. 4. Ability to apply knowledge in practice. 5. Ability to search and analyze information from various sources. 6. Have research skills. 7. Have the skills to develop and manage projects. 8. Ability to solve tasks and make appropriate decisions. 9. Ability to write and speak in Ukrainian. 10. Knowledge of another language(s). 11. Ability to work both individually and in a team. 12. Ability to communicate effectively on professional and social levels. 13. Creativity and system thinking. 14. Potential for further education. 15. Responsibility for the quality of the work performed. Professional competences 1. Ability to apply and integrate knowledge and understanding of other engineering disciplines. 2. Ability to use and implement new technologies, to participate in the modernization and reconstruction of computer systems and networks, in particular with the aim of increasing their energy efficiency. 3. Ability to understand and take into account social, ecological, ethical, economic aspects that affect the formation of technical solutions. 4. Ability to apply professional knowledge and practical skills to solve typical problems of the specialty, as well as operation of computer systems and networks. 5. Ability to use knowledge and skills for calculation, research, selection, implementation, repair, and design of computer systems, networks and their components. 6. Ability to identify, classify and describe the operation of computer systems, networks and their components by using analytical methods and modeling methods. 7. Ability to investigate problems and determine limitations, including technical problems and problems of sustainable development, as well as problems of impact on the environment and life safety. 8. Ability to design systems and their components, taking into account all aspects of their life cycle and task, including creation, configuration, operation, maintenance and disposal; the ability to argue the choice of methods for solving specialized problems, critically evaluate the obtained results and defend the decisions made.
Learning outcomes: The students have to be able to demonstrate the following results after studying the course: 1. Know basic methodologies of software development. 2. Be able to use common version control systems. 3. Know common requirements to the source code of modern software. 4. Be able to use common static code analysis systems. 5. Be able to document source code using Doxygen. 6. Know main approaches to software testing.
Required prior and related subjects: Basics of computer science. Programming.
Summary of the subject: The "Software Engineering" discipline should provide systematic knowledge of the concepts, methods and means of creating modern software, promote the mastering of basic programming technologies, develop skills in working with modern software design tools and provide an opportunity to gain practical skills in using these tools.
Опис: Common approaches to software development and project management. Version control systems. Short overview of common programming languages. Main requirements to the source code of modern software. Documenting source code of modern software. Object-oriented and functional programming. Introduction to domain-driven design. Common approaches to software testing. Software profiling. Development of multithreaded software. Development of graphical user interfaces.
Assessment methods and criteria: Laboratory work reports and current control – 20% Examination (written and spoken components) – 80%
Критерії оцінювання результатів навчання: 1. Distribution of points subject to the completion of the study plan, completion of all control works and the calendar plan for the performance of laboratory works, otherwise, according to the results of the semester control, the student is considered not certified. 2. The maximum number of points for the assessment of current control (CC) of knowledge per semester is 20 points. 3. Examination control is conducted in written and oral form. 4. The maximum number of points for evaluating the examination control is 80 points. 5. The student also completes the exam before the commission in written and oral form, with the questions and answers being recorded in the examination letter. 6. Students are admitted to the exam provided they complete the curriculum (including all laboratory work).
Порядок та критерії виставляння балів та оцінок: 100-88 points - certified with an “excellent” grade - High level: the student demonstrates an in-depth mastery of the conceptual and categorical apparatus of the discipline, systematic knowledge, skills and abilities of their practical application. The mastered knowledge, skills and abilities provide the ability to independently formulate goals and organize learning activities, search and find solutions in non-standard, atypical educational and professional situations. The applicant demonstrates the ability to make generalizations based on critical analysis of factual material, ideas, theories and concepts, to formulate conclusions based on them. His/her activity is based on interest and motivation for self-development, continuous professional development, independent research activities, implemented with the support and guidance of the teacher. 87-71 points - certified with a grade of “good” - Sufficient level: involves mastery of the conceptual and categorical apparatus of the discipline at an advanced level, conscious use of knowledge, skills and abilities to reveal the essence of the issue. Possession of a partially structured set of knowledge provides the ability to apply it in familiar educational and professional situations. Aware of the specifics of tasks and learning situations, the student demonstrates the ability to search for and choose their solution according to the given sample, to argue for the use of a particular method of solving the problem. Their activities are based on interest and motivation for self-development and continuous professional development. 70-50 points - certified with a grade of “satisfactory” - Satisfactory level: outlines the mastery of the conceptual and categorical apparatus of the discipline at the average level, partial awareness of educational and professional tasks, problems and situations, knowledge of ways to solve typical problems and tasks. The applicant demonstrates an average level of skills and abilities to apply knowledge in practice, and solving problems requires assistance, support from a model. The basis of learning activities is situational and heuristic, dominated by motives of duty, unconscious use of opportunities for self-development. 49-00 points - certified with a grade of “unsatisfactory” - Unsatisfactory level: indicates an elementary mastery of the conceptual and categorical apparatus of the discipline, a general understanding of the content of the educational material, partial use of knowledge, skills and abilities. The basis of learning activities is situational and pragmatic interest.
Recommended books: 1. Eric Evans, Domain-Driven Design: Tackling Complexity in the Heart of Software, Addison-Wesley Professional, 2003, – 560 p. 2. Erich Gamma, Richard Helm, et al., Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley Professional, 1994, – 416 p. 3. Martin Fowler, Kent Beck, et al., Refactoring: Improving the Design of Existing Code, Addison-Wesley Professional, 1999, – 431 p. 4. Martin Fowler, Patterns of Enterprise Application Architecture, Addison-Wesley Professional, 2002, – 560 p. 5. Robert C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship, Pearson, 2008, – 464 p. 6. Robert C. Martin, Clean Architecture: A Craftsman's Guide to Software Structure and Design, Pearson, 2017, – 432 p. 7. Robert C. Martin, Clean Agile: Back to Basics, Pearson, 2019, – 240 p. 8. Robert C. Martin, The Clean Coder: A Code of Conduct for Professional Programmers, Pearson, 2011, – 256 p. 9. Scott Chacon and Ben Straub, Pro Git, 2nd ed., Apress, 2014, – 440 p. 10. Steve McConnell, Code Complete: A Practical Handbook of Software Construction, Second Edition, Microsoft Press, 2004, – 960 p.
Уніфікований додаток: Lviv Polytechnic National University ensures the realization of the right of persons with disabilities to obtain higher education. Inclusive educational services are provided by the Service of accessibility to learning opportunities "Bez obmezhen", the purpose of which is to provide permanent individual support for the educational process of students with disabilities and chronic diseases. An important tool for the implementation of the inclusive educational policy at the University is the Program for improving the qualifications of scientific and pedagogical workers and educational and support staff in the field of social inclusion and inclusive education. Contact at: St. Karpinsky, 2/4, 1st floor, room 112 E-mail: nolimits@lpnu.ua Websites: https://lpnu.ua/nolimits https://lpnu.ua/integration
Академічна доброчесність: The policy regarding the academic integrity of the participants of the educational process is formed on the basis of compliance with the principles of academic integrity, taking into account the norms "Regulations on academic integrity at the Lviv Polytechnic National University" (approved by the academic council of the university on June 20, 2017, protocol No. 35).