Are Design Patterns mandatory now in universities?

Started by
13 comments, last by FBMachine 10 years, 8 months ago
I remember in university that CS 1 (Variable, Functions, Classes, Inheritance, Composition), CS 2 (Data Structures), and Discrete Mathematics were mandatory. I wonder if Design Patterns is mandatory now. I don't see why it wouldn't. It seems just necessary to the beginner programmer as the other 3. I know some people here are CS/SE/CMIS teachers and other are actual employers. Do you think that it should be added to the mandatory curriculum as opposed to an elective (if it is one)?

Beginner in Game Development?  Read here. And read here.

 

Advertisement

Nothing is mandatory within a university course, unless the course syllabus says it is mandatory. I personally don't think it's something that should be a mandatory unit of a course (speaking as an industry bod, and ex-lecturer). In general, you try to ensure that the course syllabus is as vague as possible (because making changes is something that can take years to achieve due to a million layers of bureaucracy, and course validation requirements). If you are too explicit in your course description, it can often lead to situations where you find yourself being forced to teach "Programming for the VAX", or "Spectrum 48k Basic". If you were to keep it vague under the generic title of "software development practice", then you get some freedom to adjust the course content to keep it relevant to the latest trends and advances. Being too specific, will just end up shooting the department in the foot later on.....

Really? In the US, CS1, CS2, and DM were all mandatory classes you had to take to get your CS or CMIS degree.

Beginner in Game Development?  Read here. And read here.

 

If you think "Programming for the VAX" is too absurd an example, in the late 90s I actually had to learn Warnier structured programming and Jackson structured programming in my second-year programming class and PDP-11 assembly in Computer Architecture class. These are things that probably seemed very reasonable 20 years earlier, but by the time I studied them, it was a complete waste of time. If someone in 2035 were force to study software design patterns, it might be similarly absurd; It's hard to judge from our perspective.

I had to learn Jackson Structured Programming too (for about a day) when I was on an employment training course in the 90s for learning C. Better than flowcharts but still dreadful.

Of course, I studied maths at university which teaches you how to think (and think logically and rigorously, as well as how to break tasks into smaller pieces to prove theorems etc.) rather than what to think so programming wasn't too hard to pick up later on (I already knew Pascal from school, although it was taught badly and we only wrote a couple of Pascal programs ourselves). It was enough to let me skip all my Pascal classes on my maths degree and just turn up at the end of year exam and pass though.

My first real job was as a games programmer (so I got lucky, things were different in the 90s I guess), and I had to learn how to program properly pretty quickly then (doing a conversion from PC/3DO code to PS1 in conjunction with a guy doing the same for the Saturn).

"Most people think, great God will come from the sky, take away everything, and make everybody feel high" - Bob Marley

Personally I've grown very icy on design patterns in general, certainly in the context of educating people who don't have much experience in software design. That's how you end up people writing singletons that make no sense. Not only that but a lot of design patterns would make no sense whatsoever to an average lower level undergraduate student, except as things to memorize. At that point in time they've barely written code beyond a few files large. How do you expect them to grasp what a decorator or factory is for?

I'd actually be inclined to kick a design patterns course up to graduate level and let the seniors take it after they've been through a design project or two.

SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.

I agree with Promit. Programmers need a lot of experience before they understand when patterns should be applied. On the job, I *constantly* see singleton and boated observer patterns used where they don't need to be, making the code way more complex than it needs to be.

Design Patterns was a senior-level requirement where I went. We had a small class. Each person was assigned one or two patterns from the book (Gamma et al) and had to give a presentation explaining the pattern. We very quickly discovered that the majority of the class had no idea what their pattern was useful for or when it should or should not be used (even the guy who got the Singleton pattern didn't know when it should or should not be used).

Is this really a For Beginners topic? We're talking about what educators do teach or should teach, not what beginners should learn.

-- Tom Sloper -- sloperama.com

Really? In the US, CS1, CS2, and DM were all mandatory classes you had to take to get your CS or CMIS degree.

We had all those, but we didn't even touch on design patterns. In fact, we only had one class in the entire curriculum that taught object orientation.

Is this really a For Beginners topic? We're talking about what educators do teach or should teach, not what beginners should learn.

Bouncing to General Programming. It doesn't fit much better here either, but oh well.

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]

Of course! Even if at that level many people won't get the hang of it, they'll at least know patterns exist. Which is good.

I consider the purpose of most of the education system not to teach from the begin to the end a subject but more of "Hey! This thing exists! You might find it useful!" and then you do your own research about it if you want. It shows to the students one more reason why software isn't just typing stuff into the box and hit the build/compile button.

Sure, a lot of people don't get it and think that if they implemented a bloated MVC pattern on a 1k program it means that it has to be implemented everywhere (have seen a few examples of "If I need two of these working at the same time, must use threads!" No, if you have a game with 10 bots you don't use a new thread for each of them), but that's just the result of bad teaching.

I'm not the "You can't handle the truth!" type :P

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

This topic is closed to new replies.

Advertisement