Recently Python and Java have started to be the de facto standard for teaching CS1/2. This means that students arrive in courses like Embedded Systems, Operating Systems or High Performance Computing without any experience with the C language. Where I teach we have a special "C marathon week" that provides an introduction to basic C programming to students who already code in Python and Java. We currently have an exam to try and measure students' mastery of C, but our approach is very empirical. We have impressions about what what they have learned during the first week, but very little of it is actually measurable. Mind you, students are able to do all the coursework, but we do not understand the relationship between their success and our introductory activity nor are able to quantify how much knowledge they gained during the semester (but after the introductory week).
So, are there best practices regarding evaluating their knowledge of C (or any other programming language) separately from their basic programming knowledge? This might generalize to other programming languages/technologies as well, so answers might not need to focus specifically on C.
Ideally, I am looking for something like concept inventories, but that focuses on the mastery of C and not on introductory programming.