Course title, code: Software Engineering, GAINBAN-SZOFTTEC-1

Name and type of the study programme: Computer science engineering, BSc
Curriculum: 2021
Number of classes per week (lectures+seminars+labs): 2+0+2
Credits: 5
Theory: 50 %
Practice: 50 %
Recommended semester: 5
Study mode: full-time
Prerequisites: 100 credit + Programming Paradigms and Techniques
Evaluation type: exam
Course category: compulsory
Language: english
Responsible instructor: Prof. Dr. Johanyák Zsolt Csaba
Responsible department: Department of Information Technologies
Instructor(s): Tóth László , Dr. Katona József
Course objectives:
Students will gain an understanding of software design techniques and technologies used in major projects. Be familiar with UML-based modelling and CASE tools.
Course content - lectures:

Managing software development projects. Software lifecycle models. UML. Requirements analysis & specification and related UML diagrams. Design and related UML diagrams. Implementation and related UML diagrams. Database modelling. Prototyping. OO development methodologies. OMT. Booch. RUP. Agile methodologies. Extreme programming. Scrum. Test Driven Development. Software testing and analysis. Version management. Design patterns: single, simple factory, Dependency injection, Decorator, Proxy, Bridge, Adapter, Facade, Composite, Observer, Template, Iterator, Command, MVC, MVP, MVVM. Design patterns. SOLID principles.


Course content - labs:

Project management with MS Project. Identification and assessment of risks (fishbone diagram, Pareto, SWOT). Creation of UML diagrams using Software Ideas Modeller and Visual Studio (use case). Project task consultation. Activity Diagramming using SIM and Visual Studio. Creation of state machine, context, functional architecture, sequence diagrams using SIM. Creation of a single-relationship diagram and entity diagram based on it. Generate database from entity diagram. Scrum. Sequence diagram using Visual Studio. Design patterns I. Design patterns II. Final presentation of projects. Testing. Test Driven Development.

Acquired competences:
Knowledge:

- He/she knows the operations of hardware and software elements, the technology of their implementation, how to solve problems related to their operation and the possibilities of the interconnection of IT and other technical systems. - He/she knows the main programming paradigms, programming languages, development tools. His/her knowledge covers the modelling of IT systems, creation of database based systems, as well as the structure, operation and implementation of computer networks. His/her knowledge covers the characteristics of intelligent systems, the specificity of mobile application development, the management of state-of-the art general purpose operating systems, as well as the aspects of IT security. - He/she is familiar with the important software development methodologies, and the notation systems for IT designs and documentation. - He knows the vocabulary and special terms of the engineering profession in the Hungarian and English languages at least on the basic level.

Skills:

- He/she is able to develop applications, program client-server and WEB, mobile operating systems, develop multiplatform systems. He/she can apply his/her knowledge acquired during his/her study to acquire deeper knowledge in the field of information engineering and to process special literature and solve problems related to information technology. - He/she is able to fulfill analytical, specification, planning, development and operation tasks, in addition, he/she applies the development methodology, debugging, testing and quality assurance methods in his/her field. - He/she cooperates with other computer science engineers, electrical engineers during team work, and with other experts during the analysis and solution of a problems. - He/she can communicate in Hungarian and in English about professional issues, he/she uses the terms of information technology in a creative way. - He/she constantly improves his/her knowledge and keeps up with the development of the computer engineering profession.

Attitude:

- He/she genuinely represents the professional principles of engineering and information technology fields. - He/she aims to see through the entire engineering system not only his/her own field. - He/she is open to acquire new methods, programming languages and develop skills to use them. - He/she is open to get to know other fields which employ information technology tools, and open to work out information technology soultions in cooperation with the experts of other areas. - He/she makes an effort to work efficiently and to high standards.

Autonomy and responsibilities:

- He/she reveals the weaknesses of the technologies applied, risks of processes and initiates measures which reduce them.

Additional professional competences:


Requirements, evaluation, grading:
Mid-term study requirements:
Theoretical exam: 40 points can be obtained, of which at least 20 must be obtained. Project assignment: 60 points, of which at least 30 must be obtained. The assignment is given by the instructor. Opportunities to gain extra points: to be announced separately.
Exam requirements:

To pass the exam, one must meet the minimum requirement (50%) for both the theoretical and practical parts. Examination mark offered: as defined in the Study and Examination Regulations. Examination method: oral

Study aids, laboratory background:

- Lecture notes - available updated after each lecture in the MS TEAMS group/Moodle course of the subject.

Compulsory readings:

Beginning Software Engineering by Rod Stephens https://www.oreilly.com/library/view/beginning-software-engineering/9781119097076/

Recommended readings:

Clean Architecture by Robert C. Martin https://www.amazon.com/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164 The DevOps Handbook (Second Edition) by Gene Kim, Jez Humble, Patrick Debois, and John Willis https://www.amazon.com/DevOps-Handbook-World-Class-Reliability-Organizations/dp/1950508404 Software Engineering: A Practitioner's Approach by Roger S. Pressman & Bruce R. Maxim https://www.amazon.com/Software-Engineering-Practitioners-Roger-Pressman/dp/0078022126 Head First Software Development by Dan Pilone and Russ Miles https://www.amazon.com/Head-First-Software-Development-Brain-Friendly/dp/0596527357 Fundamentals of Software Engineering" by Carlo Ghezzi, Mehdi Jazayeri, and Dino Mandrioli https://www.amazon.com/Fundamentals-Software-Engineering-Carlo-Ghezzi/dp/0133056996 The Pragmatic Programmer by David Thomas and Andrew Hunt https://www.amazon.com/Pragmatic-Programmer-journey-mastery-Anniversary/dp/0135957052