Web site of Department of Software Engineering of Faculty of Mathematics and Informatics at Sofia University

Software technologies

Courses' annotations

Compulsory Courses

Middleware

Lecturer: Prof. Dr. Sylvia Ilieva, Assoc. Prof. Dessislava Petrova-Antonova
Classes: 30 + 30
Credits: 5

The main objective of the course is to initiate in concepts referring to distributed systems, to present different middleware categories endorsing on object-oriented middleware. Additionally, the object models and architectures of the most widespread object-oriented middleware are discussed. The course also presents the software services as a conception and the technologies and standards referring to them.
After the course completion it is expected that the students will gain skills for: comparative analysis implementation and suitable middleware selection; middleware technologies application with software systems development; implementation of their own software service as well as integration of software services.

OO analysis and design of distributed software system with UML

Lecturer: Assoc. Prof. Boyan Bontchev
Classes: 30 + 30
Credits: 5

Unified modeling language (UML) is a notation for object-oriented analysis and design, and an excellent tool for business process and system modeling. The course presents the complete UML notation – description of the use cases and class diagrams with different type of associations, aggregations and multiple inheritance, the newer UML concepts like stereotypes and properties. Extensions that some UML environments support are also included.

Through lectures and laboratory exercises with using of Visual Paradigm® as environment for practical design with UML 2.0, the course is a base for conceptual and practical object-oriented analysis and design. Thus it prepares developers for applying of the UML standard in the software systems development. The course is completely practical and it is oriented towards the needs of design automation in the software companies. After the course completion the students will be able to:

  • describe business software requirements by UML;
  • develop complete UML models of information systems by Visual Paradigm;
  • generate programming code from UML models and back to Visual Paradigm environment;
  • use UML modelling and Visual Paradigm for creation of documentation for developed software systems;
  • work with modern tools for business modelling.

Project management

Lecturer: Dr. Vladimir Lilov
Classes: 30 + 30
Credits: 6

Project management is a relatively new profession. Its basic principles have been approved at the beginning of the 90's of the last century. Now the project management covers all levels and activities of corporations and organizations. The projects may include only one person as well as thousands people. Their duration could be form several weeks to more than five years. The projects could be implemented from one department as well as international corporations integrating different cultures and nationalities. At this moment the successful project implementation is crucial for their strategic growth because the projects and their management are basis for realization of strategic and tactical tasks concerning the business and organizations outside it.
The course is a base for obtaining knowledge of the modern principles of project management. The program is focused on the main objectives and tasks of business and organization management and their application in different level of corporations' and management. The course endorses the fundamental elements in the project management: project planning, management of project scope and tasks, creation of project plan, control of expenditures and budget, provision of human resources and project quality.
Through lectures, case studies, test examples and tasks, the students will gain basic knowledge as well as comprehension of the key factors for successful project management.

Software architectures

Lecturer: Assoc. Prof. Alexander Dimov
Classes: 30 + 15
Credits: 5

The main objective of the present course is to make students familiar with terms relevant to software architectures and methods for design, documentation and analysis of software architectures. The course's themes are starting point for future practical work on development of huge software projects. Additional objective of the course in conjunction with the other disciplines is a creation of a base for complete comprehension of software applications development.

After the course completion the students will have:

  • vision about the process of implementation and documentation of software architectures and will be able to participate in that process;
  • idea about software architecture analysis, software architecture quality estimation and will be able to participate in the process of analysis;
  • vision about process of software development and architecture implementation.

Software engineering

Lecturer: Prof. Dr. Sylvia Ilieva
Classes: 45 + 30
Credits: 6

The course aims to extend the students' learning about concepts and methods that are needed for development of large software systems. Its objective is to gives new knowledge about techniques and processes concerning development of complex software systems. Other objective is the achievement of wide comprehension of the Software engineering subject. A part of the themes is devoted to agile methodologies for software systems development, familiarizing the students with the current state of agile methodologies, starting with the history of that new tendency and its basic principles and notability. It is included comparative analyze of the actuality agile methodologies and more specially Extreme programming (XP) is discussed. It is considered advisable XP practices; planning, documentation and management of XP projects as well as ways for agile methodologies applying. The experience and best practices of XP application at Bulgarian software companies are presented.

After the course completion the students will be able to:

  • understand basic questions referring to process of software systems development;
  • create and manage a small project for software system development;
  • read and understand a professional and technical literature related to software engineering.

Software systems modelling

Lecturer: Assoc. Prof. Dr. Olga Georgieva
Classes: 30 + 15
Credits: 5

The science fundamentals of the software engineering require using of precise abstract models and logics for thinking with the purpose of analysis, testing, development and transformation of reliable software systems. There are existed several basic models and logics that have prevailed during the last years and are important for software systems studying. That knowledge is a subject of the present course. It includes studying of standard models for presentation of sequence and parallel systems like state machines, algebras and approaches for tracing of artefacts relationships. It is presented how different logics can be used for determination of the qualities of the software system like correct functioning, entire coordination and dead-lock state definition.
The learning and skills in Software systems modelling create preconditions for wide students' realization in the analysis, development and exploitation of software systems applied in different spheres of the economics, manufacture and administration as well as gaining of new knowledge and opportunities according to their own needs and interests.

After the course completion the students will:

  • learn advantages and disadvantages of different models and logics for software systems description according to their concrete application;
  • be able to apply in practice the abstract models and logics for software systems development while choosing the best suitable systems class;
  • be able to apply formal methods for analysis of software systems characteristics.

Complementary Courses

Component based software engineering

Lecturer: Prof. Dr. Sylvia Ilieva
Classes: 30 + 30
Credits: 5

The main objective of the course is to present concepts, paradigms, and reusable technologies for software systems development. Additionally the base terminology and the principles of the component-based software engineering will be introduced. During the lectures the difference between traditional software systems development and component and service based architectures. In this direction the course is natural extension of the course from the first semester – Software technologies. Finally, the students get acquainted with the basic application areas of component-based software engineering – embedded systems, web systems etc.

After the course completion the students will be able to:

  • understand basic questions concerning the process of software systems development based on components and services;
  • develop a component and integrate a complete system based on components;
  • read and understand professional and technical literature referring to component-based software engineering.

DataWarehousing

Lecturer: Tzvetelina Mechkarova
Classes: 30 + 30
Credits: 5

The course introduces students to the systematic approach for data warehouse database design. The participants will learn to define user requirements and identify when is necessary to apply data warehousing, and will understand the differences between normalized databases and data warehouses. At the end of the course special attention will be paid to ER diagram transformation into initial database design.
The course will extend students' concepts for standard database design, processing methods and database using and querying. These skills are extremely needed for users to take decisions in а concurrent business environment. The course gives the students knowledge about the method of work of data warehouses and their usage in the modern technologies.
Provided practical exercises will be oriented toward acquisition of skills for data analysis and development of complete data warehouse solutions.

Java Server-Side Programming

Lecturer: Assoc. Prof. Dr. Boyan Bontchev
Classes: 30 + 30
Credits: 5

During the Java expansion as a language for development of server-side applications, the significance of Java platform and its model for multitiered distributed applications are growing more and more. The course's objective is to introduce Java EE 5 (JEE5) architectures and to show how they can be used in development of Internet and client-server applications. A special attention is paid to JEE5 distributed multitiered applications and different Java application components. The client, web and business layers of typical multitiered Java applications are discussed.
The course presents the most important Java EE programming interfaces – fundamentals of Java servlet programming with examples of specific HTTP servlet classes, Java Server Pages (JSP) and API techniques, the specifics of JSP models, their connection and Java beans usage. The course also discuses Java Server Faces (JSF) technology, Enterprise Java Beans (EJB) wit examples of business layer components, EJB types, EJB persistent and EJB components access, web services and other Java EE aspects. For each of presented technologies definitions, ways of using and great number of practical examples are given.
The course is meant to give students practical skills in use of SAP NetWeaver Application Server, Tomcat and JBoss application servers. Through lectures and laboratory exercises with using of modern application environment (SAP NetWeaver Studio and Eclipse) the course train the students in JEE5 platform applying in case of server software systems development and provide solid conceptual and practical base for analysis and design of multitiered applications.

Legal issues in IT

Lecturer: Dr. Georgi Dimitrov
Classes: 30 + 15
Credits: 4

The goal of the present course is to give a necessary minimum of knowledge in the legal aspects of programming technologies in the context of the software engineering. The software development and deployment, the software functioning in a certain environment, database design according to labour agreement and even usage of IT solutions require the young specialist to have clear view of their legal rights and obligations. This will protect their interests in the new business circumstances and ensure them the opportunity to gain knowledge of the problem aspects in the e-world like hacker attacks, illegal content, piracy, plagiarism etc.

After the course completion the students will be able to:

  • understand the meaning of copyright;
  • understand the meaning of the different licenses and grant agreements for right of use of software products, databases etc.;
  • understand the problems relevant to illegal content and software piracy;
  • protect themselves from legal problems that can lead to criminal pursuit (computer crimes);
  • know the different approaches for software projects development and solutions in the area of e-government, e-learning, e-commerce, portals, information web sites etc.;
  • understand validity of the different agreements that are contacted via Internet for the purposes of e-commerce and other relations(click-wrap, shrink-wrap etc.);
  • know the legal requirements for e-authentication and e-transaction identification;
  • know the problems in case of software usage for online communication (ICQ, IRC, Forums, WhiteBoards, E-mails, VideoConf);
  • know the problems in case of open source software;
  • understand the legal requirements for protection of personal data and qualified information;
  • understand the role of the standards regarding to software engineering.

Modern markup languages

Lecturer: Prof. Dr. Boyan Bontchev
Classes: 30 + 30
Credits: 5

XML (eXtensible Markup Language) is a general-purpose specification for definition of semantic markers for structuring of documents and description of document content. XML like a meta-markup language is a base for different technologies that are used in the progress of many new problem-oriented specific semantic languages. XML has a huge significance as a tool for business integration and for new level of quality of human-machine interface.
The course presents complete family of XML technologies starting from HML and Cascading Style Sheets. It is laid stress on learning of DTD (Document Type Definitions), XSchema (XML Schema), DOM, SAX, StAX and XSLT (eXtensible StyleSheet Language Transformations) and XPath. The course introduces comparatively new technologies like XLinks и XPointers. The lecture material finishes with presentation of XML based languages and web services using.

Through lectures and laboratory exercises with using of different environments for XML documents creation, the course prepares students for practical applying of XML standards in software systems development. After the course completion the students will be able to:

  • apply style sets to XML documents;
  • describe semantics of XML documents by DTD and Xschema;
  • manipulate XML documents by DOM, SAX и StAX;
  • transform XML documents by XSLT;
  • use XLinks and Xpointers;
  • develop Web services applications.

Programming software applications with Java

Lecturer: Prof. Dr. Boyan Bontchev
Classes: 30 + 30
Credits: 5

During the last decade Java has been approved as object-oriented language and a platform for development of different types of software applications – desktop, network, distributed and concurrent. Furthermore, it is clear that Java can be used for development of embedded applications for manual and mobile devices as well as real time applications. Due to expressive power and universality of the language as well as its portability and advance platform a wide range of client and system software has been developed.

The present course has the following objectives:

  • to introduce Java to the students as object-oriented language for development of different types of software applications – desktop, network, distributed and concurrent;
  • to present generally introduction in Java 1.5 and 1.6 – description of base classes and libraries, renewed language versions Java Standard Edition 1.5 (J2SE5) and 1.6 (Java SE 6), opportunities for development of applications with a rich graphical interface, the foundations of Java Data Base Connectivity (JDBC) 2.0-3.0 with a short introduction of SQL and JDBC driver usage, tools for development of network, embedded and distributed systems;
  • through lectures, seminars and laboratory exercises with using of Eclipse and/or SAP NetWeaver Studio™ as programming environment, the course is a starting point for obtaining of theoretical and practical skills needed for work at the modern software companies using Java technologies.

The course is focused on coverage of the most aspects of Java SE (Standard Edition). It is a base for the second course from the master program in Software technologies – Java server-side programming.

Software Design Patterns

Lecturer: Prof. Dr. Boyan Bontchev
Classes: 30 + 30
Credits: 5

Software design patterns have crucial meaning for complex problems solving in the course of the development of industrial programming applications. Object-oriented design patterns concern design, communication and synchronization between objects, and suggest elegant decision for solving model design problems giving opportunity for repeatedly using.
The present course is focused over practical aspects of pattern applying in software design and implementation. The conceptions in hand cover wide area of knowledge that is needed for development, deployment and support of modern decentralized software systems. After review of life cycle of the software design, the students will be acquainted with different type of design patterns and their reusing in various applications. The patterns are grouped in three main groups – constructive, structural and behavioral. Their representation mainly become with unified modeling language (UML). Special attention is paid to development, documentation, testing and reusing of patterns and patterns libraries.
The software specialists, who are responsible for architecture design and complex software products implementation, except ordinary preparation as programmers have to get a special preparation in the field of design patterns applying. The goal of the course is to introduce software design patterns to students and to give them a practical experience for the software industry needed.

Testing of software systems

Lecturer: Assoc. Prof. Dr. Dessislava Petrova-Antonova
Classes: 30 + 30
Credits: 5

The goal of the course is to is to make students familiar with the foundations and place of activities concerning software systems testing during the projects life cycle. Students will gain knowledge of definition, design and realization of the tests needed for examine the behavior of information systems according to functionality and technical requirements. They will become acquainted with the different techniques for testing and its application according to project specificity. Practical experience will be gain for the whole system testing, testing of business processes and real system performance, security testing, system testing after failure removing as well as system testing during critical situations.
The provided exercises will be focused on acquisition of practical skills for planning, developing, optimization and execution of tests using MS Visual Studio 2010 and MS Test Manager 2010.
Except the concrete knowledge of testing, the course will extend the concept of its participants for the processes of software systems development and relation between testing team and other project members.

Copyrights © 2013 & All Rights Reserved.
Go to Top