NOTE: I know this is another long post, sorry about that, but if you’re a college student in a technical area (CS,CIS,MIS, etc.) then you’re feedback would be extremely helpful…
Robert and I were both talking to our faculty (specifically the MIS department who now effectively control the CS department as well) at our college (Univ. of Alabama, Tuscaloosa) and we proposed that we (as in Robert and I) teach a class for either MIS or CS (or even both) students to introduce them to .NET. We made this proposal when we were seniors in the CS dept, and the higher ups in the department liked the idea, but wouldn’t really act on it. But we both feel that .NET can add so much business value (which is what really matters in the end) to an IT project, that students NEED to be exposed to it for their benefit and their future employer’s. Right now, we’re in the process of drafting a sample syllabus & course objectives so the faculty can more formally review our proposal and see if they can make it happen (they seem excited by it though, so if there is any way to do it, I think they will).
What we’re looking at doing is breaking the course up into something like this:
Section 1 – cover C# (and how other .NET languages and non-.NET langs differ), and the .NET Framework & associated platforms. This wouldn’t be an extremely long section, but it would be a foundation for the remainder of the course.
Section 2 – building a class library (probably in the form of a business logic layer so we can work in n-tier design & application) and interact with that library with a console application. This section is designed to get everyone up to speed on actually using Visual Studio (we’d probably start throwing in how to use the debugger, etc. here as well) and C# (or VB.NET if the faculty really want us to…we both really prefer C# though…). From there we move on to section 3…
Section 3 – building a windows desktop application that utilizes the business logic layer from section 2. Here we want to show the basics (and how easy it is) of building a Win Forms application. We’d probably get into building smart clients a little, but that might be held off until the end of the course since it’s a bit more advanced. Another goal is to show how to use external assemblies & other libraries (managed & unmanaged) in your application and how to separate things into business logic & the presentation layer. We may or may not get into a data access layer here, but I doubt we’ll end up with enough time for that in the course.
Section 4 – here we would have the students take the business logic layer and build a web form front end…so building basically the same Win Forms app as a web application…this would show the differences between building web apps (and the similar areas) but also show how easy it is to take well architected code and apply it without modification in different types of applications (e.g. using the same assembly to drive a Win Form app and a Web App)
Section 5 – this section would fuse sections 3 & 4 by creating a central web service and data store (again, may get into the DAL here, or we may just provide one depending on time) and connecting the Web App and the Win Form app to this web service so now you have the same code base powering the different front ends and you have both applications working on the same data and it’s terribly quick and easy to do.
Section 6 – finally, we’d have one more project to take the business logic layer and the web service and create a mobile application (not sure if it would be a smart phone app or a pocket pc app…Probably a PPC)…again to demo how easy and efficient (and certainly effective) to reuse code across platforms.
I know that sounds like a lot, but we would have the choice of the pre-requisites for the course, and I already know some of the students that would like to take this course if we can get it together (and they are a great group), so we would be able to get the most motivated people that would be willing to put in the extra effort to actually add value to themselves by learning all of this in the short time. Now granted, we couldn’t go really in depth into too much of anything during class time…that would be more for the students to dive into as they see fit, but giving such a broad range of topics and showing how everything integrates would be the whole benefit. Currently, we don’t have ANY .NET classes. Period. But I think we’d give the students that take our class an advantage over other people because not only have they been exposed to a new language/platform, but they would better understand what .NET is and is not capable of and hopefully when they are faced with a project, they would be better able to chose the appropriate technology to effectively solve the problem (be it a managed solution or not).
To those college undergrads out there in spokeland, would you take a course like this? Any suggestions on what to cover or what not to cover?