When I started programming, I knew nothing of version control. My idea of tracking changes was saving a copy of a file or project, or keep notes on what I had changed (and you can guess how effective THAT was). It was pretty mindblowing when I was introduced to the idea that I could freeze my code in a given state and then branch off to make changes without risking what had been working before. That being said, it takes a little bit of practice to do this without creating additional headaches, and following both the syntax rules of the platform and the unwritten ones that fit your work style are key. More than once I managed to break my repo in creative ways that left me losing hours of work. Through a series of mistakes and having to dig out of less-than-ideal situations, I've developed a handful of behaviors that have served to prevent many problems. As they've served me well, I'd like to share them with you before we get into the actual coding of this project (it'...
I've said it before, I kinda know what this program needs to do. Translating that into C# objects that will interact with each other intelligently and efficiently...that's a whole 'nother can of worms that I personally find easier as a visual. I know Students will have courses. Courses will have evaluations (like quizzes and tests). Evaluations will have Scores. Deciding how that works, from a database perspective, will help ensure I'm configuring my code to back into the correct place and identify ways to simplify the data layer--storing instructors in their own table will allow possible features down the road of letting students see how many A's a teacher hands out historically, for instance, but also makes me decide if my entity should have an instructor object attached, or should that be a domain model thing? I'm a very goal-oriented person in that if I know there's a river to cross 500 miles from now, I want to plan the next 500 miles of route t...