Sign in to follow this  
Alpha_ProgDes

Are Design Patterns mandatory now in universities?

Recommended Posts

Alpha_ProgDes    6921
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)?

Share this post


Link to post
Share on other sites
RobTheBloke    2553

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..... 

Share this post


Link to post
Share on other sites
alvaro    21246

If you think "Programming for the VAX" is too absurd an example, in the late 90s I actually had to learn [url="http://en.wikipedia.org/wiki/Warnier/Orr_diagram"]Warnier structured programming[/url] and [url="http://en.wikipedia.org/wiki/Jackson_structured_programming"]Jackson structured programming[/url] 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.

Edited by Álvaro

Share this post


Link to post
Share on other sites

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).

Edited by Paradigm Shifter

Share this post


Link to post
Share on other sites
Nypyren    12061

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).

Share this post


Link to post
Share on other sites
swiftcoder    18426

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. Edited by swiftcoder

Share this post


Link to post
Share on other sites
TheChubu    9446

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

Share this post


Link to post
Share on other sites
SiCrane    11839
In the US at least, the closest you get to an official list of mandatory topics to be covered in a computer science program are the ABET guidelines which are very vague. I don't see design patterns anywhere. Even things like calculus and linear algebra are listed as examples of what the math curriculum might contain rather than mandatory requirements.

Share this post


Link to post
Share on other sites
lwm    2518

I'm currently wrapping up my master's thesis in CS in Germany and all in all I had to take 19 mandatory classes (15 in CS and 4 maths), including one called "software development in large projects". It was horrible and all about mindless memorization of design patterns and processes. What I hated the most was the undertone of "if you don't use these everywhere and all the the time you are a bad developer" but of course that's not the design patterns' fault but the lecturer's. 

So yeah, I agree with you guys. I think design patterns should be mandatory but only for more advanced students who have already experienced how certain techniques, when used thoughtlessly, simply bloat the code instead of making it more structured.

Share this post


Link to post
Share on other sites
Buster2000    4310

I think when I was at university the only things that were "mandatory" were the soft skills sort of stuff that had nothing to do with my CS degree such as "Intro to research methods" and "Buisness skills 101".

Share this post


Link to post
Share on other sites
FBMachine    309

I view design patterns in the same light as music theory. I don't believe design patterns or music theory should be "used" as a tool to create code/music. They should provide a foundation and perspective, so that the practitioner can build problem solving intuition from the hard earned knowledge built into design patterns / music theory.

 

So I personally think it should be mandatory, but taught in such a way that it isn't presented as a list of recipes.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this