Course detail

Practical Aspects of Software Design

FIT-IVSAcad. year: 2018/2019

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.

Learning outcomes of the course unit

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.

Prerequisites

Not applicable.

Co-requisites

Not applicable.

Recommended optional programme components

Not applicable.

Recommended or required reading

  • Ken Schwaber, 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


Planned learning activities and teaching methods

Not applicable.

Assesment methods and criteria linked to learning outcomes

  • Mid-term test (30 points)
  • Projects (70 points in total)

Exam prerequisites:
At least 50 points.

Language of instruction

Czech, English

Work placements

Not applicable.

Course curriculum

    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)

Aims

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.

Classification of course in study plans

  • Programme IT-BC-3 Bachelor's

    branch BIT , 1. year of study, summer semester, 5 credits, optional

Type of course unit

 

Lecture

26 hours, optionally

Teacher / Lecturer

Syllabus

  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

Project

26 hours, compulsory

Teacher / Lecturer

Syllabus

  1. Test definition (18 points)
  2. Project focused to team development (52 points)

eLearning