Programming 2 - NPRG031
Title: Programování 2
Guaranteed by: Department of Software and Computer Science Education (32-KSVI)
Faculty: Faculty of Mathematics and Physics
Actual: from 2022
Semester: summer
E-Credits: 5
Hours per week, examination: summer s.:2/2, C+Ex [HT]
Capacity: unlimited
Min. number of students: unlimited
4EU+: no
Virtual mobility / capacity: no
State of the course: taught
Language: Czech, English
Teaching methods: full-time
Teaching methods: full-time
Guarantor: RNDr. Tomáš Holan, Ph.D.
RNDr. Martin Pergel, Ph.D.
Adam Dingle, M.Sc.
Class: Informatika Bc.
Classification: Informatics > Programming
Co-requisite : NPRG030
Is co-requisite for: NPRX013, NPRX035, NPRG065, NPRG048
Is incompatible with: NPRM001, NMUG104, NMUG103, NPRM049, NPRM045, NMIN162, NMIN161, NPRG047, NPRM048, NPRM047
Is pre-requisite for: NPRG074, NPGR038, NPRG045, NPRG013, NPRG035, NSWI105, NPRG073, NPRG082
Is interchangeable with: NPRM045, NPRM049, NPRM001
In complex pre-requisite: NPRG041, NPRG041, NPRX041
Opinion survey results   Examination dates   Noticeboard   
Annotation -
A continuation of the basic programming course for students in the first year of Computer Science program. This course expands on the material from NPRG030 Programming I by discussing additional algorithms and their implementation, as well as methods and techniques used in constructing programs. Students will become acquainted with the basics of object-oriented programming, with the programming language C# and with working in modern programming environments. The course presupposes knowledge of material covered in NPRG030 Programming I, and this knowledge is necessary for the exam.
Last update: Töpfer Pavel, doc. RNDr., CSc. (21.02.2018)
Course completion requirements -

The subject is finished by credit and the exam.

Students will receive a credit for this course by successfully completing the following requirements:

  • Active participation in the practice sessions in the computer lab. Generally this means that students must complete the assigned programming exercises, either during the lab session or later on at home.
  • Completion of a semester programming project by the deadline fixed by the instructor.
  • Passing a test at the end of the semester.

Due to the nature of the first two requirements, a failed attempt cannot be repeated as is possible for exams. The instructor may establish conditions whereby a student can make up for missing homework assignments or resubmit their semester project after improving deficiencies that were found the first time around.

A student has three chances to pass the test.

Exam has a written and a oral parts.

Written part requires to design a solution of a difficult programming task, spefically reasoned choice of algorithm, representation of data, decomposition and discussion.

Oral part consists of defence of designed solution and answering the question from the syllabus.

A student has three chances to pass the exam.

Cheating on an exam or a homework assignment may result in automatically failing the course.

Last update: Holan Tomáš, RNDr., Ph.D. (20.10.2022)
Literature -
  • Matt Weisfeld, The Object-Oriented Thought Process, 4th ed., Addison-Wesley, Boston, MA 2013

  • Andrew Hunt, David Thomas, Programátor pragmatik: Jak se stát lepším programátorem a vytvářet kvalitní software, Computer Press, Brno 2007

Last update: Töpfer Pavel, doc. RNDr., CSc. (25.05.2022)
Syllabus -

Fundamentals of object-oriented programming.

Classes, objects, access protection. Principles of encapsulation, inheritance, interfaces, polymorphism.

Class and instance attributes and methods, static and virtual methods, abstract classes and methods.

Functions as parameters and as variable values.

Object-oriented design – general principles (SOLID), examples (discrete simulation).

Event-driven programming – basic ideas and techniques.

Working in a development environment, creating programs with a graphical interface.

Solving larger problems – programming hygiene, version control, creating documentation.

The language labyrinth – comparing major object-oriented languages (C#, C++, Java, Python).

Last update: Holan Tomáš, RNDr., Ph.D. (17.02.2020)