Forms

Forms will represent the bulk of what is new, interesting, and useful about this course. Rather than many of your previous programming projects, C# forms allow us to easily create, manipulate, and dynamically program interactive applications, complete with text fields, drop-down menus, check boxes, and buttons. You can expect that we will spend a substantial amount of time studying not just the implementation mechanics of these forms, but also design strategies and philosophies of what makes a good user interface (UI) and user experience (UX). This will often have us referring to bad UI/UX design, as a simple way to consciously recognize what we already know is good/bad design. Sometimes, the UI/UX is intentionally designed to be unintuitive (what's called a "dark pattern").

You've no doubt spent a significant amount of time on the internet and/or using various computer applications, the best of which come with design features that you may not be consciously aware of, consider, or figure out. Good UI/UX design should just intuitively yield itself to the user, responding to them as they expect it should, and provide access to the desired functionality without too much struggle.

Later on in the class, I'm going to ask everyone for two (2) examples of good/bad UI/UX design, so that we can dedicate some time to discussing what about them works (or fails) and understand their subtley when it comes time for us to work on our own UI/UX. While there is an entire profession dedicated to simply working, building, and refining an applications UI/UX, the more that you — as programmers/software engineers — can connect to and contribute as part of the development team, the better. At the very least, your practice with some of the back-end mechanisms for these objectives can help qualify what can be done, the difficulty/time/resources of these implementations, and ways to alternatively reach goals. It may be the case that the designer simply doesn't know what .NET can do or make easy to realize, which can lead to a better final product.

In short: collaboration is the foundation upon which great things are built. The better you can speak the language of design, the more valuable you will be to your development team.