Hadar Ziv, at UC Irvine, in my opinion, is the teacher you want to get to know.  His specialty is loosely around software engineering, and his students are quite knowledgeable about the in and outs of system design.  In Southern California another school that does a good job is California State University, Fullerton, at the graduate level.  Both of these schools also have great baseball teams.  Which when you consider the respect that College baseball has with respect to College sports, Software Engineering is often considered at a similar level of disrespect.

Even at a school like UCI or CSUF, you might have to wait for the better parts of software engineering after your undergraduate work.  In many schools software engineering is taught in a manner that is dry and boring for many students.

Is Software Engineering just another word for Software Bureaucracy?  Engineering, for example Civil Engineering is often has a large amount of paperwork, after all weaken a riser or beam and a stable building could crash and burn in an earthquake.  What about Software?  Change a procedure and you could pull down the enterprise during a quiet moment of use because of the way your software was designed. 

There is no one in software that doesn’t what to design software that will decay into uselessness because no one can understand how it works, so modifications to meet business needs are impossible to make successfully.

Let’s take an example, one that I am working on right now: Artificial Intelligence.  And one I enjoy using is from http://create.msdn.com (AppHub):

http://create.msdn.com/en-US/education/catalog/sample/pathfinding

If you download the zip file, make sure to unblock the zip file or the code won’t run properly.

Now, once you have downloaded the code, which both the Windows and Windows Phone 7 versions will open in the Visual Studio Windows Phone Express, so how do you start to learn how to reuse the code?

Let me leave it at that, download the code and make some basic changes to the code. If you need an idea, I’ll keep it simple: Modify the xml files to control the number of blocks.

  • Once you have to done this, how long did it take? 
  • Are you sure that any changes you make in the xml files will be safe for use in the code? 
  • How do you test your code?
  • Is there anyway to test the code dynamically?

Oh, and the code is written in a manner that is sometimes called “Self documenting”, is it?  Can you quickly reuse the code or do you want to just start with a new project?