Course details
Practical Aspects of Software Design
IVS Acad. year 2020/2021 Summer semester 5 credits
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.
Guarantor
Deputy Guarantor
Language of instruction
Completion
Time span
Assessment points
Department
Lecturer
Dytrych Jaroslav, Ing., Ph.D. (DCGM FIT BUT)
Malík Viktor, Ing. (DITS FIT BUT)
Regéciová Dominika, Ing. (DIFS FIT BUT)
Smrž Pavel, doc. RNDr., Ph.D. (DCGM FIT BUT)
Švec Tomáš, Ing. (DCGM FIT BUT)
Instructor
Dočekal Martin, Ing. (DCGM FIT BUT)
Doležal Jan, Ing. (DCGM FIT BUT)
Dytrych Jaroslav, Ing., Ph.D. (DCGM FIT BUT)
Fajčík Martin, Ing. (DCGM FIT BUT)
Kadlubiak Kristián, Ing. (DCSY FIT BUT)
Ondřej Karel, Ing. (DCGM FIT BUT)
Rydlo Štěpán, Ing. (DITS FIT BUT)
Sakin Martin, Ing. (DITS FIT BUT)
Veigend Petr, Ing. (DITS FIT BUT)
Course Web Pages
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 user's needs.
Generic learning outcomes and competences
Students will learn to work on projects. They will also improve their knowledge of modern development and documenting tools.
Learning objectives
To understand the process of software development in teams and to get acquainted with real applications that help to create and documenting component-based projects, to learn how to easily prototype graphical user interfaces, what are preconditions of successful free software and usability measurement.
Why is the course taught
The course IVS was established as a preparatory course for student collaboration on research at the FIT. It provides students with insight into the entire process of SW development from planning, design, implementation and testing to final product deployment in the customer's company. The graduate will know what each stage of SW development involves and what tools are used in it, which will allow him/her to be better oriented when choosing his / her specialization and other elective courses. An essential part of the course is the preparation of students for teamwork on SW development and familiarization with version control systems, as these are basic knowledge and skills for developing any larger SW.
Prerequisites
Study literature
- Ken Schwaber and Mike Beedle Agile Software Development with Scrum Addision-Wesley, 2002
- S. A. Babkin The Practice of Parallel Programming Create Space, 2010. https://www.createspace.com/3438465
- BATH, Graham a Judy MCKAY. The software test engineer's handbook. Santa Barbara: Rocky Nook, 2008, xviii, 397 s. ISBN 978-1-933952-24-6.
- STEPHENS, Matt a Doug, ROSENBERG. Design Driven Testing. 2010. ISBN 978-1-4302-2944-5.
Fundamental literature
- Dustin Boswell, Trevor Foucher: The Art of Readable Code. O'Reily, 2010. https://www.oreilly.com/library/view/the-art-of/9781449318482/
- J. Pérez López, L. Ribas i Xirgo: Introduction to Software development, 2010. http://ftacademy.org/sites/ftacademy.org/files/materials/fta-m7-fs_development.pdf
- Scott Chacon: Pro Git https://git-scm.com/book/en/v2
- Baumann, H.; Grässle, P.; Baumann, P.: UML 2.0 in Action: A project-based tutorial. Birmingham: Packt Publishing, Prosinec 2009, ISBN 1-904811-55-8. Download
- Fowler, M.: Refactoring: Improving the Design of Existing Code (2nd Edition), 2018.
Syllabus of lectures
- Introduction, practical rules for the writing of sustainable code and effective usage of IDE
- Software testing, TDD (Test-Driven Development) and its usage in team development
- Teamwork, communication, team data sharing, basics of project design and planning
- Distributed version control, GIT
- Documentation types, system documentation generated from the code, Component-based development and cross-platform libraries
- Code assembling, Make, Cmake a Qmake.
- User interfaces
- Issue tracking, debugging, bug tracking and QA
- Mid-term test
- Program deployment
- Algorithm optimization, parallelization and profiling
- Programming languages and paradigms, SWIG and integration of legacy code
- Invited experts from companies
Syllabus - others, projects and individual work of students
- Test definition (18 points)
- The project focused on team development (52 points)
Progress assessment
- Mid-term test (30 points)
- Projects (70 points in total)
Exam prerequisites
At least 50 points.
Schedule
Course inclusion in study plans