. "Software Engineering"@en . . . . . . . . "Software engineering and design"@en . . "5" . "No Description\n\nOutcome:\nAs specific objectives, by the end of the course students should be able to:\r\n\r\nUnderstand the benefits of object-oriented analysis and design, its concepts and processes.\r\nBe familiar with formal design tools for object orientated design and analysis.\r\nRecognise and understand some frequently used design patterns.\r\nBe aware of the process involved in user interface design.\r\nUnderstand software development methodologies.\r\nUnderstand the main issues and processes necessary to achieve effective software product development.\r\nBe familiar with main challenges of software innovation and the strategies and opportunities to address them.\r\n* This module is shared with 4th Year undergraduates from the Department of Engineering." . . "Presential"@en . "TRUE" . . "Structured programming"@en . . "10" . "Programming fundamentals: variables, types, expressions and assignment; simple I/O; Conditional and iterative control structures (if statements and while loops); Strings and string processing; Use of class APIs for creating objects and calling methods; Understanding data abstraction and encapsulation; Problem solving: understanding and developing algorithms; Implementing algorithms as simple programs. Introduction to algorithms and data structures. Review of elementary programming concepts suitable for the implementation of abstract data types (operators, types and expressions; control of flow; methods; recursion; input & output); Algorithms for searching: linear, bounded linear and binary searches; Algorithms for sorting: selection, insertion, bubble and quick sorts; Fundamental linear data structures: stacks, queues, linked lists; Object-oriented programming: encapsulation and information hiding, classes, interfaces, class hierarchies, inheritance, polymorphism, basic exception handling; Analysis of basic algorithms.\n\nOutcome:\r\nOn successful completion of the module, students should be able to:\r\nUnderstand, evaluate and create algorithms.\r\nWrite structured programs.\r\nDebug runtime errors.\r\nSelect and implement Data Structures." . . "Presential"@en . "FALSE" . . "Software engineering fundamentals"@en . . "4" . "The aim of the course is to give students the knowledge of software development processes, the basic skills needed to create software development documentation and to be able to present the results of the work, as well as to be able to analyze software by exiting documentation. The tasks of the course are - To provide the fundamentals of software development theory and practice. In theoretical part to discuss information system development methods and tools: requirements collection and analysis, system design and analysis, coding, testing, deployment and maintenance. To discuss software engineering standards. In practical part in small teams, design a small information system. The languages of instruction are Latvian and English.\nResults Knowledge: 1. Explains the main concepts used in key software engineering processes. Describes the life-cycle models of software development, the principles of project development teams. 2. Describe the types of software requirements and its modelling capabilities. 3. Describes the metrics used to measure the effort of projects. 4. Describes the software design modelling options. 5. Explains the key principles for software quality assurance. Describes the most important software testing approaches, techniques, techniques. 6. Explains the impact of compliance with the principles of labour safety and ergonomics on the preservation of human health and life. Skills: 7. Analyses the team's work in the development of the system, assess the risks and the possibilities for reducing them, forecast the amount of future effort and plan it jointly with the group 8. Takes part in s reasoned debates in the group on the requirements of the system to be developed and the options for design solutions. 9. Presents a specification of software requirements developed in the group and the selected solutions in the design. Competence: 10. Assesses the compliance of developed software specifications and design documentation with industry standards. 11. Assesses the impact of developed software specifications and design documentation on the quality of the software product. 12. Gives reasoned proposals to improve software specifications and design quality." . . "Presential"@en . "TRUE" . . "Foundations of software engineering"@en . . "3" . "Objectives and Contextualisation\nThe subject provides an introduction to the foundations of software engineering, to object-oriented analysis and design, and to object-oriented programming.\n\nThe basic training objectives of the subject are:\n\nIntroducind the student in the key concepts of software engineering, seeing the singularities and differences with regard to civil engineering.\nIntroducing the key concepts regarding the analysis and design of object-oriented software.\nLearning an object-oriented programming language. Specifically C ++.\n\nCompetences\nElectronic Engineering for Telecommunication\nDevelop personal work habits.\nDevelop thinking habits.\nLearn new methods and technologies, building on basic technological knowledge, to be able to adapt to new situations.\nWork in a team.\nTelecommunication Systems Engineering\nDevelop personal work habits.\nDevelop thinking habits.\nLearn new methods and technologies, building on basic technological knowledge, to be able to adapt to new situations.\nWork in a team.\nLearning Outcomes\nApply the basics of software engineering to the development of software applications.\nCritically evaluate the work done.\nDevelop independent learning strategies.\nDevelop scientific thinking.\nDevelop the capacity for analysis and synthesis.\nKnow and use the basics of programming in telecommunication networks, systems and services.\nManage available time and resources.\nManage available time and resources. Work in an organised manner.\nUse the basics of the architecture and methodology of design, verification and validation of software.\nWork autonomously.\nWork cooperatively.\n\nContent\nA. INTRODUCTION TO SOFTWARE ENGINEERING\nA1. Introduction: Is software engineering required? Basic Concepts\n\nSubject presentation.\nSoftware engineering vs. Civil Engineering.\nSoftware development cycle stages.\nSoftware development processes.\nSoftware Project planning.\nA2. Analysis and Design oriented to objects\n\nEffective modularization of a software.\nObject-oriented design.\nUML: Class Diagram.\nB. OBJECT ORIENTED PROGRAMMING IN C++\nB1. Classes, Attributes, and Methods\n\nDeclaration and definition of the basic elements.\nClass vs. Object.\nAccessibility: attributes and methods public and private.\nFunction overloading\nB2. Enumerates. Function call mechanism. Dynamic Memory\n\nEnumerates\nFunction call mechanism.\nInline features\nPassing arguments by reference / constant reference.\nAllocation /dealocation of memory.\nPointers arithmetic.\nB3. Constructors and Destructors. Operators\n\nTypes of constructors.\nDestructors.\nBinary operators.\nThe assignment operator.\nObjects and the this pointer.\nThe friend concept.\nStreams. Operators >> and <<.\nB4. Inheritance, Polymorphism and Genericity\n\nHierarchy. Generalization vs. Specification.\nAccessibility to 'protected' attributes and methods.\nStatic and dynamic binding.\nVirtual functions.\nTemplate functions.\nTemplate classes." . . "Presential"@en . "TRUE" . . "Software engineering"@en . . "6.0" . "This module builds on the basic introduction to Engineering Programming and highlights the importance and need for software engineering as part of the design of complicated autonomous UAV system. The module teaches how to use common software engineering processes and models for developing software as well as common project development processes. Python programming language is used in this module which will be used to implement a mini project to programme a UAV to demonstrate the application of common design patterns and validating software through testing and run-time checking." . . "Presential"@en . "TRUE" . . "Software engineering"@en . . "6.0" . "Prerequisites\nProficiency of a programming language, preferably an object-oriented programming language\n\nObjectives\nThis course aims to acquaint students with the engineering and management methods necessary for the cost-effective development and maintenance of high-quality complex software systems. In particular, this UC discusses the software development lifecycle, from requirements to program maintenance. Leverage the knowledge acquired in other disciplines in the broader context of the software development process. Motivate for software development as an engineering, which integrates the technological aspects of computing with the social and human factors. At the end of the semester, students should: - be capable of describing the principles, concepts and practices of software engineering and software life cycle; - be acquainted with and be capable of applying the required tools and techniques to carry out and manage the various tasks in the development of high quality software; - be capable of explaining the development methods and processes of different types of software systems.\n\nProgram\nIntroduction to Software Engineering. Software Design. Software Development. Software Development Processes. Requirements Engineering. Project Management. Verification and Validation. Software Evolution.\n\nEvaluation Methodology\nThe evaluation of the Software Engineering course is composed by the following elements: - One project, developed under continuous evaluation, 6 elements per group, with several delivers during the semester: 50% of the final grade, minimum grade 8.0 in 20; - One theoretical exam: 50% of the final grade, minimum grade 9.0 in 20. 50% of the exam will focus on the theory and 50% will focus on the project component. Final Grade The final grade is calculated according to the formula: FinalGrade = 0.5 x E + 0.5 x P - if E < 9.0 => RE - if P < 8.0 => RE - if FinalGrade < 9.5 => RE. Grades from previous years are not accepted (cf. MTP area and Coordination recommendation)\n\nCross-Competence Component\nIn this UC, the capacity of teamwork (intrapersonal abilities) and the ability to explain the work (interpersonal abilities) that was performed by the group is trained. Innovative and critical thinking skills (e.g., problem solving strategies and critical thinking) are also trained and evaluated. These capabilities are evaluated in the project component that each group of 6 students has to perform.\n\nLaboratorial Component\nThe laboratory component aims to promote the best practices of design and implementation of a web software applicagtion as a teamwork. The laboratory component is also dedicated to the practical application and deepening of the concepts and techniques presented in theoretical classes, through more focused exercises as well as in the practical work of the discipline.\n\nProgramming and Computing Component\nIn the program where this UC is offered are ensured the components of Computing and Programming according to MEPP 2122.\n\n\nMore information at: https://fenix.tecnico.ulisboa.pt/cursos/lerc/disciplina-curricular/845953938490020" . . "Presential"@en . "TRUE" . .