
Introduction to Computer Sciences
November 25, 2006Introduction to Computer Sciences
- Online Books
- [Princeton] Great introduction of every aspects of computer science http://www.cs.princeton.edu/introcs/home/


School This Quarter
This quarter I am taking CS560 Software Development and CS556 C++ Intermediate Progamming. I am looking to learn more about different software development methodology and improve my C++ programming skills.
BTW, the Google Docs and Speadsheets are very cool!

The TTCS OSSWIN CD is a collection of over 100 Free/Open Source software for
home and business users using the Microsoft Windows 98SE/Me/2000 and XP
operating systems.Â
It’s worth to check in out!

"Favor object composition over class inheritance," but the strategy pattern violate this rule.

This week, I have been using CodeSmith to generate the class library code for my big projects. It basically connect to the database, read the table schema and following some of the rules and patterns to generate the code for you.
I have taken advantage of CodeSmith to generate most of my CRUD operation codes: stored procedures, entity classes, and the data access layer code.

Even my daily development work is on Microsoft .NET platform, I am still a big fan of Java and J2EE world. J2EE communities often have very solid innovation in enterprise application development. On the other hand, I met many .NET developers and they all like the term “HACK.” There is no common good practice of how to develop enterprise Web application that I could find at MSDN that guides developers and architects on how to utilize the best capacity and functionality of .NET framework to build a solid CRM or enterprise application.
Overall, I still get used to with .NET and have to learn from Java/J2EE’s different framework to build a great enterprise applciation in .NET platform. The .NET framework is awesome, and it dosen’t have less functionality comparing to J2EE. Perhaps, it will still need sometime for the .NET communities to become mature on developing enterprise Web application.
 I am looking at different way to perform data access in .NET. Surely, there are many different way, but which is the most common practice and best for agile development. ORM, obviosuly, is a must have concept to achieve the flexiblity in aplciation development.
I am studying NHibernate now and hopefully I am able to utlize the best functionality it can offer to my application.
In addition to NHibernate, there are also few other interesting tools:

This has been an interesting week for me! I have finally developed the Website template generation tool. The tool will allow generate a large of different Website templates depending on a number of formatting and style values. It will allow custom banner and header, menu style and colors, and page layouts.
 I will post more detail of this implementation when the system is released publicly.

Stored Procedure Object Interface Layer (SPOIL) another cool framework written by Keith Hamilton (Software Architect) and Antero Koskinen (Senior Developer) at Microsoft. The main goal of the SPOIL framework is “using a method call with attributes to tranform from an object-orientation to a relational paradigm and back.”
 To summarize, according to Hamilton and Koskinen SPOIL provides the following advantages:
Please spend some time try out this new framework.Â

This is a very interesting talks of Tom Leighton about the chanllenges of delivering content and applications on the Internet.
Â
http://video.google.com/videoplay?docid=7174245321574760909&q=computer+science

I was very excited with the new ASP.NET 2.0 and have been happily learning everything that I could to build better enterprise level Web application. However, now I would have to say “very disappointed� with the unfinished ASP.NET 2.0 product. Perhaps, I was misled by the marketing words or perhaps ASP.NET was just targeted for home-user or end-user liked style product.
It’s not targeted for developing business applications that required months of planning and developing. Perhaps, business should not rely on the uncertainty and riskily place it bet on the childish product “ASP.NET 2.0.â€?  Â
Problems:
Web Parts: have very cool concepts, but only work great only in IE. The other problem is the Personalization data of a page is encrypted and stored in a silly string. It work great for simple application, but for an enterprise application, data need to be stored in a relational database and it should be able to extract the save contents to other system without firing up a 2.0 ASP.NET application to do so. Sure, there will be a way to work around that, but it is NOT a common practice and require tentative amount of efforts which eventually will lead to an unmanageable system.
ATLAS: very exciting news. Let’s compare the API with Yahoo and Google and Rails on Ruby. I don’t know how people would want to spend their efforts and time on learning something might not even work as in their demo pages. I feel in love first moment when browsing Yahoo Developer even though they are new and don’t have much resource as Microsoft does. However, you don’t have to deal with the problem that Microsoft created.
Design and Patterns: it seems go away from the MSDN and there is no concrete guideline to build enterprise level Web application.
Microsoft is still the leader in Windows application development, but not in the web sphere. That’s why Google and Yahoo are still stands ahead of the game on the Internet world.     Â