Semester: summer 2023/24
Lectures: Monday, 17:20, S3 (Pavel Ježek)
Labs: Thursday, 12:20, SW2 (Filip Kliber)
Page in SIS: NPRG038
Grading: Credit and exam

Table of contents

[in Czech] Zde jsou informace pro studenty anglické paralelky předmětu Pokročilé programování v jazyce C#. Pro českou verzi si v záhlaví stránky přepněte jazyk do češtiny.

Lectures outline


Practicals outline

0. Practicals

1. Practicals

2. Practicals

3. Practicals

4. Practicals

5. Practicals

6. Practicals

7. Practicals

8. Practicals

9. Practicals

10. Practicals

11. Practicals

Information about the Exam

Primary part of the exam consist of written part including around 6 to 8 questions (which might include sub-questions). Every question has a visible maximal amount of points that can be awarded for the question (=N). For correct answer, the student will receive N points for the question; for incomplete, but overall good answer (i.e. some part of the answer is missing or is incorrect), the student will receive 0.5 * N points; in other cases, the student will receive 0 points (i.e. if the answer is missing completely or is mostly incorrect).

The student can receive up to 10 points from the Exam. The mapping between points and grade is as follows:

Points from the exam Awarded grade
10 – 8.5 1
8 – 6.5 2
6 – 5 3
4.5 – 0 4

The written part of the exam takes up to 150 minutes (i.e. 20 minutes for each question, with 30 minutes extra time). After the written part, the oral part follows, where the examiner discusses the answers with the student, demands clarification when needed and asks complementary questions if deemed necessary — based on this, the final amount of points for each question is determined. The evaluation is always based on written part of the Exam, which means that student can’t be awarded with more than 0 points for a question without an answer.

Requirements for the Credit

In order to receive the credit, it is necessary to fulfill these requirements:

1. Homeworks

There will be several (10-12) homeworks assigned during the semester. The difficulty of individual homeworks might vary. Successfully solving the homework task will reward the student with OK mark. If there are some problems with the submission (i.e. missing implementation of minor feature) the student will receive OK- mark. On the contrary, if the assignment is solved in elegant way, or somehow stands above the expected level of quality, the student will be marked with OK+. OK+ marks can erase the minus from OK- mark. In order to fulfil this requirement, the student has to have at least 5 OK marks, from which at least two are received for completing the homework on the topic of multi-threaded programming. The homeworks are graded individually. If you are unsure about your overall grading (e.g. you have quite a few OK-), contact your teacher for clarification.

Each extra OK mark above the count of 5 will give an extra 0.25 points for the exam.

Homeworks do not have a formal specification, but are rather vaguely described during the practicals. It is the student’s responsibility to understand the assignment by asking questions about the expected behavior during the practicals. The homeworks are to be submitted via MFF GitLab, each homework in specific directory. It is necessary to upload whole assignment (i.e. just .cs files might not be enough, if the assignment also wants the student to set up a NuGet packages, etc.). Usually the students will receive skeleton (project without the implementation) that can merged from upstream repository. As opposed to the ReCodEx framework, the students will not receive an immediate feedback about the assignment, but rather will have to wait for the teacher to grade them.

Note: Homeworks are independent work, the aim of which is to evaluate the student’s ability to independently develop a more complex program in the C# language. If a student is found to have submitted a different solution (e.g. several students submitted different instances of the same solution to a homework assignment, etc.), this will be considered an attempt to cheat. All such students will not complete the NPRG038 course in this academic year and, if necessary, the disciplinary committee of the UK MFF will be recommended to expel them from their studies!

2. Final Project


You can use single project to complete several courses about C# and .NET, if the project is complex enough:

The source code you (and only you) write has to be in C# language. Comments are included, but everything has to be reasonable.

Final Project requires additional (nontrivial) usage of features and techniques taught on lectures/practicals of these courses (such as custom operators, variant interface, delegates, threads, networking, LINQ, reflection, code generation).

Please prepare few slides (talk) about your application’s main features, problems you faced and overall design overview.

Acknowledgement of requirements from past years

If the student was enrolled in this course during the last academic year and fulfilled only some of the requirements for the credit, the teacher can, upon student’s request, acknowledge the fulfillment of requirement from the last year (attendance, homeworks, Practical Test or Final Project). The topic (specification) of Final Project does not need to be acknowledged by new teacher. If the student succeeded in the exam, but didn’t receive the credit, it is possible, upon student’s request, acknowledge the result of the exam. This is a good will of teachers of this course and students can’t enforce this on study department!