All in-class materials will be posted here

Mon, Aug 28

Welcome!

Course structure and content overview

Compiling and executing a C# program

Wed, Aug 30

Lab Day (ACSB 2.120)

Course overview, revisited

Assignment One

  1. Open up Visual Studio, make sure it works and you can run a "Hello, world" C# program
  2. Copy the code from this file into your main cs file: assn01.cs
  3. Complete the problems in the file
    • Attempt them first using your knowledge of C# and the editor hints
    • Use a syntax reference as needed: https://www.tutorialspoint.com/csharp/index.htm
    • Finish the first five, then wave me down to get checked off
    • Finish the remainder, then wave me down to get checked off
  • Install Visual Studio at home and make sure you can run a C# program!
  • Not quite done with assn01? Finish by Wednesday and bring to lab (softcopy).

Mon, Sep 4

Labor Day (no class)

Wed, Sep 6

Lab Day (ACSB 2.120)

SVN submission

https://cssvn.utrgv.edu/svn_etomai/201810_3328/assn01_intro/<username>
  • Where <username> is your UTRGV username w/o "@utrgv.edu"
  • Use your UTRGV credentials to log in w/o "@utrgv.edu"
  • Checkout empty folder, copy your assn01.cs file in, commit

Assignment 1 Recap

  • Discussion: what's different?
  • Extras: foreach, multi-dimensional arrays

Classes

Mon, Sep 11

Assignment 2 Recap

Windows Form Applications

An older, brief tutorial walkthrough that covers the basics.

Lecture topics

  • Using form designer in VS
  • Controls and properties
  • Event handlers and programmatic access to controls
  • Working with the generated code (InitializeComponent)
  • Exception handling (try/catch)

In-class example code (for your reference)

Wed, Sep 13

Lab Day (ACSB 2.120)

Committing a Windows Forms Application

  1. Include the whole project directory
  2. Delete (or do not commit) the bin and obj directories (they are automatically generated during compilation).

GUI Labs

  • Start Assignment 3
  • Commit your work-in-progress at the end of lab!
  • Finish Assignment 3, due by class time on Wednesday (9/20)

Mon, Sep 18

Assignment 3 Questions

  • Maze panel handler
  • Matching initialization algorithm
  • foreach, List, safe cast (as)

Class design activity

Wed, Sep 20

Lab Day (ACSB 2.120)

Class Design and Unit testing

  • Tip Calculator example
  • Nine Card Golf
    • Card: value and suit
    • Deck: shuffle, peek, draw and deal
    • The rest of the classes and methods
    • RandomPlayer and a complete bot game
  • Finish Assignment 4 (will be posted), due by class time on Wednesday (9/27)

Mon, Sep 25

Grades, lab credit and assn02 comments

Questions?

Class design activity, con't

  • Card, Deck, Hand, Player
  • Classes working together: Game
  • Game loop algorithm

Wed, Sep 27

Lab Day (ACSB 2.120)

Grade reports

Lab credit and SVN

Assignment 5, due by class time on Wednesday (10/4)

Mon, Oct 2

Assignment 4 recap

  • Running Unit Tests with debugging on (use the Test->Debug menu) (a reference article)
  • Using static class data (suits)
  • Using generic List<>
  • Overriding Equals for smart comparisons (a reference article)
  • Adding a copy constructor, shallow copy of List<>
  • Random and pseudo-random issues
  • Testing Deck

Assignment 5 questions?

Wed, Oct 4

Lab Day (ACSB 2.120)

Grade update

Reference variables vs. pass-by-reference

Assignment 6, due by class time on Wednesday (10/18)

Mon, Oct 9

Assignment 5 update

  • Success? Testing?
  • Design tools
    • State machine
    • Flowchart
    • Pseudocode
    • Stubs, code

Midterm questions?

Wed, Oct 11

Lab Day (ACSB 2.120)

Midterm questions?

Finishing Assignment 5 example: A Simple Game

Start Lab 6 UI State. This is a small example of how Assignment 6 code should be organized to separate the GUI from the program state and logic.

Mon, Oct 16

Midterm

Wed, Oct 18

Lab Day (ACSB 2.120)

Finish Lab 6 UI State. During the lab period, you can work with a partner and share code. Once you leave the lab, you're expected to work on your own.

Mon, Oct 23

Lab 6 Walkthrough

  • Sample code from the click-to-display work we did in class. This is not quite the complete lab 06, but most of the necessary parts are here for you to use as reference in working on assignment 06.
  • Remember that the working directory for relative file paths is bin/Debug, so that's where I put my CardImages directory for this code.
  • Also, remember that you need to properly set the Tag property in your Label controls, as well as disable auto-sizing and clear Text.
  • GameClasses.cs
  • Form1.cs

Wed, Oct 25

Lab Day (ACSB 2.120)

Midterm Recap

Wrapping up Lab 6

  • Critiques
  • Finishing visual display of cards from Monday
    • filename handling
    • char conversion issues
  • Next Steps

Mon, Oct 30

Inheritance, polymorphism, abstract classes and interfaces

Wed, Nov 1

Lab Day (ACSB 2.120)

Lab 7 Moody 8-Ball

Mon, Nov 6

Moody 8-Ball discussion

Wed, Nov 8

Lab Day (ACSB 2.120)

Lab: form-based animation

Images

Example code (note that you can't just copy this code into a project - you have to set up the form and handlers thourgh the Visual Studio design tools)

Mon, Nov 13

IEnumerable and IEnumerator

  • The Person/People example over at MSDN is good
  • Likewise, see the PowerOfTwo/Galaxy examples for yield return here

Basic LINQ usage here and here.

Additional topic: Delegates and lambdas

Wed, Nov 15

Lab Day (ACSB 2.120)

Lab: Enumeration and LINQ

Mon, Nov 20

Binary Search Trees and Assignment 8 questions?

File I/O and Assignment 9

Vectors and movement

Wed, Nov 22

Lab Day (ACSB 2.120)

Starting work on Assignment 10: Super Mushroom Ball!

(Commit work-in-progress today for lab credit)

Lab files, cleaned up from today (remember, you can't just add these to a project as they assume you've created a Custom Contorl, added it to a form, etc)

Mon, Nov 27

Form controls recap (A9)

SMB lab review: keyboard events, grounding

Wed, Nov 29

Lab Day (ACSB 2.120)

A9, A10 questions and work time

Mon, Dec 4

A10 continued

  • Collision
  • Different behaviors: inherit or generalize?
  • Transparency issues
  • Dynamic form controls

Wed, Dec 6

Exam Review (classroom, not lab!)