SubjectsSubjects(version: 945)
Course, academic year 2023/2024
   Login via CAS
Recommended Programming Practices - NPRG043
Title: Doporučené postupy v programování
Guaranteed by: Department of Distributed and Dependable Systems (32-KDSS)
Faculty: Faculty of Mathematics and Physics
Actual: from 2020
Semester: summer
E-Credits: 5
Hours per week, examination: summer s.:2/2, MC [HT]
Capacity: unlimited
Min. number of students: unlimited
4EU+: no
Virtual mobility / capacity: no
State of the course: taught
Language: Czech
Teaching methods: full-time
Teaching methods: full-time
Additional information: https://d3s.mff.cuni.cz/teaching/nprg043
Guarantor: doc. Ing. Lubomír Bulej, Ph.D.
Class: Informatika Mgr. - Softwarové systémy
Classification: Informatics > Programming
Incompatibility : NPRX043
Interchangeability : NPRX043
Is incompatible with: NPRX043
Is interchangeable with: NPRX043
Annotation -
Last update: T_KSI (04.05.2007)
Programming is not just about writing a working program. The quality of a program is (besides design and other functional characteristics) associated with a number of characteristics unrelated to the function of a program. The subject introduces students into programming practices adhering to which leads to construction of high-quality programs. The goal of the subject is to motivate students for adopting such techniques for use in their own programming practice.
Course completion requirements -
Last update: doc. Ing. Lubomír Bulej, Ph.D. (06.10.2017)

To receive credit, the student has to attend the labs and submit assignments within given deadlines.

Literature - Czech
Last update: T_KSI (04.05.2007)

1. McConnell, S.: Code Complete. Microsoft Press, 2nd edition, ISBN 978-0735619678, June 2004.

2. On-line zdroje ve formě článků a esejí k probíranému tématu.

Requirements to the exam -
Last update: doc. Ing. Lubomír Bulej, Ph.D. (06.10.2017)

The final grade is determined by the sum of points from the assignments.

Syllabus -
Last update: doc. Ing. Lubomír Bulej, Ph.D. (16.01.2024)

Software construction and development, essential and accidental complexity.

Interface (API) design, guiding principles, designing API classes and methods.

Class design guidelines, abstraction and encapsulation, inheritance and composition, polymorphism, immutability.

Basic object-oriented design principles (Single responsibility principle, Open-closed principle, Liskov substitution principle, Interface segregation principle, Dependency inversion principle).

Unit testing, testable design.

Design principles in design patterns (strategy, observer, decorator, factory).

Method design guidelines, method as an abstraction, purpose and cohesion, naming and length, input parameters and return values, using exceptions.

Defensive programming, checking inputs, using assertions, error handling.

Guidelines for using variables and constants, naming conventions, fundamental data types.

Structured programming primitives, organization of code, refactoring.

Layout and style, documentation.

 
Charles University | Information system of Charles University | http://www.cuni.cz/UKEN-329.html