Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    Development of Software Applications

    A tantárgy neve magyarul / Name of the subject in Hungarian: Alkalmazásfejlesztés

    Last updated: 2018. február 27.

    Budapest University of Technology and Economics
    Faculty of Electrical Engineering and Informatics
    Development of software applications
    Course ID Semester Assessment Credit Tantárgyfélév
    VIAUMA09 2 2/1/0/v 4  
    3. Course coordinator and department Dr. Csorba Kristóf, Automatizálási és Alkalmazott Informatikai Tanszék
    Web page of the course
    4. Instructors Dr. Kristóf Csorba, associate professor, Department of Automation and Applied Informatics
    5. Required knowledge
    • Basic knowledge of the C++ language, the object oriented software development and their application in practice.
    • Basic usage of the Linux bash shell and the Windows Command Prompt (cmd.exe).
    6. Pre-requisites
    7. Objectives, learning outcomes and obtained knowledge The goal of the course is to introduce those software development tools and practices which are essential for larger scale development projects. This includes the higher level class libraries, automatic testing and continuous integration tools, version control and documentation tools. Special configuration options of the compiler and deployment processes, and cloud services for server side applications. Beside these, the course emphasizes the use of these techniques in embedded system development and its special requirements.
    8. Synopsis

    Introduction, version control (2 weeks)


    • Introduction, discussion of the requirements, short demos about the material of the course. Localizing the material in the area of electrical engineering.

    • Version control: primarily GIT, shortly compared to other common technologies (SVN, CVS, TFS)

    C++11, Qt and QML (5 weeks)

    • Extensions of C++11

    • Qt basics: development environment, basic concepts

    • Qt and GUI development

    • Qt and communication: accessing embedded systems via Bluetooth and WiFi

    Testing, documentation (1 week)

    • Avoiding and finding bugs, automatic testing

    • Documentation: UML basics, Markdown syntax, Doxygen and JavaDoc.

    Software design principles (4 weeks)

    • C++, object oriented design, KISS approach (Keep It Simple and Stupid).

    • SOLID principles

    • Design patterns: their goals, how to recognize them and some implementation options in C++. Anti patterns.

    Case studies, summary (1 week, or according to the remaining time)

    • Cloud services: PHP+MySQL based server side, REST API based cloud service and their access from client side.

    • Complex case studies.

    (Practical activities are embedded into the lectures, they are not separated into dedicated practical classes.) 
    9. Method of instruction Lecture, practice
    10. Assessment

    During the semester:

    • Practicing the material is deepened by a homework which has to be submitted during the 14th week with timing specified during the semester.
    • Conditions of the signature: submission of the homework on time with sufficiently high quality.

    In the exam period: written exam.

    Conditions of the grading of the semester: signature and successful exam

    The grading takes the homework with 40% and the exam with 60% weight into account.

    The homework may be extended with bonus tasks. Solving these with high quality may result in bonus points for the exam or may offer an automatic grade.


    11. Recaps The homework has to be submitted by the end of the 14th week with the previously specified timing. Extension is possible during the extension week.
    12. Consultations On demand and synchronized with the lecturer.
    13. References, textbooks and resources

    Materials published via the website of the course.

    • Charaf Hassan, Benedek Zoltán, Levendovszky Tihamér: Szoftver technikák egyetemi jegyzet (elektronic form, in hungarian)
    • Scott Chacon: Pro Git, Apress, 2009,
    • John Ferguson Smart: Jenkins: The Definitive Guide. O'Reilly Media, 2011
    • Jasmin Blanchette: C++ GUI Programming with Qt 4 (2nd Edition), Prentice Hall, 2008
    • Robert C. Martin: Clean Code: A Handbook of Agile Software Craftsmanship, Prentice Hall, 2008
    • Steve McConnell: Code Complete: A Practical Handbook of Software Construction, Second Edition, Microsoft Press, 2004
    • Buschmann et al.: A System of Patterns, Willey, 1996
    • Tom Pender, UML Bible, Wiley, 2003


    14. Required learning hours and assignment
    Contact hours 42
    Preparation for lectures 8
    Preparation for practices 10
    Preparation for homework
    Preparation for the exam 35
    15. Syllabus prepared by Dr. Kristóf Csorba, Department of Automation and Applied Informatics