Course details
Practical Aspects of Software Design
IVS Acad. year 2017/2018 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
Language of instruction
Completion
Time span
- 26 hrs lectures
- 26 hrs projects
Assessment points
- 30 pts mid-term test (test part)
- 70 pts projects
Department
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.
Students will learn to work on projects. They will also improve their knowledge on modern development and documenting tools.
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.
Recommended prerequisites
Prerequisite knowledge and skills
There are no 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
Fundamental literature
- Dustin Boswell, Trevor Foucher: The Art of Readable Code. O'Reily, 2010. http://readable-code.labs.oreilly
- J. Pérez López, L. Ribas i Xirgo: Introduction to Software development. http://ftacademy.org/materials/fsm/7#1
- Scott Chacon Pro Git http://knihy.nic.cz/files/nic/edice/scott_chacon_pro_git.pdf
Syllabus of lectures
- Introduction, practical rules for writing of sustainable code and effective usage of IDE
- Software testing, TDD (Test-Driven Development) and its usage in team development
- Team work, communication, team data sharing, basics of project design and planning
- Distributed version contol, 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, bugtracking and QA
- Mid-term test
- Program deployment
- Algorithm optimization, paralelization and profiling
- Programming languages and paradigms, SWIG and integration of legacy code
- Invited experts from companies
Progress assessment
At least 50 points.
Controlled instruction
- Mid-term test (30 points)
- Projects (70 points in total)
Course inclusion in study plans