Updated Software Engineering Course
I'm picturing an updated software engineering course that covers the topics of the past decade:
Seems like a rather odd collection, rather than being a coherent plan of instruction in software engineering. It's sort of a "Topics in SWE" course.
Well, I have to admit I brainstormed as writing; I wanted to get my thoughts down and organized. However, these are thetechniques I've found most valuable in Software Development over the past couple of years, and I think there is a coherent, thread betwen them. I know a few people that are attempting to document this (Future Addison Wellsey Books). But yes, the organization needs work.
Sounds interesting, but I can't see that Design Patterns or Refactoring warrant more than a lecture or two each. I would hope that most SE courses are doing Acceptance Testing and Optimization already (or maybe I'm too optimistic).
It would take 5 years to get most univerisits to change their curriculum.
I learned all of this stuff on the job, whilst being paid to do it. Why would I want to pay for a course to do the same thing?
Martin Fowler's book "Patterns of Enterprise Application Architecture" is what I wish I had a general feel for back in my school days. I just felt like I had no realistic idea what most programmers did. I just couldn't believe that most programmers were writing compilers, crafting better algorithms, building better AI, and doing embedded work in assembly language. Fowler's book maps out the territory of what I consider meat and potatoes programming in "the rest of the world."
And I disagree with the poster who feels design patterns only warrant a lecture or two. I would have benefitted greatly from a semester devoted to the GoF book, combined with the Fowler book. These should be presented as depth concepts, not breadth. Patterns need to be internalized far more deeply than say sorting algorithms.
don't be such an idiot, schooled.
It'd be amazing if they taught something that you could directly use. I just graduated not too long ago and they never mentioned design patterns or refactoring or anyting like that. I had learned and used them on my own but not because of school. Granted, I wasn't a CS major, but I did take some programming classes that dealt with database programming and even OO.
This course sounds more like Software Buzzword Engineering to me.
Your course seems more an 'Applied Software Engineering' course than else, but nonetheless, I would be the first to attend.
I doubt that optmisation is taught in many Uni SE courses these days. For most people that kind of thing would be wasted because you don't get to do it in RL. Some areas (embedded, graphics, etc) it is common, but in my experience most companies won't allow its engineers to sit around and twiddle to get an extra point of performance, whereas in the areas I mentioned it is often necessary in order to get the software to fit into the constraints (speed, available memory, etc).
I think the elements of the course I've laid out would be a follow on to basic "how to program" course. This style of programming is what distinguishes a professional from a ...not sure what term to use here. I've coined the term ICIC which stainds for I Code in C, meaning people that code in OO languages without taking advantage of the OO sturcture. But even in C there is organized and there is disorganized. There are well though design patterns visible in both the Linux Kernel and GTK+ code I've examined.
Teaching XP is good. My university still explains the waterfall ..
I think that instead of studying XP you should "reverse engineer" it and find the problems it's trying to solve.
>Applied Software Engineering seems a little redundant, don't you think?
Antoher thing has come into my mind: what about adding CRC cards to the course?
I personally have never used CRC cards. How would you suggest they be added to the course?
CRC cards are quite useful when designing a system, for they allow a rapid individuation of the key objects of the system. You may use them to explain the design patterns (using CRC cards instead of the Booch's diagram used in the Gang of Four book), or when analyzing existing code.
Fog Creek Home