BIT 142:Intermediate Programming (2009 Fall)
Lessons

 

Table of Contents
Lesson 01 Lesson 02 Lesson 03 Lesson 04
Lesson 05 Lesson 06 Lesson 07 Lesson 08
Lesson 09 Lesson 10 Lesson 11 Misc. / Unused
Lesson 01

Assignment 1 (Due Wednesday, Oct 14, by the start of class)

(Due during week #3)

In-Class Exercises:
<Class Date: Wednesday, Sep 30> (This class meets from 5:45-7:50pm every Wednesday, including this one)  

Opt-Out Form
Pre-Course Survey

Videos:

  1. First day's lecture: Overall orientation to BIT 142
  2. StudentTracker (how to create an account & brief overview)
  3. What is a Visual Studio Project? (brief overview)
  4. How to work in this class
    (how to download, extract and open a project,
    make use of the exercise documents,
    prepare, .ZIP, and hand in your homework)
    Plus an orientation to C# & enough OOP review to get you started
  5. Feedback: Game Intro: DON'T FORGET THE KEYBOARD MAPPING!!

Instructor's Materials:
Notes
Slides

 

Individual Pre-Class Exercises:
<Due: W
ednesday, Oct 7 , by the start of class (WEDNESDAY of the SECOND week of the class) >
  1. Orient yourself to BIT 142
     
  2. Get Visual Studio
  3. Install the software for XNA
    The XNA-based PCEs and assignments will be optional.
    You can install this software later, if you don't want to install it right now
     
  4. Join the class newsgroup ; Send the professor your email address (Required)
     
  5. 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

  6. Downloading and using a simple console application
     
  7. 'Starter' project for the lesson 01 PCEs (Pre-Class Exercises) (DOWNLOAD THIS!!)

  8. Basic Console I/O     (Sect. 3.5)
  9. Basic Arithmetic Operators (Sect. 3.6, 3.8)
  10. Comparison Operators (Sect. 3.9)
  11. Defining & Using an Instance Methods (Hand-In) (Sect. 4.1-4.3 (mostly 4.3)) 
  12. Function Calls: A Handy Trick (on your own)
  13. Data Types (Hand-In) (Sect. 5.11, Appendix L)
    NUnit formatting: make sure to print out all decimal / double values using two decimal places, like so:
    decimal a = 10m, b = 10.0m;
    Console.Writeline(“a:{0:0.00} b:{1:0.00}”, a, b);

     
  14. Order Of Operations (Hand-In) (End of Sect. 3.9, Appendix A)
  15. Game-Themed Instructional Modules:
    Topic #2.1, Ex #2:
    (1000.010)  (there are no required exercises for this - just orientation)
    This explains the basic project components - InitializeWorld/UpdateWorld, the coordinate system, and  XNACS1Base.World.WorldMax.Y
    NOTE:
    The 'starter project' for this is in the directory named Topic 2.1 Ex 2, in the .ZIP file that you download in step #7, above.  The next couple of modules follow this pattern, too.
  16. Topic #2.2, Ex #3 (2000.300)   (Hand-In)
    This explains what local variables are (both simple ints and the complex Vector types), and  EchoToTopStatus
    You must do FURTHER EXERCISE #3 and FURTHER EXERCISE #4
    Write your answers into the file named Topic_2_2_Ex_3_Answers.doc & include it in your .ZIP file that you submit
  17. Topic #2.2, Ex #4 (2000.305)  (Hand-In)
    This explains what instance variables are
    You must do FURTHER EXERCISE #3 and FURTHER EXERCISE #4
    Write your answers into the file named Topic_2_2_Ex_4_Answers.doc & include it in your .ZIP file that you submit
    Feedback: Public instance vars will be in scope in other classes
  18. Topic #2.2, Ex #5 (2000.310)  (Hand-In)
    This explains how to draw  rectangles on-screen
    You must do FURTHER EXERCISE #8 using the starter project in the directory named Topic 2.1 Ex 5
    NOTE: You do NOT need to memorize colors!
  19. Topic #2.2, Ex #6 (2000.320) (Hand-In)
    This explains how to draw  circle on-screen
    You must do FURTHER EXERCISE #5 using the starter project in the directory named Topic 2.1 Ex 6

    (The list of all modules is available at: http://depts.washington.edu/cmmr/Research/XNA_Games/index.php?code=wkbk )
  20. PCE Feedback (Optional - you will not be penalized for leaving this out)

     
  21. Web Hand-In for pre-class exercises and homework:
    Go to the StudentTracker web app, and create an account for yourself, and then enroll in the course.
    Once you've created an account/enrolled, you can use this direct link to this, specific class:
    http://panitzco.com/CCC/StudentTracker/course_students/display/2

 

Lesson 02

 

In-Class Exercises:
<Class Date: Wednesday, Oct 7> 

Warning: Don't worry about the recursion section (Sect. 7.13) - we'll see that in more detail later on

Video:

  • Intro, due dates, et

  • Feedback: Why would we need to distinguish between ++a & a++? - Go over that loop trick

  • TODO: PRETEST FOR LOOPS 

Instructor's Materials:
Notes
Slides

 

Individual Pre-Class Exercises:
< Due: Wednesday, Oct 14, by the start of class
>
Feedback: Nested conditionals, too?
Feedback: A couple of people wanted review on console I/O here?
  1. Post at least 1 question in the Google Group for this class.
    Answer at least 1 question (that someone else has posted) in the Google Group for this class
    (Required - Not doing this will result in a point penalty)

  2. 'Starter' project for the lesson 02 PCEs (Pre-Class Exercises)

  3. Conditional statements  (Hand n)
    (If: Sect. 5.3 / If...Else: Sect. 5.4 / Switch: Section 6.6
    Feedback: Can if/else if be used for the switch part?
    Feedback: Too much stress on code reduction - emphasize either/or instead?


  4. Console I/O, Operators (Hand-In) (previous readings)
     
  5. String Basics (Sect. 16.2) (Hand-In)
    (You may want to use this exercise as a springboard for posting questions / answers (to the Google group) about how to make good use of online help, both on the Internet, and inside Visual Studio's online help system.
    Feedback:
    Also explain online (non-VS) help sources
    Feedback: Review string -> int parsing

     
  6. Comparing Strings (Sect. 16.5) (Hand-In)
    Feedback: Didn't explain parameters
    Feedback: Help pictured in the doc doesn't match what's actually there
    Feedback: Significance of this? 
    Feedback: Give an example of where to use this (and where == doesn't work)?
  7. Integer vs. real division (End of Sect. 5.6, also Sect. 3.8) (Hand-In)
                                        (Demo Video   VS Project Used in the Video 
    (How to access demo projects) )
     
  8. Modulus operator ( % ) (Section 3.8) (Hand-In)    (Demo Video)
     
  9. Fahrenheit to Celsius (Based on your previously acquired knowledge) (Hand-In)
     
  10. Logical operators (Section 6.8)
  11. Game-Themed Instructional Modules:
    Topic 2.4, Ex #1:
    (4000.010)
    This explains basics of animation
    I'd recommend that you do FURTHER EXERCISEs #2A, 2B, 2C, 2D - basically, fiddle with things to practice this
    NOTE: The 'starter project' for this is in the directory named Topic 2.4 Ex 1, in the .ZIP file that you download in step #3, above.  The next couple of modules follow this pattern, too.
    Feedback: Too much info
  12. Topic 2.4, Ex #2 (4000.100)   (Hand-In)
    This explains how to make the ball
    bounce off the wall
    You must do FURTHER EXERCISEs #3, #4, and #5 - make the ball bounce off all sides of the screen, using the starter project in the directory named Topic 2.4 Ex 2
    Feedback: "a lot of code I don't understand" - sounds like it applies to XNA, overall
    Feedback: Each exercise seemed really incremental
    Feedback: Redundant / repetitive with non-XNA stuff
    Feedback: Too early to introduce games?
    Feedback: For further questions, where should the written parts go?

  13. Topic 2.4, Ex #4  (4000.200) (Hand-In)
    This explains the if...else statement
    You must do FURTHER EXERCISEs #4A, 4B, and 4C , using the starter project in the directory named Topic 2.4 Ex 4
  14. PCE Feedback (Hand-In)
    (Not handing this in will result in a point penalty)

 

Lesson 03

Assignment 2 (Due Wednesday, Oct 28

(Due during week #5)

In-Class Exercises:
<Class Date: Wednesday, Oct 14>

Feedback: More in-class focus on XNA (also tips on how to deal with code that's not completely understood)

 

Start by showing a finished, compiled .490

  1. Random numbers (basics)
    Random numbers (via modulus)
  2. Random numbers, manually bounded   (Demo File)

Instructor's Materials:
Notes
Slides

Individual Pre-Class Exercises:
<Due:  Wednesday, Oct 21, by the start of class>

Feedback: Clearly state that this weeks' theme is 'loops/parameters in objecs'?

Feedback: Perhaps have a 'loop until valid integer' method done here?

  1. 'Starter' project for the lesson 03 PCEs (Pre-Class Exercises)    Warning: This starter project is about 25MB in size
    Hand in only the .CS files, Word .DOCs and the feedback form!  Make sure that you preserve the folder structure!

  2. Game-Themed Instructional Modules:


    Topic 2.5, Ex #1 (5000.050)
    Orientation to the game (Ex #2, #3 - move the lines so they're centered)

    NOTE: The 'starter project' for this is in the directory named Topic 2.5 Ex 1, in the .ZIP file that you download in step #1, above.  The next couple of modules follow this pattern, too.

     

  3. Topic 2.5, Ex #2 (5000.100) (Hand-In)
    Draw a Simple Line Using A Loop
    You must do FURTHER EXERCISEs #2 - modify the code to draw 5 soccer balls instead of 3, then answer #3 (loop never run), #4 (infinite loop) in the word document named Topic_2_5_Ex_2_Answers.doc..
    Feedback: Too easy - involves changing a single numeric value

  4. Topic 2.5, Ex #3 (5000.110) (Hand-In)
    Draw a sine wave (Ex #2 - spotting errors)
    You must do FURTHER EXERCISE #2 -  Write your answer in the word document named Topic_2_5_Ex_3_Answers.doc..
    Feedback: Explanations of iterations is confusing - goes from 1 to 0 to 2?

  5. Topic 2.5, Ex #4 (5000.120) (Hand-In)
    Animate a ball moving along the sine wave
    You must do FURTHER EXERCISE #3B- draw a second (cosine) wave with a small soccerball on it
    Feedback: More details (overall) about how to use teh Vector type

  6. Topic 2.5, Ex #5 (5000.160)
    Function calls inside a loop

  7. Topic 2.5, Ex #10 (5000.305) (Hand-In)
    for loops
    Using the Topic 2.5 Ex 5 starter project, first change the while loop that draws the beam into a for loop.
    Then do FURTHER EXERCISE #2 from Topic 2.5, Ex #5, using for loop(s) instead of while loop(s)!
    (TODO: Fix the "160" name)

  8. Topic 2.5, Ex #14 (5000.330)
    Counting down using a for loop

  9. Topic 2.5, Ex #17 (5000.380)
    Compound (&&) statements
    Feedback: There are no further exercises for this one
    Feedback:  XNA exercises generally lack 'further experimentation'

     

  10. Topic 2.5, Ex #18 (5000.400) (Hand-In)
    Nested (for) loops - grid
    You must do FURTHER EXERCISE #3 (redo inner loop with a while loop) and #5 (change the labeling)


    Console-Based Exercises:

  11. keywords: break / continue (Section 6.7)
    Feedback: 'Running total' == total of input numbers? Does 201 count towards the total?
    Feedback: code should print odd, but actually prints even (or vice versa)?

     
  12. Compound Assignment operators (Section 5.9), Increment / Decrement operators (Sect. 5.10)
     
  13. Basic Random Number Generation (Sect. 7.9 (Shift/scale: 7.9.1)) (Hand-In)
    File Used In The Demo


  14. Sentinel-controlled loops: Averaging numbers (Sect. 5.7)

  15. Printing A Range Of Numbers (Previous Knowledge) (Hand-In)
      
  16. PCE Feedback (Hand-In)

 

Lesson 04

In-Class Exercises:
<Class Date: Wednesday, Oct 21 >
 

Cinnamon does debrief here

Videos:

  1. Intro

  2. Basic classes/methods

  3. Basic Parameters (Simple Types)

  4. Return Values

  5. Out/Ref Parameters (vs. Return values)

  6. Basic Arrays (of Simple Types)

  7. Arrays as parameters

  8. Arrays As Return Values

http://csharp.net-tutorials.com/basics/function-parameters/

Instructor's Materials:
Notes
Slides

Individual Pre-Class Exercises:
<Due: Wednesday, Oct 28, by the start of class>

TODO: POST-TEST for loops

Feedback: Remove the ArrayHelper class, unless we've covered basic OOP

  1. 'Starter' project for the lesson 04 PCEs (Pre-Class Exercises)
    Hand in only Program.cs and the feedback form!

  2. Basic Parameters (Sect. 4.4)
    (You may want to review the Defining & Using an Instance Methods exercise from Lesson 01)

    Video: Basic classes/methods

  3. Printing numbers, w/ params (Sect. 4.4)

    Video: Basic Parameters (Simple Types)

  4. Return Values (Hand-In
    (Sect 4.5 and 7.5 both have limited information.  Additional information is available at http://www.fredosaurus.com/notes-cpp/functions/return.html (this is actually a good reference, even though it's technically for C++ rather than C#) )

    Video: Return Values


  5. Justifying Reference Parameters (out, ref) , and normal return values  Sect. 7.14) (Hand-In
    For this PCE, you are encouraged to discuss this with your group.  Also, there may be multiple, valid interpretations of what a correct answer is for this exercise - you should focus on being able to clearly explain a reasonable rationale for your choices.
    Video: Out/Ref Parameters (vs. Return values)
    Feedback: More detail on difference?  Why choose one over the other?
    Feedback: This was the most consistently commented upon


  6. Nested Loops: Square of Numbers (Sect. 5.8) (Hand-In)
    Note: This should be very similar to Lesson 03 Exercise #10
    Feedback: What does the 'N' mean?
    Feedback: Be clear that this is a square

  7. Detecting Prime Numbers (Previous Knowledge)

  8. Arrays: Basics (Sect. 8.1, 8.2)
    Video: Basic Arrays (of Simple Types)

  9. Arrays: Usage (Sect. 8.3)
    Feedback: Clarity about what you can initialize array slots to (can be runtime determined)

  10. Arrays: Using only part of the array (Previous Knowledge) (Hand-In)
    Feedback: Missing a 'this is what you need to do' list
  11. Passing arrays to functions (Sect. 8.7, 8.8) (Hand-In
    Video: Arrays as parameters
    Feedback: More clarity that commented-out code is INcorrect, and needs to be fixed
    Feedback: Emphasize .Length, since it'll be needed by the methods
    Feedback: More clarity on returning sum?

     

  12. Returning an array from a method  (Hand-In
    (http://www.java2s.com/Code/CSharp/Language-Basics/Returnanarray.htm has an interesting example; you should feel free to Google for more info, if you need it)
    Video: Arrays As Return Values

  13. Fibonacci numbers in an array (Previous Knowledge)
                                                                                                                  (Fun link: Fibonachos)
     
     
  14. PCE Feedback (Hand-In) (This will be graded) 

 

Lesson 05

Assignment 3 (Due Wednesday, Nov 11)

(Due during week #8)

In-Class Exercises:
<Class Date: Wednesday, Oct 28>

Videos:
  1. Class Intro
  2. Object Oriented Programming (OOP): Background / Motivation
  3. OOP: (Instance) Methods, Object Allocation Demo
  4. OOP: Instance Variables
  5. OOP: Access control (public/private), getter/setter methods
  6. OOP: Constructors
  7. Basic Array of Objects

 

  1. Basic OOP - objects & instance vars.   (Chapters 4, Chapters 9)
  2. Review of classes & instances (Ch 4, Sect. 4.3)
  3. Classes with instance data (Sect. 4.5)
  4. Access Control (public, private) (Sect.  9.3)
     
  5. String Allocation Exercise
    String Allocation Rules    
    (Sample Project For String Allocation Exercise)


Instructor's Materials:
Notes
Slides
 

Individual Pre-Class Exercises:
<Due: Wednesday, Nov 4, by the start of class (no penalty for handing in as late as Nov 11th) >
  1. 'Starter' project for the lesson 05 PCEs (Pre-Class Exercises)
    Each group should hand in a single .ZIP, containing only Program.cs and the feedback form!

    BASIC OBJECT ORIENTED PROGRAMMING (OOP):
  2. Video: OOP Overview

              (Additional, optional video:
              OOP Basics: (Demo Video   Example Project
    )
             
    OOP Encapsulation: (Demo Video   Example Project)

              More Background Info:   OOP Concepts (from Sun Microsystems - the Java People)
              (Focus on the "What is an Object?", "What is a class?", and "What is inheritance?" sections - the others are nice to read, but not mandatory))


  3. Basic Class with instance method (Sect. 9.2)
    Video from the lecture: Object Oriented Programming (OOP): Background / Motivation

    Video from the lecture:OOP: (Instance) Methods, Object Allocation Demo

      
  4. Instance Variables: Adding Data To Your Class (Sect. 4.2+, Sect. 9.2)

    Video from the lecture:OOP: Instance Variables


  5. More Methods: SetValue, SetValues, Print

    Video from the lecture:OOP: Access control (public/private), getter/setter methods


  6. Access Control (public, private) (Sect. 9.3) (Hand-In)
    Feedback: Go over common errors that are caused by public/private (including related stuff like other not being able to access instance vars in other classes generally)
    Feedback: More detail on why all data should be private?
    Feedback: Add exercise on private vs. protected?

  7. Overloading: Create your own (Sect. 7.12)
  8. Constructors  (Sect 4.9, Sect. 9.6) (Hand-In)

    Video from the lecture:OOP: Constructors

    NOTE: This was originally last, after all the other videos:
    NOTE: This couldn't be moved to Lesson 01 b/c of overloading
    TODO: Move the 'calling one ctor from another' to here (from L07
    Feedback: more explanation about constructor usage/default constructors here?



  9. Variable Scope (class, instance, local/param vars) (Sect. 7.11) (Hand-In)
    NOTE: This couldn't be moved to Lesson 01 b/c of use of loops. 
    Feedback: Clarify how does exercise pertain to scope?

    ARRAY OF OBJECTS

  10. Define the Television class (Hand-In)
    Feedback: Reimplmenting this here is good practice, but kludgey


  11. Mixing Arrays and Classes: Array that contains many Television objects (Previous Knowledge) (Hand-In)
    Video from the lecture:Basic Array of Objects

     

  12. Array of (possibly null) objects (Hand-In) (Previous Knowledge; Chapter 8 (Page 261 may be useful) )
    Feedback: wordy, possibly make more concise?

  13. PCE Feedback (Hand-In) (This will be graded)
    I'm particularly interested to get your feedback on whether the Basic OOP exercises could have been moved to Lesson 01 (everything else would move forwards 1 lecture)
  14. Review for the exam!

 

Lesson 06
In-Class Exercises:
<Class Date: Wednesday, Nov 4  >
  1. Midterm Exam: Q+A & Review 
  2. <Midterm Exam>

Instructor's Materials:
Slides
 

Individual Pre-Class Exercises:
<Due: Wednesday, Nov 11, by the start of class (5:45pm)>

Feedback: Many of these exercise names are nearly identical to the ones in PCE 05 - fix this!

  1. 'Starter' project for the lesson 06 PCEs (Pre-Class Exercises)
    Each group should hand in a single .ZIP, containing only Program.cs and the feedback form!
    Remember that you need to do this in groups of 2-4 people

  2. OBJECTS AND PARAMETERS & RETURN VALUES:

    Define the Television class (Hand-In)
    (Feel free to copy-and-paste this from the prior lesson; you may need/want to modify this further during this lesson)

  3. Passing a basic object to a method 
    Video: Passing an object to a method (objects as parameters) ; also talks about null references a fair amount
              Wikipedia: Separation of Concerns    Coupling
     
  4. Returning an object from a method
    (Video: Return an object from a method (objects as return values)
    VIDEO:Return an object from a method (objects as return values)

  5. Passing two objects to a method, then returning one of them (Hand-In)

     
    ARRAY INSIDE OF A CLASS
     

  6. Mixing Arrays and Classes: An array of simple types within a class  (Previous Knowledge)  (Hand-In)
    Video: Class with an array of Double values inside it (GradeTracker)
    ( Additional Demo Video     Starter Project)
  7. Mixing Arrays and Classes: A Class that contains an array of (possibly null) reference types (Hand-In)
    (Previous Knowledge; Chapter 8 (Page 261 may be useful) )
    Video: Class with an array of Object References inside it (PointTracker)
    Video: Class with an array of Object References inside it WITH NULL VALUES (PointTracker)
    Feedback: More in-class prep?

  8. PCE Feedback (Hand-In) (This will be graded)

 

 

Lesson 07

In-Class Exercises:
<Class Date:
Wednesday, Nov 11>

 

Videos:

  1. Intro: Due Dates, etc
  2. Inheritance: Basics : Lecture Outline
  3. Inheritance:Constructor specific stuff : Lecture Outline
  4. Basic Polymorphism : Lecture Outline
  5. Polymorphism  & Arrays : Lecture Outline
  6. Named Constants (You'll need this for A4)

The "Lecture Outlines" may be useful to you or not - ignore them if they're not useful.

Instructor's Materials:
Notes
Slides

Individual Pre-Class Exercises:
<Due: Wednesday, Nov 18, by the start of class>

 

IDEA: Extract a base class from a narrative?

  1. 'Starter' project for the lesson 07 PCEs (Pre-Class Exercises)
    Each group should hand in a single .ZIP, containing only Program.cs and the feedback form!
    Remember that you need to do this in groups of 2-4 people


  2. OOP Inheritance (Specialization):  (Demo Video   Example Project)

  3. Basic Inheritance  (Chapter 10: Inheritance) (Hand-In
    Video: Inheritance: Basics
    Chapter 10 explains inheritance in detail


  4. Inheritance: Constructors
    Video: Inheritance:Constructor specific stuff
    IDEA:  Add requirement that constructors validate that params are non-negative?

  5. Inheritance: Calling Methods in the base class (Hand-In)

  6. Overloaded Constructors: Calling One Constructor From Another  (Hand-In)
    IDEA: Move back two lessons?

     

  7. Explaining basic polymorphism
    Video: Basic Polymorphism
    Chapter 11 explains inheritance in detail
    TODO: More lecture time on this important topic!!
    Feedback: Rules-of-thumb for methods that are virtual vs. new

     

  8. Creating a basic, polymorphic method

  9. Polymorphism and arrays (Hand-In)
    Video: Polymorphism  & Arrays
     

  10. Overriding a standard method: ToString (Hand-In)
     
  11. Polymorphism, arrays, and the ToString method
     
  12. Polymorphism: virtual, override, new (Read Only If You're Curious - this is NOT required)     File: Inheritance.zip

  13. Named Constants (Required)
    Video: Named Constants
    Feedback: Make sure that they actually have to write some code that uses this

  14. PCE Feedback (Hand-In) (This will be graded)

 

Lesson 08

Assignment 4 (Due Wednesday, Nov 25)

(Due during week #9)

In-Class Exercises:
<Class Date: Wednesday, Nov 18 >

Slides (used in the following NUnit videos)

Video: Class Intro
Video: What is Unit Testing?  (The bold-faced videos are expected to be especially helpful)

Video: Overview of the NUnit-based autograder

Video: Details of the tests; Example walk-through for a couple easy tests
Video: A3 Help

 

  1. Counting objects (review, solution)

For next time (possibly):

Video: [SetUp] Attribute & per-test setup (Hand-In) - PCE 04 - notice how the [Setup] is used to create the object that we USED to call from main
PCE 06 #5 - PickMoreExpensiveTV (objects as parameters and return value)

 

Instructor's Materials:
Notes
Slides   

Individual Pre-Class Exercises:
<Due: Wednesday, Nov 25, by the start of class>

Feedback: Trouble checking an object for null?  (When do they check objects for null here?)

NUNIT TODO: ADD FORMATTING FOR DECIMAL/DOUBLE (TWO DECIMAL PLACES IS FINE)

Feedback: Make sure that predicatable errors (such as when things get uncommented) are explained well ahead of time

  1. Starter project for the below videos

  2. Familiarize yourself with NUnit-based 'autograded' exercises:
    Read this note: Tests to ignore

     

  3. Make failing tests pass (Required)
     

  4. Making a basic unit test pass (Hand-In)

  5. Fixing broken output

  6. Fahrenheit to Celsius (tested by NUnit) (Hand-In)
    Feedback:  This was already solved in the starter project?

  7. Practicing with the  [TestCase] Attribute: Passing arrays to functions (Sect. 8.7, 8.8)  (Hand-In)
    (This is a redo of
    PCE 04, Exercise #11  - Arrays as parameters - you may want to double-check any feedback you got for that lesson while working on this exercise)

  8. Practicing with the [Values] Attribute : Testing the Dishwasher class (Sect 4.9, Sect. 9.6) (Hand-In)
    (This is a redo of PCE 05, Exercise #
    8 - Constructors )
  9. PCE Feedback (Hand-In) (This will be graded)

 

Lesson 09
In-Class Exercises:
<Class Date: Wednesday, Nov 25 >

 

Videos:

  1. Introductory Slides / Due Dates / Etc.
  2. Linear/Binary Search
  3. Binary Search on paper: Example Solution
  4. Bubble Sort
  5. Bubble Sort on paper: Example solution
  6. Bubble Sort: Warning about the Null Reference test case in this week's tests

In-Class Exercises (make sure to do these (in-class, or on your own) as they make a great source of quiz/exam questions!)

  1. Linear Search By Hand

  2. Binary Search By Hand   (Video: Binary Search on paper: Example Solution)

  3. Bubble Sort By Hand   (Video: Bubble Sort on paper: Example solution)



    The following were NOT done in-class, and your NOT responsible for knowing this material:
  4. Selection Sort (Algorithm, and by hand)  (optional)

  5. Using .Net's Array.Sort, Array.Search 

CIEs:

  1. Go to: http://assessment.cascadia.edu or http://assessment.cascadia.edu/cie/default.aspx
  2.  *Enter your SID and Pin #

  3. Select the class from the drop down menu

  4. Click on the Start Evaluation button

  5. Fill out and submit the survey

Instructor's Materials:
Notes

Slides 

Individual Pre-Class Exercises:

< Due: Wednesday, Dec 2, by the start of class >

  1. 'Starter' project for the lesson 10 PCEs (Pre-Class Exercises)
    Each individual or group should hand in a single .ZIP, containing only Program.cs and the feedback form!


  2. Sorting & Searching: setup for the class

  3. Linear Search
    Video: Linear/Binary Search
    Video: Binary Search on paper: Example Solution

  4. Binary Search

  5. Write recursive binary search
    You are encouraged to discuss this with your peers, using the Google Group, if you're looking for more guidance with the details of the algorithm!
    Feedback: REMOVE  - no longer covering recursion
  6. Linear Search: Measuring Performance (Hand-In)

  7. Binary Search: Measuring Performance (Hand-In)

  8. BubbleSort
    Video: Bubble Sort
    Video: Bubble Sort on paper: Example solution
    Video: Bubble Sort: Warning about the Null Reference test case in this week's tests

  9. BubbleSort: Measuring Performance (Hand-In)
    Feedback: Move the Excel thing back to here?

  10. PCE Feedback (Hand-In) (This will be graded)

 

Lesson 10
In-Class Exercises:

<Class Date: Wednesday, Dec 2 >

 

Vidoes:

  1. Intro
  2. Overview of Big Oh
  3. Big Oh: Linear Search
  4. Big Oh: Binary Search
  5. Big Oh: Bubble Sort

In-Class Exercises:

  1. Final Exam: Q+A & Review  

  2. Analyzing the different algorithms
    (Demo Video: Scatter Plots in Excel)
    If you're looking for more information about Big "Oh" Notation, you can find it here.  You are also invited to search the Internet, etc.

    For use in-class:
    Runtimes.xls
     
  3. Mike's explanation  of Big "Oh" Notation- ignore the stuff that's specific to BIT 143)
  4. Big "Oh" Worksheet: Function Review
  5. Big "Oh" Worksheet: Practice Analyzing Time & Space

Instructor's Materials:
Notes
Slide

Individual Pre-Class Exercises:
<Due: Wednesday, Dec 9, by the start of class >
Feedback:
instructions are written generically, then fixedup for specific exercises (i.e., uncomment 2 lines of code, that don't exist)????
  1. Final Exam: List of Review Topics

 

Lesson 11

In-Class Exercises:
<Class Date: Wednesday, Dec 9>

  1. Required Post-Course Evaluation

    DON'T FORGET TO DO THIS FOR BOTH 142 AND 143!!!!

  2.  <Final  Exam>

Instructor's Materials:
Slides

Individual Pre-Class Exercises:
<Due: Wednesday, Dec 9, by the start of class >

  1. Final Exam: List of Review Topics

The Huge Due Date List

Note: This list is an attempt to collect up in a single spot all the due dates for the term.  These dates may change.  There may be more items added.  It is your responsibility to make sure that you know what's due when, to make sure that you don't miss anything.

In particular, the homework revisions may be moved to a week earlier, if the instructor can return the initial version within 24 hours of the due date.

Due on:

(For items due on a Wednesday, the time which they are due by is the start of class, unless otherwise stated)

Activity
Monday, Oct 5, by NOON Email the professor, so that the professor has your email address
Wednesday, Oct 7, by the start of class PCE 01
Wednesday, Oct 7, by the start of class Google Group: Sign yourself up, post a question, answer someone else's question:
Wednesday, Oct 14, by the start of class PCE 02
Wednesday, Oct 14, by the start of class A1 (initial version)
Wednesday, Oct 21, by the start of class PCE 03
Wednesday, Oct 28, by the start of class PCE 04
TBA A1 (final, revised version)
Wednesday, Oct 28, by the start of class A2 (initial version)
Wednesday, Nov 4, by the start of class PCE 05 (no penalty until Nov 11)

MIDTERM  EXAM
Wednesday, Nov 11 NO LECTURE - Class will be online, instead
Wednesday, Nov 11, by the start of class A3 (initial version)
Wednesday, Nov 11, by the start of class PCE 06                
Wednesday, Nov 18 by the start of class PCE 07
TBA A2 (final, revised version)
Wednesday, Nov 25, by the start of class A4 (initial version)
Wednesday, Nov 25, by the start of class PCE 08
TBA A3 (final, revised version)
Wednesday, Dec 2, by the start of class PCE 09
Wednesday, Dec 2, by the start of class Final Date To Hand In Any homeworks, revisions to homeworks, or PCEs (except PCE 10)
TBA A4 (final, revised version)
Wednesday, Dec 9, by the start of class PCE 10
Wednesday, Dec 9 FINAL  EXAM

 

Back to BIT 142's homepage

Unused Lecture Material  NUnit-ORIG Map

BIT 143's Lessons Page

 

NUnit for next time: drop recurrsion, use an entire lesson for NUnit, then push it out past the console stuff, and focus on returnvalues?+

 

 


Solicit Feedback On:

PCE 01: is it confusing to have the 'create your own console' exercise, then have to use the template a lot
Is it better to put off the ref/out/return values till later?  ordering of functions vs. OOP?
How helpful was it to have the 'upcoming due dates' and the 'grand table of due dates'?

 

Overall Feedback:
Make sure that all starter projects compile as downloaded
Include a copy of the desired program's output?