Full name \
email@address

Deadline: 22.4.2026

Instructions:
* The main purpose of this assignment is to get some practice with tools for logging and monitoring of program behavior.
* You can write the report in Czech.
* Submit everything necessary to evaluate your solution (report, program code, diff, configuration, ...) in one zip file.

-----
Tasks
-----

1. Usage of logging frameworks.

   Choose your own program of a reasonable size and complexity, written in C++, Java or C# (e.g., term project).

   Implement logging into the program, using some framework (library) available for the language and platform (e.g., Log4j for Java, log4net, or syslog API).
   Configure the logging framework such that log messages are saved into the file "events.log".
   Log some important events of your choice (such as warnings and error situations).
   For each logged event, record also the name (ID) of the current thread, current time in seconds, and source code location (class, method), if possible.
   Report fatal errors also to console, in addition to the file "events.log".

   Do not forget to submit a diff that shows the logging commands added to your program code, and configuration of the logging framework.

2. Practice with monitoring tools.

   Choose some long-running program in C# or Java, for example a web server or some GUI application (text editor, game).

   Use any mature runtime monitoring tool for the respective platform (VisualVM for Java, or .NET Memory Profiler) to get a report of memory usage. \
   In the case of VisualVM and Java, get the list of Java classes sorted by the size of memory (heap) fragments taken by all their instances together.
     Record the list of Java classes roughly 5 minutes after you start the program.
     You can provide just around top 20 classes (bit more or less is fine), depending on how many records fit on the screen of your computer. \
   In the case of C#/.NET, use the .NET Memory Profiler (that should be available in recent Visual Studio) to get the total amount of memory used by all instances of each individual class.
     Record the information (in the form of a screenshot or text file) at some point during the program execution.
     The profiler can be downloaded here: https://marketplace.visualstudio.com/items?itemName=SciTechSoftware.NETMemoryProfiler. \

   Do not forget to submit the report of memory usage in some form (a text file or screenshot).

3. Measuring test coverage.

   Pick some rather mature tool for measuring test coverage of projects in your preferred language (Java or C#) and use it on your own large program with unit tests, just to see how much your code is really covered by tests that you have written.
   Submit the report of test coverage in some form (a text file or screenshot).


-------
Survey:
-------

We use the survey to evaluate the lectures and homework assignments.
It is completely voluntary, but useful for future tuning of the content and level of complexity.
Most questions can be answered using the scale from 1 to 10.
Write your answer just under the corresponding question.

(1) How new was the topic and content of the lecture for you? \
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1 - brand new, 10 - I already knew everything)


(2) Do you think that the content of this lecture was useful? \
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1 - useless or too trivial, 10 - very useful)


(3) How do you evaluate the level of complexity of the homework assignment? \
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1 - too trivial, 5-6 - just about right, 10 - too demanding or complex)


(4) How do you evaluate your prior experience with the tool in the context of the homework assignment? \
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1 - I already know and can use everything, 10 - I tried everything practically for the first time)


(5) How much time (in minutes) did you spend working on the homework assignment?


(6) Additional space for your own comments on the topic, lecture, and homework assignment:


