Nelson Series Talk Wed, 11/10 7:00 pm Security, Liberties and Trade-offs in the War on Terrorism Since 9/11, we have enacted the Patriot Act, tighter screening.

Slides:



Advertisements
Similar presentations
Programming with Alice Computing Institute for K-12 Teachers Summer 2011 Workshop.
Advertisements

EECS 110: Lec 14: Classes and Objects Aleksandar Kuzmanovic Northwestern University
"Intelligent" CS 5 An object is structured data that is alive, responsible, and intelligent. Sound too friendly? This week’s objects and classes will be.
Logic & program control part 3: Compound selection structures.
Intelligent CS 5 ? HW 11 (1 problem !) M/T sections W/Th sections due Sunday, 11/14 at midnight due Monday, 11/15 at midnight Recitation for HW11 -- Friday.
Loops – While, Do, For Repetition Statements Introduction to Arrays
Arrays, Loops weeks 4-6 (change from syllabus for week 6) Chapter 4.
A tour around Java General introduction to aspects of the language (these will be covered in more detail later) After this tour you should have a general.
1 The First Step Learning objectives write Java programs that display text on the screen. distinguish between the eight built-in scalar types of Java;
Week 4-5 Java Programming. Loops What is a loop? Loop is code that repeats itself a certain number of times There are two types of loops: For loop Used.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Summary and Exam COMP 102.
A Computer Science Tapestry 1 Recursion (Tapestry 10.1, 10.3) l Recursion is an indispensable technique in a programming language ä Allows many complex.
A whole new class of programming CS 5 today HW10: Due Sun, Nov 15 Pr0: Ariane 5 Reading Pr1/Lab:the Date class Pr2 Connect4Board Pr3 Connect4Player (extra.
© The McGraw-Hill Companies, 2006 Chapter 4 Implementing methods.
Java Classes Using Java Classes Introduction to UML.
IS 313 Today Schedule Week 0: Classes Objects You're saying that Python's got class ? Dictionaries and Classes Week 1: Week 2: Where.
By Nicholas Policelli An Introduction to Java. Basic Program Structure public class ClassName { public static void main(String[] args) { program statements.
Week 6 - Wednesday.  What did we talk about last time?  Exam 1 post-mortem  Recursive running time.
Passing Other Objects Strings are called immutable which means that once a String object stores a value, it never changes –recall when we passed a message.
CSc2310 tutoring session, week 8 Fall, 2012 Haidong Xue 5:30pm—8:30pm 10/23/2012 and 10/24/2012 -Using Exceptions -Homework 4.
Chapter 5 Loops.
Homework 11 Due ( MT sections ) ( WTh sections ) at midnight Sun., 11/14 Mon., 11/15 Problems
Programming for Beginners Martin Nelson Elizabeth FitzGerald Lecture 5: Software Design & Testing; Revision Session.
5 BASIC CONCEPTS OF ANY PROGRAMMING LANGUAGE Let’s get started …
Homework 3 Due ( MT sections ) ( WTh sections ) at midnight Sun., 9/21 Mon., 9/22 Problems
This week in CS 5 HW 9 (2 problems) M/T sections W/Th sections due Sunday, 11/4 at midnight due Monday, 11/5 at midnight Recitation for HW9 -- Friday 11/2.
Homework 9 Due ( M & T sections ) ( W & Th sections ) at midnight Sun., 11/3 Mon., 11/4 Problems
COP Structures Instructor: Diego Rivera-Gutierrez I’m back baby!
Looping and Counting Lecture 3 Hartmut Kaiser
CMP-MX21: Lecture 4 Selections Steve Hordley. Overview 1. The if-else selection in JAVA 2. More useful JAVA operators 4. Other selection constructs in.
1 CS 177 Week 12 Recitation Slides Running Time and Performance.
BEGINNING PROGRAMMING.  Literally – giving instructions to a computer so that it does what you want  Practically – using a programming language (such.
Lists, Tuples, Dictionaries, … + lots of computer work for the programmer's work! T = {'abe' :['homer','herb'], 'jackie':['marge','patty','selma'], 'homer'
A brief introduction to javadoc and doxygen. What’s in a program file? 1. Comments 2. Code.
Homework 8 Due ( MT sections ) ( WTh sections ) at midnight Sun., 10/28 Mon., 10/29 Problems Reading is under week 7, however.
Object Oriented Programming (OOP) LAB # 1 TA. Maram & TA. Mubaraka TA. Kholood & TA. Aamal.
ICS3U_FileIO.ppt File Input/Output (I/O)‏ ICS3U_FileIO.ppt File I/O Declare a file object File myFile = new File("billy.txt"); a file object whose name.
1 Class 1 Lecture Topic Concepts, Definitions and Examples.
Code Compression the benefits of looping... Today in CS 5 HW 4 - (3 problems) M/T sections W/Th sections due Sunday, 9/26 at midnight due Monday, 9/27.
Arrays-. An array is a way to hold more than one value at a time. It's like a list of items.
UMass Lowell Computer Science Java and Distributed Computing Prof. Karen Daniels Fall, 2000 Lecture 8 Java Fundamentals Control Structures Fri.
Week 12 - Monday.  What did we talk about last time?  Defining classes  Class practice  Lab 11.
Extra Recitations Wednesday 19:40-22:30 FENS L055 (tomorrow!) Friday 13:40-16:30 FENS L063 Friday 17: :30 FENS L045 Friday 19:40-22:30 FENS G032.
Array Size Arrays use static allocation of space. That is, when the array is created, we must specify the size of the array, e.g., int[] grades = new int[100];
Java: Variables and Methods By Joshua Li Created for the allAboutJavaClasses wikispace.
Instructor: Alexander Stoytchev CprE 185: Intro to Problem Solving (using C)
When constructing a two-dimensional array, specify how many rows and columns are needed: final int ROWS = 3; final int COLUMNS = 3; String[][] board =
Week 6 - Friday.  What did we talk about last time?  Loop examples.
Midterm Review Tami Meredith. Primitive Data Types byte, short, int, long Values without a decimal point,..., -1, 0, 1, 2,... float, double Values with.
What is Binary Code? Computers use a special code of their own to express the digital information they process. It's called the binary code because it.
Arrays Chap. 9 Storing Collections of Values 1. Introductory Example Problem: Teachers need to be able to compute a variety of grading statistics for.
Quiz 3 Topics Functions – using and writing. Lists: –operators used with lists. –keywords used with lists. –BIF’s used with lists. –list methods. Loops.
Midterm 2 Review Notes on the CS 5 midterm Take-home exam due by 5:00 pm Sunday evening (11/14) Hand in your solutions under the door of my office, Olin.
Homework 10 Due ( MT sections ) ( WTh sections ) at midnight Sun., 11/10 Mon., 11/11 Problems
EECS 110: Lec 14: Classes and Objects
EECS 110: Lec 15: Classes and Objects (2)
Values vs. References Lecture 13.
User-Written Functions
Introduction to javadoc
Introduction to Programming
Conditions and Ifs BIS1523 – Lecture 8.
HMC’s Galileo Auditorium Some of Cope’s generated MP3s:
Introduction to Programming
CISC101 Reminders Assn 3 due tomorrow, 7pm.

EECS 110: Lec 14: Classes and Objects
Introduction to javadoc
Truth tables: Ways to organize results of Boolean expressions.
CSC 111 Exam 3 Review Fall 2005.
Week 7 - Monday CS 121.
Presentation transcript:

Nelson Series Talk Wed, 11/10 7:00 pm Security, Liberties and Trade-offs in the War on Terrorism Since 9/11, we have enacted the Patriot Act, tighter screening at airports, a proposed national I.D. card system, a color-coded national alert system, irradiated mail, and a Department of Homeland Security, but do all of these things really make us any less vulnerable to another terrorist attack? Security expert Bruce Schneier evaluates the systems that we have in place post-9/11, revealing which of them actually work and which ones are simply "security theater." Learn why most security measures don't work and never will, why bad security is worse than none at all, and why strong security means learning how to fail well. Most of all, learn how you can take charge of your own security - personal, family, corporate, and national. Bruce Schneier Bruce Schneier is an internationally renowned security expert. He is the author of eight books--including the best sellers "Beyond Fear: Thinking Sensibly about Security in an Uncertain World," "Secrets and Lies," and "Applied Cryptography"--as well as the Blowfish and Twofish encryption algorithms. His influential newsletter, Crypto- Gram, is read by over 100,000 people.

Week 10 in CS 5 HW 10 (2 problems) M/T sections W/Th sections due Sunday, 11/7 at midnight due Monday, 11/8 at midnight Caution: This is very new stuff… Come to recitation 8) for help! Object-oriented programming We’re breaking out of the CS5App class class CS5App { public static void main(String[] args) … Hw10 Pr1: Connect FourHw10 Pr2: Virtual Art! Midterm #2 next Friday, 11/12 PAIR Lab: A-L Wolfgang Puck: not an object-oriented chef!

Gaussian Elimination public static void solve(double[][] A) { for (int c=0 ; c<A[0].length-1 ; ++c) // columns { multRow( A, c, 1/A[c][c] ); // diag = 1.0 for (int r=0 ; r<A.length ; ++r) // rows { if (c != r) // off-diagonal elements become 0.0 { addMxRaToRb( A, -A[r][c], c, r ); } dest row dest row source row multiplier

Arrays: the good and bad + - lots of computer work for little programmer work! Not everything is a bunch of identical boxes! only one built-in capability: length you have to use the array’s naming convention A[r][c] Classes and Objects take care of all 3 drawbacks... int[] int A A[0]A[1] A[2]

Classes & Objects An object-oriented programming language allows you to build your own customized types of variables. (1) A class is a type of variable. (2) An object is one such variable.

But Why ? Flexibility Reusability Abstraction ordinary data structures create-your-own write once, take anywhere worry once, use anywhere

Java’s Library of Classes java.sun.com/j2se/1.4.2/docs/api/index.html ~ 3000 classes available details on the data and methods that each class offers…

Course c void addStudent(String s) String String[] double int name npeople clist hours int numStudents() String Names! Objects An object is a data structure (like an array), except (1) Its data elements need not be the same type. (2) Its data elements have names chosen by the programmer. (3) Its data can be protected from unauthorized changes! (4) An object can have behaviors built-in by the programmer.

if (s.equals(“I’m an object!”)) { s2 = “Ask me to do something!”; } int L = s2.length(); char c = s2.charAt(22); the equals method is a built-in capability of String objects You’ve done all this before... the dot indicates selection or containment String s = “I’m an object!”; String s2 = “I’m another object!”; nonstatic methods are called by an object another nonstatic method static methods are called by a class, e.g. Math.sqrt(d);

Classes v Objects: some examples (1) A class is a type of variable. String s = “I’m an object!”; (2) An object is such a variable. the classes are in bluethe objects are in green Board b = new Board(6,7); Date d = new Date(11,13,2004); special constructor methods used with new Course c = new Course(“cs5”); Course c2 = new Course(“chem”); Date d2 = new Date(11,25,2004); Strings are used so much new is not required…

Coding classes and objects: in main Course c void addStudent(String s) String[] double int npeople clist hours int numEnrolled() String Course(String name) data methods “constructor” public static void main(String[] args) { Course c = new Course(“cs5”); // construct c c.addStudent(“Michael”); // add a student H.pl(c.numEnrolled()); // print enrollment: 1 … String name

class Course { private String name; private int npeople; private double hours; private String[] clist; public Course(String n) { this.name = n; this.clist = new String[42]; this.npeople = 0; this.hours = 3.0; } public void addStudent(String s) { this.clist[npeople++] = s; } public int numEnrolled() { return this.npeople; } } data members constructor methods Coding classes and objects: in Course

class Course { private String name; private int npeople; private double hours; private String[] clist; public Course(String n) { this.name = n; this.clist = new String[42]; this.npeople = 0; this.hours = 3.0; } public void addStudent(String s) { this.clist[npeople++] = s; } public int numEnrolled() { return this.npeople; } } data members the object being constructed data protection ! constructor refers to the object calling the method methods Coding classes and objects: in Course

Course c2 public static void main(String[] args) { Course c = new Course(“cs5”); // construct c c.addStudent(“Michael”); // add a student to c Course c2 = new Course(“chem”); // construct c2 c2.addStudent(“Marie”); // add a student to c2 Two (or more) objects of the same class… Course c

class Course { private String name; private int npeople; private double hours; private String[] clist; public Course(String n) { this.name = n; this.clist = new String[42]; this.npeople = 0; this.hours = 3.0; } public void addStudent(String s) { this.clist[npeople++] = s; } public int numEnrolled() { return this.npeople; } } data members constructor methods Coding classes and objects: in Course this is sort of a pain…

this is optional ! class Course { private String name; private int npeople; private double hours; private String[] clist; public Course(String n) { name = n; clist = new String[42]; npeople = 0; hours = 3.0; } public void addStudent(String s) { clist[npeople++] = s; } public int numEnrolled() { return npeople; } } data members constructor methods but it is always there…

Connect Four For your convenience, the creators of Java’s library have included a Board class that can represent any size Connect Four board... ! | | | | | | | |X| | | | | |X| |X|O| | | |X|O|O|O|X| |O|

Connect Four: class Board, object b This is true for sufficiently broad definitions of “the creators of Java’s library”... Board b void addMove(int c, char player) int nrows int ncols boolean allowsMove(int c) char data char[][] char

Board Starting code for a Board class and CS5App class is in Hw10Pr1.zip class Board { private int nrows; private int ncols; private char[][] data; public Board(int R, int C) { this.nrows = R; this.ncols = C; this.data = new char[nrows][ncols]; for (int r=0 ; r<this.nrows ; ++r) for (int c=0 ; c<this.ncols ; ++c) this.data[r][c] = ‘ ’; } public void addMove(int c, char player) … public boolean allowsMove(int c) … 3 data members constructor methods

class CS5App { public static void main(String[] args) { H.pl(“Hi! Welcome to Connect 4…”); int R = H.ni(“How many rows?(4-15)”); int C = H.ni(“How many columns? (4-15)”); Board b = new Board(R,C); char player = 'X'; while (true) { b.print(); int uc = H.ni(player + “'s move:”); while ( !b.allowsMove(uc) ) uc = H.ni(player + “'s move:”); b.addMove(uc,player); if (player == 'X') player = '0'; else player = 'X'; } // end of while } // end of main } // end of class CS5App “Quiz” What is each portion of main doing? What still needs to be done?

class Board { private int nRows; private int nCols; private char[][] data; // constructor and other methods here public void addMove(int c, char player) { for (int r=this.nRows-1 ; r>=0 ; --r) { if (this.data[r][c] == ‘ ’) { this.data[r][c] = player; break; } public boolean allowsMove(int c) { } What is each line of addMove doing? Write allowsMove. It should return true if c is OK for a move; false otherwise “Quiz,” part 2

Problem 1 Similar to Lights Out and Life, but using a Board object: main class CS5App sets things up and runs a large while loop class Board Board allowsMove print addMove isFull winsFor the “constructor” checks if allowed places a checker outputs to screen checks if space left checks if a player has won Hw10 Pr1: Connect Four (1)Get the # of rows and cols (R, C) (2)Create an object, b, of type Board (3) Big while loop... (1)Ask for the next player’s move (2)Check the move & then make it (3)See if the game is over Board b = new Board(R,C);

Problem 1 Similar to Lights Out and Life, but using a Board object: main class CS5App sets things up and runs a large while loop class Board Board allowsMove print addMove isFull winsFor the “constructor” checks if allowed places a checker outputs to screen checks if space left checks if a player has won Hw10 Pr1: Connect Four (1)Get the # of rows and cols (R, C) (2)Create an object, b, of type Board (3) Big while loop... (1)Ask for the next player’s move (2)Check the move & then make it (3)See if the game is over Board b = new Board(R,C); QUIZ still to do…

Problem 1 Still to write in the Board class: public boolean isFull() public boolean winsFor(char pl) 1 2 Extra Credit: Mouse input

Problem 2 Similar to previous menu problems, but using Date objects: (0) Enter a new date of interest (1) Print the current date of interest (2) Move one day forward in time (3) Move one day backward in time (4) Day difference finder (5) Find the day of the week (9) Quit main class CS5App sets things up and runs a large while loop printMenu prints Methods Hw10 Pr2: The Date Calculator Pair Programming Problem

Problem 2 Similar to previous menu problems, but using Date objects: (0) Enter a new date of interest (1) Print the current date of interest (2) Move one day forward in time (3) Move one day backward in time (4) Day difference finder (5) Find the day of the week (9) Quit main class CS5App sets things up and runs a large while loop printMenu prints Methods Hw10 Pr2: The Date Calculator PAIR no computer required… Prof. Art Benjamin

Problem 2 Similar to previous menu problems, but using Date objects: (0) Enter a new date of interest (1) Print the current date of interest (2) Move one day forward in time (3) Move one day backward in time (4) Day difference finder (5) Find the day of the week (9) Quit main class CS5App sets things up and runs a large while loop class Date Date printMenu prints print yesterday tomorrow isBefore diff dayOfWeek the “constructor” prints forward 1 day backward 1 day helper method # of days difference between 2 Date s returns a String Methods Hw10 Pr2: The Date Calculator PAIR diffNoPrint same w/ no printing

Two Date objects: d and d2 int month Date d void print() int year void tomorrow() int day int month Date d2 void print() int year void tomorrow() int day

The Date class class Date { private int month; private int day; private int year; public Date(int m, int d, int y) { this.month = m; this.day = d; this.year = y; } public void print() { H.p(this.month + “/”); H.p(this.day + “/”); H.p(this.year); } data members method constructor

Making a new Date class CS5App { public static void main(String[] args) { Date d = new Date(11,13,2004); Date d2 = new Date(11,25,2004); H.p(“The ACM contest is on ”); d.print(); d.tomorrow(); H.p(“CS 5’s midterm is due on ”); d.print(); H.p(“And Thanksgiving will be ”); d2.print(); }

Making a new Date class CS5App { public static void main(String[] args) { Date d = new Date(11,13,2004); Date d2 = new Date(11,25,2004); H.p(“The ACM contest is on ”); d.print(); d.tomorrow(); H.p(“CS 5’s midterm is due on ”); d.print(); H.p(“And Thanksgiving will be ”); d2.print(); } 11/13/2004 Output

Making a new Date class CS5App { public static void main(String[] args) { Date d = new Date(11,13,2004); Date d2 = new Date(11,25,2004); H.p(“The ACM contest is on ”); d.print(); d.tomorrow(); H.p(“CS 5’s midterm is due on ”); d.print(); H.p(“And Thanksgiving will be ”); d2.print(); } 11/13/2004 Output 11/14/2004

Making a new Date class CS5App { public static void main(String[] args) { Date d = new Date(11,13,2004); Date d2 = new Date(11,25,2004); H.p(“The ACM contest is on ”); d.print(); d.tomorrow(); H.p(“CS 5’s midterm is due on ”); d.print(); H.p(“And Thanksgiving will be ”); d2.print(); } 11/13/2004 Output 11/14/ /25/2004

tomorrow() class Date { public void tomorrow() { } int day int year int month data members in every Date

Checking a Date class CS5App { public static void main(String[] args) { // prompt the user for mo, dy, yr: int mo = H.ni(); int dy = H.ni(); int yr = H.ni(); Date d = new Date(mo,dy,yr); if (d.isLeapYear()) H.pl(“d has 366 days”); else H.pl(“d has 365 days”); }

Leap years class Date { public boolean isLeapYear() { if (this.year % 400 == 0) return true; if (this.year % 100 == 0) return false; if (this.year % 4 == 0) return true; } int day int year int month only one of these is needed here…

Comparing Date s class CS5App { public static void main(String[] args) { Date d = new Date(11,13,2004); Date d2 = new Date(11,25,2004); if (d.isBefore(d2)) H.pl(“d is earlier than d2”); else H.pl(“d is not earlier than d2”); }

Comparing Date s class Date { public boolean isBefore(Date d2) { } What two dates are being compared here? d2 is only one of them!

Problem 2 “Tricks” public int diff(Date d); returns the # of days between this and d positive if d is after this negative if d is before this print every day in between! public String dayOfWeek(); returns the day of the week on which this falls

Summary/Examples An object is a variable. Objects are created via new and a constructor. A class is a type of variable. A class can include both data members and methods. The object that calls a method is named this inside that method. class Date { private int month; private int day; private int year; public Date(int m, int d, int y) { this.month = m; this.day = d; this.year = y; } public void print() { H.p(this.month + “/” + this.day + “/” + this.year); } Date d = new Date(11,10,2003);

Lab this week Problem 2: The Date Calculator (Pairs) You’ll need to write (and use) Problem 1: Connect 4 ! Extra Credit: Mouse input-handling for Connect Four Last Names A-L Date print tomorrow yesterday isBefore diff diffNoPrint dayOfWeek … | | | | | | | |X| | | | | |X| |X|O| | | |X|O|O|O|X| | | isFull winsFor allowsMove

Example contest problem Factorial Factors - Southern California Regional ACM Programming Contest The factorial function, n! = 1 · 2 ·... · n, has many interesting properties. In this problem, we want to determine the maximum number of integer terms (excluding 1) that can be used to express n!. For example: 8! = 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 = 2 · 3 · 2 · 2 · 5 · 3 · 2 · 7 · 2 · 2 · 2 = 27 · 32 · 5 · 7 By inspection, it is clear that the maximum number of terms (excluding 1) that can be multiplied together to produce 8! is 11. The input for your program consists of a series of test cases on separate lines. Each line contains one number, n, 2 <= n <= For each test case, print the maximum number of factors (excluding 1) that can be multiplied together to produce n!. Put the output from each test case on a separate line, starting in the first column. Sample Input Sample Output

Objects An object is a data structure (like an array), except (1) Its data elements need not be the same type. (2) Its data elements have names chosen by the programmer. (3) Its data can be protected from unauthorized changes! (4) An object can have behaviors built-in by the programmer. Course c void addStudent(String s) String String[] double int name number students hours int numStudents() String Names! the dot is used to get at parts of an object (data or actions)

slides to print following this…

Gaussian Elimination public static void solve(double[][] A) { for (int c=0 ; c<A[0].length-1 ; ++c) // columns { multRow( A, c, 1/A[c][c] ); // diag = 1.0 for (int r=0 ; r<A.length ; ++r) // rows { if (c != r) // off-diagonal elements become 0.0 { addMxRaToRb( A, -A[r][c], c, r ); } dest row dest row source row multiplier

Course c void addStudent(String s) String String[] double int name npeople clist hours int numStudents() String Names! Objects An object is a data structure (like an array), except (1) Its data elements need not be the same type. (2) Its data elements have names chosen by the programmer. (3) Its data can be protected from unauthorized changes! (4) An object can have behaviors built-in by the programmer.

Coding classes and objects: in main Course c void addStudent(String s) String[] double int npeople clist hours int numEnrolled() String Course(String name) data methods “constructor” public static void main(String[] args) { Course c = new Course(“cs5”); // construct c c.addStudent(“Michael”); // add a student H.pl(c.numEnrolled()); // print enrollment: 1 … String name

Connect Four For your convenience, the creators of Java’s library have included a Board class that can represents any size of Connect Four board... ! | | | | | | | |X| | | | | |X| |X|O| | | |X|O|O|O|X| |O|

class CS5App { public static void main(String[] args) { H.pl(“Hi! Welcome to Connect 4…”); int R = H.ni(“How many rows?(4-15)”); int C = H.ni(“How many columns? (4-15)”); Board b = new Board(R,C); char player = 'X'; while (true) { b.print(); int uc = H.ni(player + “'s move:”); while ( !b.allowsMove(uc) ) uc = H.ni(player + “'s move:”); b.addMove(uc,player); if (player == 'X') player = '0'; else player = 'X'; } // end of while } // end of main } // end of class CS5App “Quiz” What is each portion of main doing? What still needs to be done?

class Board { private int nRows; private int nCols; private char[][] data; // constructor and other methods here public void addMove(int c, char player) { for (int r=this.nRows-1 ; r>=0 ; --r) { if (this.data[r][c] == ‘ ’) { this.data[r][c] = player; break; } public boolean allowsMove(int c) { } What is each line of addMove doing? Write allowsMove. It should return true if c is OK for a move; false otherwise “Quiz,” part 2

Problem 1 Still to write in the Board class: public boolean isFull() public boolean winsFor(char pl) 1 2 Extra Credit: Mouse input

Two Date objects: d and d2 int month Date d void print() int year void tomorrow() int day int month Date d2 void print() int year void tomorrow() int day

tomorrow() class Date { public void tomorrow() { } int day int year int month data members in every Date

Leap years class Date { public boolean isLeapYear() { if (this.year % 400 == 0) return true; if (this.year % 100 == 0) return false; if (this.year % 4 == 0) return true; } int day int year int month only one of these is needed here…

Comparing Date s class Date { public boolean isBefore(Date d2) { } What two dates are being compared here? d2 is only one of them!

Problem 2 “Tricks” public int diff(Date d); returns the # of days between this and d positive if d is after this negative if d is before this print every day in between! public String dayOfWeek(); returns the day of the week on which this falls

Lab this week Problem 2: The Date Calculator (Pairs) You’ll need to write (and use) Problem 1: Connect 4 ! Extra Credit: Mouse input-handling for Connect Four Last Names A-L Date print tomorrow yesterday isBefore diff diffNoPrint dayOfWeek … | | | | | | | |X| | | | | |X| |X|O| | | |X|O|O|O|X| | | isFull winsFor allowsMove

Course c void addStudent(String s) String String[] double int name npeople clist hours int numEnrolled() String Course(String name) data methods “constructor” public static void main(String[] args) { Course c = new Course(“cs5”); // construct c c.addStudent(“Michael”); // add a student H.pl(c.numEnrolled()); // print enrollment: 1 “cs5” 13.0 “Michael” … Coding classes and objects: in main