ITP 136 C# Programming I
Course Objectives
Learning Objective A ➢ Acquire the fundamentals of object-oriented programming and design using C#
Learning Objective B ➢ Gain an understanding of concepts of object-oriented language, encapsulation, inheritance, and polymorphism
Documentation: (1) C# Fundamentals for Absolute Beginners
(2) Linkedin Certificate C# Best Practices
(3) Linkedin Beginners Guide to C#
Learning from Experience:
I was hired for my position at the National Association of Letter Carriers to maintain a custom application written in Visual Foxpro 7. Since Visual Foxpro had already been discontinued by Microsoft, I knew that this business-critical application needed to be re-written in a more modern language. I began researching options to replace the Foxpro application. At my request, NALC purchased a copy of Visual Studio and I started learning C#.
I enrolled in a “life-time membership” to the LearnVisualStudio.NET website which featured on-line training with Bob Tabor, a Microsoft MVP for C#. The website contained a variety of courses on C#, ASP.NET, and object oriented programming. The site has transitioned platforms twice being called DevU and now BobTabor.com. While I still have access to the site, the record of courses I took has does not appear to have migrated over. I did find a course description and have added it as Documentation (1). Since I was already familiar with other programming languages, I was able to adjust quickly to the new syntax of C#. The video course, "C# Fundamentals for Absolute Beginners" covered many of the topics included in the NVCC Course Description for ITP136. The course encouraged the creation of a C# “Cheat sheet” text document that served as a quick reference to C# syntax. I have included my "cheat sheet" notes at the end of the course description in Documentation (1). More recently, I completed some Linkedin Learning courses on C# to keep my knowledge of the language fresh. I completed “Beginner’s Guide to C#” and “C# Best Practices for Developers” in May 2021.
Learning Objective C ➢ Learn the C# programming language within the .NET framework
Documentation: (4) Letter from Mr. O’Malley, NALC
(5) Registration Application Documentation
(6) Code Sample from Registration application
(7) Visual Studio LIVE! Training
Learning from Experience:
Another assigned responsibility of my position was to assist in the registration process at NALC’s biennial convention. Union members are elected to represent their branches at the convention. Over 6,000 delegates are usually in attendance. Since the delegates vote on issues related to the union, their identity must be validated when they check in. The first year I attended, 2014, the registration process took place as it had for years previously. In the months before the convention, registered delegates were entered into the IBM mid-range computer system that was housed at headquarters. Lists of verified delegates were printed and placed in three-ring binders by state and then branch. For a delegate to be registered, first the binder for his state was located. Then his name had to be checked off the list for his branch. At the end of the day, the checkmarks in each state binder had to be counted. It was a tedious process. Attendance counts were issued on each day of the Convention.
In preparation for the 2016 Convention, the executive vice president decided that we should modernize our approach to registration. He approached our IT team about implementing a new registration system that used barcode scanning. NALC had sent me to attend "Visual Studio LIVE! - Expert Solutions for .NET Developers" when it was in Washington, DC in 2014 and I felt confident that I would be able to write a .NET application to deploy on a server we could bring with us to the convention. Transporting the IBM mid-range system was not an option. Since I had been involved in the pencil and paper process in 2014, I had a good idea of the project requirements, but I began interviewing key stakeholders to be sure I understood the requirements. In coordination with the team that issued delegate badges, we determined that all badges would be printed with the delegates membership number appearing as a barcode along with their name. When delegates brought their badge to the registration booth it would be scanned, their name verified, and the database would be updated to record their attendance. This was a simple procedure technically. Get the membership number from the input field, find the correct record in the database, and replace a flag field with T (true). The application would also need options to display all delegates for each branch, replace delegates with an alternate, and display a report with counts for categories of registered delegates. See documentation (5) Registration Application Documentation to see screen shots of the finished application.
I used C# and .NET to develop the Registration application. Sample code is available in documentation (6). After discussions with the NALC networking team, we decided on a hard-wired local area network at the convention center. I used IIS to create a web server to deploy the app on a new server. I used SQL Express to create a database and imported the delegate information from our IBM iSeries into it. For a test run, we printed stacks of badges and set up several laptops and had staff members scanning as fast as they could to make sure the application and server could meet the demands of the registration booth. All went smoothly so we reset the data and shipped the machine to Los Angeles. I also made a backup copy onto an external hard drive and carried it with me on the plane.
Upon arriving at the convention center, the network team connected 14 laptops with barcode scanners to the server. I trained the union members who would be operating the registration booth and the registration began. When a delegate badge was scanned, the application checked the database to be sure they were an approved delegate and displayed their name and branch number as confirmation. The application easily handled the demands of registering more than 6,000 delegates over the next three days. At previous conventions lines had been long and wait times could be 20 minutes. With the new system delegates walked right up and were processed in seconds. The advantages of a digital system even more obvious the first evening after the booth closed. Instead of staff spending hours counting off tick marks from paper lists, we clicked a menu option and got a count in seconds. The staff happily went to out to enjoy the opening reception they had always missed with the old system.
My learning style is kinesthetic. I find the best way for me to learn a new computer language, framework or skill is to jump in with a project. Writing the NALC registration application cemented the principles I had learned in the on-line C# class and at Visual Studio LIVE! The success of the new digital registration process clearly demonstrates my competency and ability to apply the fundamentals of object-oriented programming and design to meet a business objective.