Introduction to this course, Visual Studio and C#; review of OOP

Note: All due dates are listed on the main page for this course.  They are NOT listed here.

"Online" students are encouraged to attend this lecture but are not required to (nor expected to).
There will be videos recorded of the in-class lectures; these videos will be posted online after class ends.

Individual Post-Class Exercises

EVERYONE must complete these exercises!

FYI:

The NUnit-related material in this lesson (and Lesson 02, and Lesson 03) is particularly important.
Make sure that you do that work!!

  1. Start-of-lecture Slides (Required)
    Online students will need to read these on their own. 
    Hybrid students will see them at the start of class.
    1. Due dates: look at slides 38+ in this deck
  2. Course Orientation
    Orient yourself to this course, and get familiar with how it operates.

    1. Should you take this course in a hybrid format or an online format?
      Online quiz to help you decide: https://www.careerwise.mnscu.edu/education/onlinequiz.html
      1. The real value of a quiz like this is not the Yes-Or-No answer it gives you.  What's useful is to use the quiz as a starting point to reflect on your own approach to learning, and think about stuff you might not have considered on your own.  For example, you probably thought about "How good is my Internet connection?" before signing up for an online class but you might not have thought about "Do I seek help when I'm stuck?"
    2. Choose whether you want to take this course in the online format (synchronous exams, everything else is asynchronous) or the hybrid format (synchronous exams AND synchronous, weekly, Zoom class sessions) (Required)
      If you do not inform the instructor then the instructor will grade you as if you're an online student.
      1. If you want to be in the ONLINE version of the class you must create a document named ONLINE_STUDENT.  It can be a text file, a Word doc, a PDF, or whatever else you'd like.  Inside that file you must copy the following:
        I, <PUT YOUR NAME HERE>, want to be graded as an ONLINE STUDENT this quarter.  <YEAR> <QUARTER-Fall, Winter, etc>
        (Replace the stuff in < > brackets with your name, the year, and the quarter.)
      2. If you want to be in the HYBRID version of the class you must create a document named HYBRID_STUDENT.  It can be a text file, a Word doc, a PDF, or whatever else you'd like.  Inside that file you must copy the following:
        I, <PUT YOUR NAME HERE>, want to be graded as an HYBRID STUDENT this quarter.  <YEAR> <QUARTER-Fall, Winter, etc>
        (Replace the stuff in < > brackets with your name, the year, and the quarter.)
    3. NOTE: For 2020 Spring everyone will be taking this class as an "ONLINE" student
    4. Orient yourself to BIT 143
    5. Post at least 1 question in the "Lesson 01, 02 Discussion Area" (in Canvas). (Required)
      Answer at least 1 question (that someone else has posted) in the "Lesson 01, 02 Discussion Area" (in Canvas). (Required)
      (Not doing these will result in a point penalty)

      (You need to do this by start of the second lesson.  I've posted this here at the start of Lesson 01 so that as you're doing this week's work you will remember to post questions when you get stuck / need help / find something confusing / find something interesting / want to share something with the rest of the class / want to challenge the rest of the class :)  )
    6. Score 100% on the "Syllabus Comprehension Quiz" in Canvas (Required)
      You should read throgh the syllabus and make sure that you understand everything for yourself (after all, it describes how you're going to be graded); if you have any questions please post them to the Canvas discussion forum.
      You're allowed to take the quiz as many times as you want. 
    7. The advice I give to BIT 142 students for organizing their work is still good for BIT 143 students.  Please read through this BIT 142 document (ignore the list of files to hand in) and then think about how you'll organize your work in this class.
    8. Please make sure that you have Slack installed, and then join me and all your fellow students by following the link posted in Canvas.
      There are additional instructions on the main page in Canvas for this course.
    9. Please make sure that you have Zoom installed; I will announce office hours (including more detailed instructions for joining office hours) around the start of the quarter..
      There are additional instructions on the main page in Canvas for this course.
    10. Make sure that you're comfortable using Canvas - there are additional instructions on the main page in Canvas for this course.
  3. Midterm and final exams: Ensure that you can attend them (Hand-In)

  4. Install And Configure Your Software
    Install software (like Visual Studio) and configure web applications that you'll use in this course.

    1. We'll be using Visual Studio in this class, which runs on BOTH Windows AND Mac.
      1. WARNING: DO NOT GET VISUAL STUDIO CODE

        Visual Studio Code is a new product from Microsoft that (confusingly) has the same name but is fundamentallly different. 
      2. This document contains instructions for how to get access to Visual Studio regardless of whether you have a computer running Windows, a computer running MacOS, or a computer running Linux
        1. Here are specific instruction on how to install Visual Studio 2019 For Windows
        2. Note that Visual Studio on Mac has a problem reading input from the keyboard (Console.ReadLine doesn't work). 
          You can fix that problem by following this advice
          .
      3. If you don't want to (or can't) install Visual Studio on your own computer
        then you can use Cascadia's servers from your home computer.
        The easiest way is to access a virtual desktop using https://desktop.cascadia.edu .
    2. Update your email address in Cascadia's system (Required)
    3. Make sure that you can access the Canvas system; set up Canvas to notify you when  announcements are made and and comments are posted to discussion groups (Required)
  5. Download And Understand The Video Viewing Quiz/Outline (Hand-In)
    You have two choices to demonstrate that you've watched (and understood) the videos: either create an outline or fill out the viewing comprehension quiz (described below).  Either way you hand in the viewing quiz / video outline by including the appropriate file in the .ZIP file you hand in for this lesson (in either Word .DOC/.DOCX format or .PDF format).
    NOTE:
    You can download a .ZIP of all the videos for this lesson from Microsoft's OneDrive website by opening the folder (click this link to open the folder), then clicking on the "Folder Actions" menu, then clicking on the "Download Folder" menu item.

    • Starter File for outlining this lesson's videos

      Directions for outlining the videos
      Since this is the first time you will be submitting an outline I recommend that you:

      1. Read the directions above, and watch the three videos therein (each video is about a minute or two long)
      2. Watch the first video below while looking at the sample outline in the starter file, in order to get a feel for how much detail you're expected to produce.
      3. Watch the second video while filling in the partially completed outline (also in the starter file)
      4. For the remaining videos you’re on your own!
    • Viewing Quiz for Lesson 01
      NOTE: A good way to do the viewing quiz is to have the quiz open while watching the videos, and fill the questions in as they're covered in the  video)
      NOTE 2: There are no viewing quiz questions for the 'NUnit' material - for those videos you MUST do video outlines (as explained above)

  6. Getting Started With Visual Studio Projects
    Get familiar with how to use Visual Studio to create or use small programs.

    1. VIDEO:
      OneDrive: How To Use My Videos
      DropBox: How To Use My Videos
      •  PowerPoint slides used in the video
      • These are two links to the exact same video - you can watch either one, depending on which one(s) is available.
        You only have to watch this once, no matter which server you use.
      • OneDrive now has a policy of not allowing more than a certain number of downloads/viewings, and sometimes when everyone is trying to watch the videos at once then some people are given an error message saying that I've exceeded my sharing limit.  In order to get around that I'm hosting the videos on two different services, in the hopes that we won't hit the limit on both services.
      • If you're getting error messages on either OneDrive or DropBox please contact your instructor ASAP to let them know.
    2. Create a simple console application 
      (Ch 3.3 (walkthrough),
      3.2 (explanation of the program) )  
      There is a Demo Video that walks you through this, too
    3. How To download and use a simple console application
    4. 'Starter' project for the lesson 01 PCEs (DOWNLOAD THIS!!) (Project updated on 1/12)
      Download and extract this file.  You will (generally) use it to do all the programming exercises for the rest of this lesson.
      (Note: You may not use all the provided classes in the starter project)
       
      1. The above link provides a starter project that works with VS 2019 and .Net Core (.Net 5, really).
        In case that doesn't work I'm going to leave a link to the previous version of the starter project here.
        ONLY DOWNLOAD THIS IF YOU HAVE PROBLEMS WITH THE ABOVE PROJECT

        Please note that for Lessons 01 and 02 the exercises are the same for both versions are the same but the file structure is very different.
        The new version (above) has everything in one file while this older, backup version has several different files (and projects) instead.
      2. OPTIONAL Exercise: How To Use Multi-Project Starter Solutions
        (related, very optional reading: How to create your own multi-project solutions)
        You'll need this information to use the older version of the starter project (because it contained several projects within the solution)
  7. Review: Basic Exercises:
    (Note: there no videos for these because they review material covered in pre-requisite courses)

    1. Exercise: Console I/O, Operators (Chapter 3) (Hand-In)
    2. Exercise: Fibonacci numbers in an array (Hand-In)
  8. Review: OOP Basics:

    1. (Demo Video   Example Project)
      OOP Encapsulation:
      (Demo Video   Example Project)
      Note: These videos may be helpful, but are not "required viewing" (i.e., you do not need to outline them, nor are there viewing quiz questions on them)
      • These videos are hosted on Cascadia's servers so we shouldn't need a backup)
    2. Exercise: Review: Variable Scope (class, instance, local/param vars) (Hand-In)
    3. Using The Distance Formula (Demo Video)
      (There is nothing to hand in for this PCE.  Personally, I'd recommend doing a couple of examples by hand in order to make sure that you understand the formula.  You will be using the distance formula in exercise #16 ("Review:Circle class: Overlap method") below, and in homework assignment 2, and elsewhere.)
      Note: This video may be helpful, but is not "required viewing" (i.e., you do not need to outline it, nor are there viewing quiz questions about it).
    4. Exercise: Review: Class Composition: Circle Class (Hand-In)
    5. Exercise: Review:Circle class: Overlap method
  9. Dynamic Memory Allocation

    1. Exercise: Review: Arrays of Simple Types (Hand-In)
    2. Video:
      OneDrive: SmartArray Overview
      DropBox: SmartArray Overview
    3. Exercise: SmartArray Overview
    4. Video:
      OneDrive: SmartArray (Basic class implementation)
      DropBox: SmartArray (Basic class implementation)
    5. Exercise: Basic SmartArray Class (Hand-In)
      Note: The starter file for this lesson contains a Visual Studio Solution.  That Solution contains two separate projects. The SmartArray code is in the second project - if you want Visual Studio to run that second project you will need to right-click on the project and select "Set As Startup Project" from the context menu (it's about halfway down).
      If you can't get this to work then you might want to post a question to the Canvas discussion group asking for help.
  10. Unit Testing With the NUnit Framework

    1. The goal for this section is to get an overview of what unit testing is and how it works AND
      to get the NUnit tests to appear in VS
      (you do NOT have to get the tests to actually pass - that's for next week)
    2. Starter project (using VS 2019, NUnit 3, and .Net Core / .Net 5) for the below videos and exercises (yes, this is separate from the above starter project.  You do NOT need to hand this one in)
    3. Familiarize yourself with NUnit-based 'autograded' exercises:
      Slides (used in the following NUnit videos)
      (NOTE: I've made some (minor) adjustments to the slides and  they're not exactly the same as the ones in the video.)
    4. Put in a note about 'Video Outlines only'
    5. VIDEO: (2:18) (2:18 means that this video is 2 minutes, 18 seconds long)
      OneDrive: Don't crack the system
      DropBox: Don't crack the system
    6. VIDEO:  (5:17)
      OneDrive: What is unit testing?
      DropBox: What is unit testing?
    7. VIDEO:  (1:59)
      OneDrive: Overview of NUnit
      DropBox: Overview of NUnit
    8. VIDEO:  (9:01)
      OneDrive: How To Get NUnit3 To Work In Visual Studio
      DropBox: How To Get NUnit3 To Work In Visual Studio
    9. Exercise: Hand in a screenshot showing the Test Explorer with the tests in it (Hand-In)
  11. Git and GitHub
    1. Introduction to Git, GitHub
      1. Exercise: What is Git/GitHub?
      2. Exercise: GitHub - create account
    2. Git Software Setup
      1. Exercise: Get client software
      2. Exercise: Download the project
    3. Working with Git(Hub) locally
      1. Exercise: Change, commit, push - text file (Hand In)
      2. Exercise: Change, commit, push - source code (Hand In)
      3. Exercise: Tell me your name (Hand In)
      4. Exercise: Adding a file to git, using VS on your computer (Hand-In)
  12. Final Steps
    A couple last steps, then you'll hand in your work for this lesson.

    1. Exercise: Personal Data Sheet (This is optional but helps me get to know everyone.  Please hand this in with as much information as you're comfortable sharing)

    2. Hand in your work:
      Please follow the instructions listed here
      (These instructions are for BIT 142 specifically, but they should make sense for this class, too)

      MAKE SURE THAT YOU INCLUDE THE 'PLACEHOLDER' FILE FOR INSTRUCTOR FEEDBACK

    3. Hand in your work:
      Go to the StudentTracker  web app, and create an account for yourself, and then "enroll" in the course.
      Please submit a .ZIP (and ONLY a .ZIP - not a .RAR, .7z, etc) that contains both of the Program.cs files, the video outline/viewing quiz .DOCX (or .PDF), the EXAM_PLANS.DOCX (or .PDF), the HYBRID_STUDENT or ONLINE_STUDENT file, any other files you wish to include (such as the personal data sheet and your schedule), and leaves out every thing else (as much as possible).

      1. As long as I can figure out which Program.cs is which I'll be happy.
        One good way to do this is to put a folder named SmartArray_Test with the SmartArray Program.cs in that folder.

      2. VIDEO: Using StudentTracker

      3. VIDEO: How to .ZIP your homework into a single file

      4. Remember that you can use an extension to hand in your work slightly late (see the lecture 1 slides at the top of this page for details).
        Once you get the feedback (the grade) from the instructor you have a limited time to email your missing work to the instructor (make sure to tell the instructor that you're using an extension). 
        You can use an extension if you forgot to hand in the entire .ZIP file, and you can  use the extension if you forgot to include an entire, specific file.  You CANNOT use an extension to revise work that you submitted and got a grade on.

    Preparing For The Future

    1. Make sure that you're working on homework assignment #1 (abbreviated A1).
      Details are listed on the homework assignment page.
      The due date is listed on the main page.

    2. Email the instructor immediately if you do NOT want your email address sent to Microsoft for the full Dreamspark membership
      The instructor is planning on doing this immediately after the next class is done, so email the instructor immediately if you don't want your email address sent to Microsoft!

    3. Schedule Time For The Midterm Exam
      The midterm exam will occur in-class on the day listed on the main page for this course.  For hybrid students this isn't an issue - y'all are here anyways. 
      For online students you'll need to secure time to drive to school, take the exam, and then drive back.  Make sure to start talking to your employer/spouse/etc/etc NOW so that you're able to be there for the final exam. 
      Remember - skipping the midterm exam will get you a zero!!!

    4. Schedule Time For The Final Exam
      The final exam will occur in-class on the final day of the quarter.  Just like for the midterm you need to schedule this now so that you can be here then. 
      Remember - skipping the final exam will get you a zero!!!

    5. Start practicing what you've learned here
      Remember that in order to really learn this stuff you're going to need to practice it.  Go back and redo the exercises from this lesson until you've really got it down.  Specifically, make sure that you've got a solid command of the I/O and the expression evaluation.

In-Class Materials:

These materials are used by students in the hybrid class during leture time.  Online students can safely ignore everything in this 'In Class Materials' box.

In-Class Materials:

  • Detailed instructions for in-class work
  • Starter project for the in-class exercises

Instructor's Materials:

  • Notes
    • These notes are for the instructor’s use, and not meant for public consumption.
      They're posted here on the off chance that you find them useful - If they help you, that’s great.  If not, please just ignore them :)

Videos recorded during class (of the In-Class Exercises):