Title:

Practical Aspects of Software Design

Code:IVS
Ac.Year:2017/2018
Term:Summer
Curriculums:
ProgrammeBranchYearDuty
IT-BC-3BIT1stElective
Language:Czech
Public info:http://www.fit.vutbr.cz/study/courses/IVS/public/
Credits:5
Completion:classified credit
Type of
instruction:
Hour/semLecturesSem. ExercisesLab. exercisesComp. exercisesOther
Hours:2600026
 ExaminationTestsExercisesLaboratoriesOther
Points:0300070
Guarantee:Smrž Pavel, doc. RNDr., Ph.D., DCGM
Lecturer:Dytrych Jaroslav, Ing., Ph.D., DCGM
Grochol David, Ing., DCSY
Smrž Pavel, doc. RNDr., Ph.D., DCGM
Vaverka Filip, Ing., DCSY
Wiglasz Michal, Ing., DCSY
Instructor:Bartl Vojtěch, Ing., DCGM
Dytrych Jaroslav, Ing., Ph.D., DCGM
Privalov Vladimir, DCGM
Špaňhel Jakub, Ing., DCGM
Vaverka Filip, Ing., DCSY
Wiglasz Michal, Ing., DCSY
Faculty:Faculty of Information Technology BUT
Department:Department of Computer Graphics and Multimedia FIT BUT
Prerequisites: 
Introduction to Programming Systems (IZP), DIFS
Introduction to Software Engineering (IUS), DITS
Schedule:
DayLessonWeekRoomStartEndLect.Gr.St.G.EndG.
TuelecturelecturesD10508:0009:501BIAxxxx
TuelecturelecturesD10508:0009:501BIBxxxx
TuelecturelecturesD10508:0009:502BIAxxxx
TuelecturelecturesD10508:0009:502BIBxxxx
TuelecturelecturesD020608:0009:501BIAxxxx
TuelecturelecturesD020608:0009:501BIBxxxx
TuelecturelecturesD10508:0009:503BITxxxx
 
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.
Description:
  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, practical rules for writing of sustainable code and effective usage of IDE
  2. Software testing, TDD (Test-Driven Development) and its usage in team development
  3. Team work, communication, team data sharing, basics of project design and planning
  4. Distributed version contol, GIT
  5. Documentation types, system documentation generated from the code, Component-based development and cross-platform libraries
  6. Code assembling, Make, Cmake a Qmake.
  7. User interfaces
  8. Issue tracking, debugging, bugtracking and QA
  9. Mid-term test
  10. Program deployment
  11. Algorithm optimization, paralelization and profiling
  12. Programming languages and paradigms, SWIG and integration of legacy code
  13. Invited experts from companies
Syllabus - others, projects and individual work of students:
 
  1. Test definition (18 points)
  2. Project focused to team development (52 points)
Fundamental literature:
 
  • Dustin Boswell and Trevor Foucher: The Art of Readable Code O'Reily, 2010. http://readable-code.labs.oreilly.
  • J. Pérez López and L. Ribas i Xirgo: Introduction to Software development, http://ftacademy.org/materials/fsm/7#1
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
Progress assessment:
  
  • Mid-term test (30 points)
  • Projects (70 points in total)
Exam prerequisites:
  At least 50 points.