What Should a (Very) Introductory Visual Basic Course Contain?
One of the "inside" aliases that I monitor posed the question: What should a (very) introductory Visual Basic .NET course (for college students) contain? At least one response went into some detail that (IMHO) missed what students getting started as programmers really need to know.
My answer:
____________________________________________________________________________________________
I might start (a very introductory course) in much the same way as I did when I taught CS101 to college students. Let’s assume, that these students know these foundational concepts—what’s a CPU, what’s RAM, disk, and the rest. Can we assume that these students are going to need know how to solve business problems with a computer program they have written themselves—as opposed to doing it with ledgers, 3x5 cards or Excel?
To do so they will need to know how to:
• Learn what needs to be done. This might mean interviewing customers those that will use the application and understanding the problem they are trying to solve. Too many developers come up with a solution to problems that don’t exist or don’t address the customer’s problems.
• Learn how to design before coding.
Once the design is done and enough people agree on the intended outcome, the student needs to learn the mechanics of implementing the solution.
• Capture information from a user, other programs or other computers here and elsewhere.
• Process, validate, purify, clarify and codify the information using whatever security schemes and the business rules are defined.
• Save this information where it can be protected and later retrieved.
• Retrieve this information from local or remote computers to permit editing and annotation, produce reports or to perform some task—like selling a product.
• Share this information with others—other people, programs or computers.
• Deal with the stuff that happens along the way.
• Perform all of these operations in a way that your team, company and/or family can share the development tasks.
• Document what has been done so the developer and others can leverage and understand the contribution.
• Manage the development tools themselves. Learn how to code, save your work, backup the source and reconstruct it once parts are lost. Learn how to use the tools to create databases, populate the schemas, build test data and setup rights to the data.
• Debug and test the code in simulated and real environments.
Up to this point, the language you use to interact with the computer and to perform these tasks is irrelevant. Any introductory course in Visual Basic (or any language) would need (IMHO) to do more than worry about the complex details of inheritance, polymorphism and class instantiation. Do you really expect to teach an introductory student about generics? While these concepts are important, an entire industry was once built around a Visual Basic that didn’t expose these concepts to the developers. I expect there are still several million developers still using this tool today and several million more that got their start in programming using it.
Yes, a Visual Basic course should talk about how to write code, but more importantly, it should talk about what is already written. All too often we see amateurs reinventing the wheel—writing code to do things that the language would do for them or built into the Framework, third party controls or addin libraries. At one time Tom Button called Visual Basic “glue”—implying that the language is simply a way to tie together with the trillions of lines of code already in place to do almost everything imaginable—and I expect some things that are unimaginable. Visual Basic was originally intended to hide the complexities of the OS and make the process of leveraging this body of code easy and seamless. Yes, Visual Basic (the COM version) was not that flexible and some developers grew out of it as their requirements and skill evolved—generally because their applications were successful.
Today Visual Basic (Visual Fred) is a very different language as much of the ease of use has passed out of the “language” and into the hands of Visual Studio. It’s Visual Studio that helps build Windows Forms and ASP pages—not the language. It’s Visual Studio that generates code to manage data sources and paint the contents in controls the users don’t have to write. Sure, there is a Visual Basic .NET Express, but it’s really a hobbled Visual Studio. These same development techniques apply almost universally to C#. Is it Visual Studio that implements edit and continue, intellisense (and intellinonsense) and the object parameter popups or is it Visual Basic? Does it matter? Because of this, any introductory course should include several hours of Visual Studio.
So, an introduction to the language itself should be written to show students how to implement the guiding objectives (as described above) in code.
But getting back to the language concepts, I know that many computer languages share the same basic concepts of variables, data types, logic branching and conditionals as well as ways and means to handle events and invoke other code. Any Visual Basic (or any introductory language) course needs to cover these basics. If done correctly, the course would permit students to learn that it does not make a snit of difference which language they use to implement these basic constructs—the results can be about the same—good, bad or disastrous. I wrote a Polish translator in college in COBOL when I (and the rest of the class) tried and failed to get FORTRAN to correctly parse the strings. Yes, there are cases where a language can make a difference, but… let’s not get into the C# and Visual Fred wrangling again.
Ah, I’ve been going on too long. Clearly I’m passionate about Visual Basic and computer science education. I just wish I had the energy to write another book on the subject. If you want to discuss this with me privately, I would be happy to provide whatever insight I can. I provided the same to Paul and Dr. Harvey Deitel.
Comments
Sounds reasonable to me...
Posted by: Fred Farkle
|
June 2, 2007 12:22 PM
I'll agree with you to a point. I don't believe it's (effectively) possible to teach programming fundamentals to students new to it plus the basics of requirements gathering and design philosophy, all in the timeframe of a single semester course. Or even two. Where I specifically agree with you is on the teaching of effective requirements planning and design, taught as a course in its own right, and maybe as a precursor (or in conjuntion with) basic programming 101. There's enough actual coding coursework, in terms of language syntax and algorithms, to keep a CS student's head spinning, and to cram in the where's, why's, etc. would overload most young minds. And old ones ;-) Just my $.02
Posted by: Mike O'Connor
|
June 28, 2007 12:59 PM