Practical Aspects of Software Design

Public info:http://www.fit.vutbr.cz/study/courses/IVS/public/
Completion:classified accreditation
Type of
Hour/semLecturesSem. ExercisesLab. exercisesComp. exercisesOther
Guarantee:Smrž Pavel, doc. RNDr., Ph.D., DCGM
Lecturer:Dytrych Jaroslav, Ing., Ph.D., DCGM
Otrusina Lubomír, Ing., DCGM
Smrž Pavel, doc. RNDr., Ph.D., DCGM
Instructor:Dytrych Jaroslav, Ing., Ph.D., DCGM
Mrnuštík Michal, Ing., DCGM
Otrusina Lubomír, Ing., DCGM
Polok Lukáš, Ing., DCGM
Schmidt Marek, Ing., DCGM
Šperka Svatopluk, Ing., DCGM
Faculty:Faculty of Information Technology BUT
Department:Department of Computer Graphics and Multimedia FIT BUT
Introduction to Programming Systems (IZP), DIFS
Introduction to Software Engineering (IUS), DITS
Learning objectives:
  To understand the process of software development in teams and to get acquaint with real applications that help creating and documenting component-based projects, to learn how to easily prototype graphical user interfaces, what are preconditions of successful free software and usability measurement.
  Fundamentals of unix philosophy and their use in programming, the role of code testing and the test-driven development, component-oriented code, performance issues, profiling, distributed version management, parallel computing, big data, practical experience of software teams.
Subject specific learning outcomes and competences:
  Students will get acquainted with modern approaches to software development, having successfully completed the course, students will be able to take part in teams developing shared code, will know the tools helping the development of efficient and well-documented code as well as applications better reflecting the users needs.
Generic learning outcomes and competences:
  Students will learn to work on projects. They will also improve their knowledge on modern development and documenting tools.
Syllabus of lectures:
  1. Introduction, motivation, basic concepts, course organization
  2. Practical use of the Unix philosophy in programming
  3. Role of tests in software development
  4. Issue tracking, profiling, debugging
  5. component-based development, cross-platform libraries, dependencies among code, code assembling
  6. System documentation generated from the code
  7. Distributed version control, GIT
  8. Designing user interface, user experience
  9. Usability measurement
  10. Speeding-up computation via parallelization
  11. Alternative programming paradigms
  12. Invited experts from companies
  13. Presentations of project results
Syllabus - others, projects and individual work of students:
  1. Test definition (20 points)
  2. Performance issues identification (15 points)
  3. Mock-up creation (20 points)
  4. Literate programming (15 points)
Progress assessment:
  • Mid-term test (30 points)
  • Projects (70 points in total)
Exam prerequisites:
  At least 50 points.