* mahazuga: Mary Ann
* serepate: Serena
  hgarciah: Henri
* balbakr: Bakr
* ruifan: Rui
* mzelenin: Matthew
* jnp2: Jay
* zeyang: Zejun
  zhang486: Jingyun
  yiwecao: Yiwei
* rthammon: Ryan
* wang686: Jiaxing
* dweissma: Andrew
* kevcao: Kevin
* ssalmero: Salmeron, Santiago (TA)
* luo23: Yawen
* runxzhao: Runxia
* dgerman: German, Dan-Adrian (Primary Instructor)
  creba: Chris

Final Exam on Thu has a take home part. 

Bring it with you to the exam. 

https://www.cs.indiana.edu/classes/c212-dgerman/fall2016/resources/lab10.pdf

Time complexity. What is it? 

There will be a study guide for the Final Exam posted tomorrow. 

Chapter 1: Introduction
Chapter 2: Using Objects
Chapter 3: Implementing Classes
Chapter 4: Fundamental Data Types
Chapter 5: Decisions
Chapter 6: Loops
Chapter 7: Arrays and Array Lists
Chapter 8: Designing Classes
Chapter 9: Inheritance
Chapter 10: Interfaces
Chapter 11: I/O and Exception Handling
Chapter 12: Object-Oriented Design

The above covered completely by midterm. 

Chapter 13: Recursion
Chapter 14: Sorting and Searching
Chapter 15: The Java Collections Framework
Chapter 16: Basic Data Structures
Chapter 17: Tree Structures
Chapter 18: Generic Classes
Chapter 19: Stream Processing
Chapter 20: Graphical User Interfaces

Page 642-650-670 (see the exercises). 

Correctness (JUnit) and time complexity (math, experimental evidence).

Chapter 18, 19: Streams and Generics. 

--

Tonight I catch up with all grades and send you reports. 

Final report Sat 07/28 and you can comment/reply so we can discuss.

Then my plan is to send the final grades to the Registrar by 3pm Sun. 

--

Still to be graded to the end:

Homework 09
Homework 10 

Stage 02
-----------(today?)------------
Stage 03

Final Exam (TH1, TH2, WE4)
Lab 11 (Self-Assessment)

Update attendance

--

What's New? July 14

http://silo.cs.indiana.edu:8346/04142012/001.html

https://www.cs.indiana.edu/classes/c212-dgerman/sum2018/hw10.html

--

https://www.cs.indiana.edu/classes/c211-dgerman/sum2018/hw10.html

Homework 11 is based on it

--

http://silo.cs.indiana.edu:8346/c212/sum2018/hw10/c211hw07.html

Looking at my Ripples you conclude:

(a) use BigBang as provided
(b) use World as provided
(c) determine this as a generic starting point:

// Game.java 

import javax.swing.*;
import java.awt.event.*; 
import java.util.*; 
import java.awt.*;

public class Game implements World {
  public void update() {

  }
  public void draw(Graphics g) {
  
  }
  public void mousePressed(MouseEvent e) { 
  
  } 
  public void keyPressed(KeyEvent e) { 
  
  }
  public static void main(String[] args) {
    BigBang game = new BigBang(30, new Game());  

    JFrame frame = new JFrame("Game"); 

    frame.getContentPane().add( game ); 
    game.addMouseListener( game ); 
    frame.setVisible(true); 
    frame.setSize(400, 400); 
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); 
    game.start(); 
  }
  public boolean hasEnded() {
    return false; // never!! 
  }
}

--

// Game.java 

import javax.swing.*;
import java.awt.event.*; 
import java.util.*; 
import java.awt.*;

public class Game implements World {
  Snake snake; 
  public Game() {
    this.snake = new Snake("Larry");  
  }
  public void update() {
    this.snake.move(); 
  }
  public void draw(Graphics g) {
    this.snake.draw(g); 
  }
  public void mousePressed(MouseEvent e) { 
  
  } 
  public void keyPressed(KeyEvent e) { 
  
  }
  public static void main(String[] args) {
    BigBang game = new BigBang(30, new Game());  

    JFrame frame = new JFrame("Game"); 

    frame.getContentPane().add( game ); 
    game.addMouseListener( game ); 
    frame.setVisible(true); 
    frame.setSize(400, 400); 
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); 
    game.start(); 
  }
  public boolean hasEnded() {
    return false; // never!! 
  }
}

--

import java.awt.Graphics; 

public class Snake {
  private String name;
  private int x, y; 
  private String direction; 
  public Snake(String name) {
    this.name = name;  
    this.x = 120; 
    this.y = 70;
    this.direction = "East";
  }
  public void draw(Graphics g) {
    g.drawString(name, this.x, this.y); 
  }
  public void move() {
    if (this.direction.equals("East")) this.x += 3;
  }
}

--