A C programming assessment is given at the end of each of the following courses: CS 202, 499, 500, 685, 695, 699. Examples of the assessments are at , . The assessment consists of 5 programming problems in C from basic programming and data structures. The assessment is given on paper with no calculator, computer, etc., and students are given at least 45 minutes to complete the assessment. A student passes the assessment if both of the following hold: answers to all 5 questions are at least partially correct, and at least 3 answers are completely correct.
The following are in effect immediately.
- CS 202: grade of C requires passing the programming assessment.
- CS 500: grade of greater than C requires passing the programming assessment.
- CS 499, 685, 695, 699: passing the course requires passing the programming assessment.
- The programming assessment will be given four times per semester, around the 5th, 10th, 12th, and 14th weeks. The assessment will not be given any extra times for those who weren't able to pass, so you should definitely not miss any of these chances.
- The programming assessment needs to be passed only once as an undergraduate and once as a graduate student. If you pass in CS 202 you don't need to take it in CS 499. If you pass it in CS 500 you don't need to pass it in CS 685/695/699.
Note that in particular this means a CS student cannot graduate without passing the programming assessment.
There have been many questions and some anxiety about the programming assessment. See some more information on the FAQ. See also /u1/junk/ProgrammingAssessment on the server for more practice problems, and more previous versions of the assessment. Also, see a youtube video by Jeff Kinne with advice and answers for one of the versions of the assessment.
MWF noon is normally free for most CS students as a time to give the assessment; though some students have non-CS classes at this time. The class time for CS 202, 499, 500, 685 are also potential good times. It is best to pick the times and days for the assessment early in the semester and get them onto the calendar on the CS homepage.
How to Make Sure You'll Pass
Come to all review sessions that are offered when you are free. Take the assessment each time it is offered. You don't really know what it will be like until you try to take it for real. Any failed attempts do not count against you. Pick a problem type that is easiest for you, and practice just that type of problem. Visit the lab and ask the GAs to take a look at what you have. Come ask one of the CS faculty to take a look. Once you have that problem type mastered, pick the next easiest for you. Follow tutorials online for C programming (not C++, this is in C). Watch videos. There are many options to choose from. Form a study group with others in your class, work on problems together and help each other out (not during the test itself, of course).
What if You Cannot Pass it
The policy will be enforced, you will be given an incomplete with a due date of the first day of the next semester, you might be given one last chance to take the assessment before the grade becomes the default (F for 685, 695, 699, C for 500 [assumomg there isn't some other reason you would get an F], C- or lower for 202, U for 499).
The policy is the following: for CS 499, 685, 695, 699 you must pass the assessment to pass the class, for CS 202 you need to pass the assessment to get at least a C, and for CS 500 you need to pass the assessment to get higher than a C. Note that for all of those, there could be other reasons to earn a low final grade (e.g., even if you pass the assessment, if you fail your exams, don't come to class, etc. you would be given the grade you earned based on your coursework). The assessment is given multiple times per semester. You need to take this seriously and follow the above advice.
A computer science degree is different than information technology, computer information systems, and other degrees that are computing-related. A person with a CS degree should have many useful and important skills and knowledge - programming, problem solving, how computer systems work, debugging techniques, abstract thinking, etc. If we were to pick one single skill a CS graduate should have, it is to have mastered basic programming (which does require a bit of problem solving, debugging, abstract thinking, etc.).
The programming assessment is a single well-defined objective that all CS faculty can agree all graduating CS students should be able to pass. This is a minimum standard that we expect of all of our graduates. Enforcing this standard is good for students because - (a) it clearly communicates expectations, and (b) allows students and faculty to say that uniformly any ISU CS graduate can do basic programming.
The programming assessment is graded very strictly so that there are no judgement calls in grading it - answers are only scored as correct if they are free from any kind of error, and are only scored as half correct if your answer has (i) the right start and (ii) does not have anything that makes little sense or clearly conveys that you are not on the right track. Passing the assessment is only meaningful if it is scored this way - when you pass we can say with 0 doubt that you mastered these problems. This also removes subjectivity from the scoring.
We realize this grading is strict, so we do everything possible to get you ready for the assessment. The assessment is offered multiple times throughout the semester, failed attempts do not count against you, programming review sessions are offered many times, faculty will give you feedback on your attempts any time you ask, and the unix lab is open most business hours with a lab assistant on duty who can help you practice. Take advantage of all of this as needed.