Lectures: Monday, 12:20, S9 (Pavel Ježek)
Labs: Monday, 10:40, SW2 (Filip Kliber)
Page in SIS: NPRG035
Grading: Credit and exam
Table of contents
[in Czech] Zde jsou informace pro studenty anglické paralelky předmětu Programování v jazyce C#. Pro českou verzi si v záhlaví stránky přepněte jazyk do češtiny.
Note: Virtual labs are intended for students who do not wish to attend labs (e.g., because last year they only needed to finish the final project, pass the credit test, etc.). Please enroll into correct labs in SIS!
Lectures outline
Recommended Literature
- Joseph Albahari: C# 12 in a Nutshell: The Definitive Reference, O’Reilly Media, 2023 (i.e. on Amazon UK)
- Jon Skeet: C# in Depth (4th Edition), Manning Publications, March 2019 (i.e. on Amazon UK)
- C# Language Specification version 8
Alternatively
- Mark Michaelis with Eric Lippert: Essential C# 5.0, Addison-Wesley, 2013 (i.e. on Amazon UK)
- Jeffrey Richter: CLR via C# (4th Edition), Microsoft Press, December 2012 (i.e. on Amazon UK)
- Christian Nagel, Evjen, Jay Glynn, Karli Watson, Morgan Skinner: Professional C# 4.0 and .NET 4, Wrox, John Wiley & Sons, March 2010 (i.e. on Amazon UK
Labs outline
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). The exam is usually graded the same day. Rarely, the student might be invited to further explain his answers or answer follow up questions. This optional oral part usually takes place online, via Zoom platform. 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 or with completely incorrect answer.
For illustration, here follows a list of some exams from previous years:
- 1.2.2021 (PDF)
Additional Information About the Exam
In addition to the information provided in the slides from the first lecture, the following two points apply:
- If a student registers for one of the exam terms and does not attend, that term will be marked as failed in SIS (i.e., the student will lose one attempt). The purpose of this measure is to optimize the occupancy of the individual exam terms, allowing all students the opportunity to attend up to three exam sessions.
- If a student receives a grade of 2 or 3 in the exam and wishes to improve their result, they can explicitly request the examiner during the evaluation of the exam paper not to record the grade. The exam term will then be marked as failed in SIS. The student can later:
- request to receive the obtained grade, or
- attend another exam term (any result from this “resit” exam will cancel the previously obtained grade).
Example Scenario 1:
Student X receives a grade of 2 on the first term and refuses it. On the second term, they receive a grade of 3 and refuse it. On the third term, they receive a grade of 1. Current status of Student X: 1st term = failed, 2nd term = failed, 3rd term = 1, i.e., Student X completed the exam with a grade of 1.
Example Scenario 2:
Student Y receives a grade of 3 on the first term and refuses it. On the second term, they receive a grade of 4. Current status of Student Y: 1st term = failed, 2nd term = 4, i.e., if Student Y wants to complete the exam, they must attend the 3rd term. If they again receive a grade of 4 on the 3rd term, they will not have completed the exam.
Example Scenario 3:
Student Z does not attend the 1st term, receives a grade of 3 on the 2nd term and refuses it, and receives a grade of 4 on the 3rd term. Current status of Student Z: 1st term = failed, 2nd term = failed, 3rd term = 4, i.e., Student Z did not complete the exam.
Requirements for the Credit
In order to receive the credit, it is necessary to fulfill three requirements:
1. Homework assignments
During the semester, homework will be gradually assigned for which you will receive points upon completion. This requirement will be complete if you earn sufficient amount of points. Earning a larger number of points can help you gain points towards the exam according to the table below. At least 90 points are required to complete this requirement.
You can find all homework gradually in ReCodEx for NPRG035. NOTE: The standard deadline for tasks assigned is 7 days (i.e., by the start of next week’s labs)! NOTE: ReCodEx only evaluates functional requirements resulting from the assignment. However, there are other requirements beyond just the functionality of the program (e.g., design, decomposition, testing, …).
Warning: Homework is an independent task aimed at assessing the student’s ability to independently develop a complex program in C#. If it is found that a student submitted someone else’s solution (e.g., several students submitted different instances of the same solution for one homework assignment, etc.), it will be considered a cheating attempt. All such students will not pass the NPRG035 course this academic year and will lose the opportunity to recognize completed obligations next year; disciplinary action may also be recommended for their expulsion from study by the UK MFF disciplinary committee!
Using external sources to assist in solving the homework assignment (StackOverflow, ChatGPT, …) is only allowed in the manner explained in the first labs and with a citation of the source (StackOverflow answer, ChatGPT chat). Not citing the source, and thus presenting someone else’s code as your own, is also considered a cheating attempt, with the above implications.
You can earn points towards the exam for an above-standard number of points from the assignments, as follows:
- min. 90 points = “I Can Win” level → one of the requirements for credit fulfilled, specifically the “homework assignments” point
- min. 110 points → gaining 1.25 strong points towards the NPRG035 exam
- min. 130 points = “Hardcore” level → gaining an additional 0.75 strong points towards the NPRG035 exam
- min. 160 points = “Nightmare!” level → gaining 0.5 weak points towards the NPRG035 exam
- min. 210 points = “Mission Impossible” level → gaining another 0.5 weak points towards the NPRG035 exam
- min. 252 points = “divine level” → for 1 year, the title “goddess of all Csharpism” or “god of all Csharpism” is conferred
Therefore, up to 2 strong bonus points and up to 1 weak bonus point can be earned towards the NPRG035 exam (see slides from the first lecture for exam evaluation). Note — these strong bonus points will only be counted during the 1st attempt at passing the exam (i.e., in their 2nd or 3rd attempts, everyone has 0 strong bonus points). There is no distinction as to why a student comes to the 2nd or 3rd term (i.e., whether they declined a grade in the 1st term). Weak bonus points will be counted in all attempts to pass the exam in that year, but note: weak bonus points cannot break the barrier between grades 4 and 3 (i.e., if after adding strong bonus points the grade still comes out as 4, then weak bonus points are not counted in the exam result). Bonus points are only counted in the year in which the student earned them.
Attendance at the labs is mandatory, or rather that it mandatory and responsibility of the students to take a sufficient interest in what is happening during the labs.
2. Final Project
This is a larger (compared to homework assignment) piece of software that you independently invent, specify, design, program, test, debug, document and demonstrate. At the beginning of the semester, we will create a dedicated repository for you in the NPRG035 group on MFF GitLab, into which you will direct your development. More detailed information about the credit program can be found directly in your repository.
Deadlines NPRG035 (winter) and NPRG038 (summer):
- Approved specification: X. 7. 2027
- Demonstration of the final (fully functional, according to the specification) version of the application, including both user and development documentation.
-
- deadline: X. 8. 2027
-
- deadline: X. 9. 2027
-
Requirements for NPRG035:
- Demonstrated before the 1. deadline: 30kB of source code written in the C# language
- Demonstrated after the 1. deadline: 45kB of source code written in the C# language
- Demonstrated after the 2. deadline: 60kB of source code written in the C# language
Requirements for NPRG035 + NPRG038:
- Demonstrated before the 1. deadline: 45kB of source code written in the C# language
- Demonstrated after the 1. deadline: 60kB of source code written in the C# language
- Demonstrated after the 2. deadline: 90kB of source code written in the C# language
Source code is the code you (and only you) wrote in the C# language. Comments and tests are included in the calculation if they are reasonably proportionate (if the definition of reasonable is not clear, ask the teacher).
Final Project for NPRG038 require additional (nontrivial) usage of technologies taught during lectures and labs of that course.
Note: Each final project that meets the requirements of NPRG038 also meets the requirements of NPRG035 (i.e. one project can be submitted for both courses).
ATTENTION! Approval of the specification requires the cooperation of the teacher. If the specification appears in the repository 10 minutes before the deadline, then it cannot be assumed that the teacher will have time to look at it and approve it. This situation is then assessed as if the student did not submit the specification and will not fulfill the final project this year. The same applies to the demonstration of the program. For the demonstration, prepare some form of presentation where you show the main functions of the program + an outline of the architecture.
3. Practical Test
Fully implement a simple task within a 3 hour time limit. Takes place during the examination period in computer lab on the local computers. You have five attempts to complete the test in total, but you can attempt the test only three times during the winter examination period (and two times during summer examination period).
Practical Test Rules
TBA
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 (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!