I teach a one semester University course in systems analysis and design. Topics include design patterns, UML, OOP, software development lifecycles, and the history, benefits and drawbacks of various methodologies (such as Agile/SCRUM/BDUF/Waterfall.)
Students who enter the course should have some exposure to programming, but in reality I’ve seen everything from people who are highly fluent in one or two modern languages to those who can barely pass the FizzBuzz test.
My question is two-fold: how much programming experience do you think students need before exposure to these topics (or do you think they should learn them before they learn to code), and second, what do you feel would be fair and appropriate ways to pre-test them at the start of the class, knowing that there is no consistent language or platform in their background?
I think students learn best when they can put into practice the material that they are learning. To that end, I think the best course would include some project (or mini-projects) that would involve coding. Typically, I would expect this to be taught to upper-level undergraduates and graduate students. By this time, students should have had some programming classes, some discrete math, and a basic data structures course. While not technically pre-requisites (except for the programming class) if you could require these others you have a better chance of getting students with the proper background.
As far as a pre-test, I would suggest having some simple programming projects to illustrate design patterns/OOP early in the course. I’d be stricter, perhaps, with these projects than you might be tempted to be for assignments early in the class. Be up front that programming skill is required for the course and grade that way. Let people know, through your grading, that the requirement is serious.
This may sound harsh, but I’ve seen too many students make it through courses leaning on their project partners because they aren’t able to keep up with the coding required. I don’t think they’ve really gotten much out of the course because they didn’t have a chance to internalize the knowledge through experience.