IB Comp Sci SL y2 exams 2019 
 
LINKS:  Last Year's Blog   Lewis+Loftus-Java   Java Tutor   Comp Sci Illumin Book 
              Basic Java Lessons   Java OOP   JETS    Internal Assessment Java Notes   Java How-To 
                Vocabulary   IB CS Course Guide     Pseudocode     Notes and Review 2019
  IB Comp Sci Hub

 
Due Dates : 

Last Day of Class - 11 Apr 2019

 Here are some suggestions for studying for your exams.
They refer to links in the Review page:

Past Exams - Top section, later exams are 
better than earlier ones, 
use Markschemes to check your answers

Vocabulary - look up unfamiliar vocabulary in :
 
 Paper 1 Syllabus Notes - directly below the Past Exams
Read the teacher's explanations in the right column.

Pseudocode Practice - Pseudocode Practice Tool
 
 Paper 2 Notes - below Topic 7 
http://ibcomp.fis.edu/review/IBCS2019.html

Standard Java Algorithms - Algorithms.java
 
 *** Suggestions ***
- study with a partner, you will help each other learn more
- use pen and paper while studying, to prepare for exams
- use e-mail, or come to room 615, to ask the teacher questions
 

Textbook - don't read the whole book, focus on the following - 
read quickly and focus on vocabulary
  Ch 1 - 1.1, 1.3
  Ch 2 - All
  Ch 3 - all except compression
  Ch 4 - 4.1, 4.2, 4.4 until p 104
  Ch 5 - 5.1, 5.2     HL = 5.3, 5.4
Ch 6 - 6.5
Ch 7 - All (7.6 is HL only)
Ch 8 - HL only 8.1 - 8.5
          8.7 is for SL and HL
Ch 9 - 9.1, 9.2
Ch 10 - SL - 10.1, 10.2,  
          HL all sections of Ch 10
Ch 13 - Optional and interesting
Ch 15 - All
Ch 17 - 17.2, 17.3


Topic 1 - 10 Apr 2019

We will quickly review Topic 1 in the IB Syllabus:


Ethical Issues - 5 Apr 2019

We will discuss some ETHICAL ISSUES and some famous stories of system failures. 


Vocab Practice - 4 Apr 2019


 Old Syllabus Glossary (about 90% useful)


Vocabulary Review - 2 Apr 2019




 Old Syllabus Glossary (about 90% useful)


Finish Nov 2018 Paper 2 SL - 1 Apr 2019

Start with this program then finish problem 12:


Continue Nov 2018 Paper 2 - 29 Mar 2019

(1) We need to complete this form (each student):
You need to DOWNLOAD the .pdf file,
then use Acrobat Reader to fill in the boxes,
save it on your hard-disk, and then upload it into Haiku.

(2) Continue with the Airport program.
Download a basic working version here:


More about OOP and Paper 2 Nov 2018 - 26 Mar 2019

You will receive a paper copy of Paper 2 Nov 2018, about airplane landings:

JETS Programming Constructs Continued - 25 Mar 2019



JETS Programming Constructs - 21 Mar 2019

Topics D.3.1 - D.3.10:

Jets Specifications 


Continue OOP Review - 20 Mar 2019

Topics D.1.6-D.1.10

We will discuss the Cafeteria problem on p. 8 of these notes:


OOP Review - 19 Mar 2019


In your text-book (Computer Science Illuminated) you should
READ CHAPTER 9
That explains basic concepts of OOP, as well as Programming Languages in general (Topic 4).


Frequency Distribution in Java - 15 Mar 2019

Here is a finished Frequency Distribution, translated from Pseudocode:
import java.util.*;

public class Frequency {
    public static void main(String[] args)
    {
        new Frequency();
    }
    
    public Frequency()
    {
        LinkedList<String> NAMES = new LinkedList<String>();

        String NAME = "";

       while (!NAME.equals("quit"))
       {
             NAME = input(" NAME ");
             if( !NAME.equals( "quit" ) )
             { 
                 NAMES.add(NAME);       
             }
       }

output( "Count Duplicates - Alert Duplicates with # of times");

LinkedList<String> OTHER = new LinkedList<String>();

Iterator it = NAMES.listIterator();
while (it.hasNext()  )
{   
     NAME = (String)it.next();
     OTHER.add(NAME);
}

Iterator it2 =  NAMES.listIterator();
while(it2.hasNext() )
{
        NAME = (String)it2.next();
        int COUNT = 0;

        Iterator it3 = OTHER.listIterator();
        while(it3.hasNext())
        {    
            String OTHERNAME = (String)it3.next();

            if (NAME.equals(OTHERNAME))
            {
                   COUNT = COUNT + 1;
             }
        }

        System.out.println(  NAME + " = " + COUNT );
   }
}
    
    public String input(String prompt) {
        return javax.swing.JOptionPane.showInputDialog(null, prompt);
    }

    public void output(String message) {
        javax.swing.JOptionPane.showMessageDialog(null, message);
    }
          
}

== Practice ==
- Copy the code above into a new Java Class.  It will run in CLI mode.
   Test it by typing in some names.
- You can also use this to type in NUMBERS (int values), but they are stored as Strings.
- Write a method to TRAVERSE the LinkedList (using an Iterator).
   At each node, change it to a proper int by using Integer.parseInt(...)
   and ADD UP all the numbers.
- Write a method that traverses the list and finds the LARGEST int value.
- Write a method to traverse the list and add up all the values that are GREATER than the average,
   and count those numbers, and calculate the AVERAGE of the ABOVE AVERAGE numbers.


   

One More Day to Finish Pseudocode - 14 Mar 2019

We will continue working on the Frequency Distribution program.

=== First try at Frequency Distribution ===
NAMES = new Collection()   // Java LinkedList

NAME = ""

loop while NAME <> "quit"
   input NAME
   if NAME <> "quit" then
           output NAME , " is leaving"
           NAMES.addItem(NAME)       
   end if
end loop

output "Count Duplicates - Alert Duplicates with # of times"

OTHER = new Collection()

NAMES.resetNext()
loop while NAMES.hasNext()
     
     NAME = NAMES.getNext()

     OTHER.addItem(NAME)

end loop

NAMES.resetNext()
loop while NAMES.hasNext()

        NAME = NAMES.getNext()
        COUNT = 0

        OTHER.resetNext()
         loop while OTHER.hasNext()

    
            OTHERNAME = OTHER.getNext()

                 if NAME = OTHERNAME then
                        COUNT = COUNT + 1
                end if

        end loop

        output  NAME , " = " , COUNT

end loop



NAMES.resetNext()

loop while NAMES.hasNext()
   output NAMES.getNext()
end loop
      

Last Day on Pseudocode - 13 Mar 2019

We will do a few more algorithms in Pseudocode, starting with:
- Finding and Removing Duplicates in a Collection
- Creating a Frequency Distribution
- Inserting in a Collection (Java LinkedList)

==== Removing Duplicates in Pseudocode ====
NAMES = new Collection()   // Java LinkedList

NAME = ""

loop while NAME <> "quit"
   input NAME
   if NAME <> "quit" then
           output NAME , " is leaving"
           NAMES.addItem(NAME)       
   end if
end loop

output "Remove Duplicates"

OTHER = new Collection()

NAMES.resetNext()
loop while NAMES.hasNext()
     
     NAME = NAMES.getNext()

     if NOT(OTHER.contains(NAME)) then
          OTHER.addItem(NAME)
    end if

end loop

NAMES = OTHER

NAMES.resetNext()

loop while NAMES.hasNext()
   output NAMES.getNext()
end loop



Standard Algorithms and Efficiency - 11 Mar 2019

== Bubble Sort == 

loop PASS from 0 to NAMES.length-1
    loop X from 0 to NAMES.length-1
        ITERS = ITERS + 1
        if NAMES[X] > NAMES[X+1] then
             FIRST = NAMES[X]
             SECOND = NAMES[X+1]

             NAMES[X] = SECOND
             NAMES[X+1] = FIRST             

        end if

   end loop
end loop

== Binary Search == 
FLAG = false

LO = 0
HI = NAMES.length-1

loop while FLAG = false AND HI >= LO

      MID = (LO + HI) / 2

      if NAMES[MID] = FIND then
           FLAG = true
       else if FIND > NAMES[MID] then
          LO = MID+1
       else
          HI = MID-1
     end if

end loop

Below is a solution to the problems from last class.

==Today ==
We will discuss Topics 4.2.1 - 4.2.3 about:
- Sequential Search
- Bubble Sort
- Binary Search
- Selection Sort
- Inserting in a Linked List
- Finding Duplicates in an Array

//=== Solution from last Friday =============

MAX = 1000
NUMS = new Array(MAX)

SUM = 0

BIG = 0
SMALL = 10000

loop TRIES from 1 to 1000

  CORRECT = 0

  loop X from 1 to 10
     N = random(0 , MAX)
     // creates a random number between 0 and MAX-1
     NUMS[X] = N
  end loop

  TOTAL = 0
  loop A from 1 to 10
     TOTAL = TOTAL + NUMS[A]
  end loop

//output TOTAL

  SUM = SUM + TOTAL

  if TOTAL > BIG then
      BIG = TOTAL
  end if

  if TOTAL < SMALL then
      SMALL = TOTAL
  end if

end loop
  
AVE = SUM / 1000

output "AVE = " , AVE
output "BIG = " , BIG
output "SMALL = " , SMALL
output "RANGE = " , (BIG - SMALL)

method random(smallest, largest)
   // creates a random number between smallest and largest-1
   return Math.floor(Math.random()*(largest-smallest)) + smallest
end method

//===========================


Random Numbers in Pseudocode - 8 Mar 2019

Copy this algorithm into the Pseudocode simulator.

//=================================
/***
This program is similar to LOTTO.

The program chooses a random number between 1 and 20, 
and repeats this 10 times.  It stores each random number
in the NUMS array.  Then you get 3 guesses at the numbers.
If you get lucky 3 times, you are a WINNER.

Run the program several times.  Keep track of how many WINNERS you get.

Change the program to only choose 5 random numbers.
That will make it harder to get WINNER.

Experiment to find out how many random numbers are required
to get a 50% chance of being a winner.

This is all a bit complicated, because some of the random numbers
are duplicates, so we don't really know how many targets are in the array.
Change the program so that it does not choose duplicates.
Then repeat your experiments.

***/

MAX = 20
NUMS = new Array(MAX)

CORRECT = 0

loop X from 1 to 10
   N = random(0 , MAX)
   // creates a random number between 0 and MAX-1
   NUMS[N] = N
end loop

loop X from 1 to 3
  input GUESS
  if NUMS[GUESS] = GUESS then
     output GUESS, " RIGHT"
     CORRECT = CORRECT + 1
  else
     output GUESS, "no"
  end if
end loop

if CORRECT = 3 then
   output "WINNER"
end if

output "== All Values =="
loop X from 0 to MAX-1
  output X, " = ", NUMS[X]
end loop

method random(smallest, largest)
   // creates a random number between smallest and largest-1
   return Math.floor(Math.random()*(largest-smallest)) + smallest
end method
//=====================

Now we need to write a couple more algorithms.
You can write these directly in the Pseudocode emulator.

*** NOTICE *** 
 You cannot trust the [Save] button. You can save your program
 by marking all the text, copying it, and pasting it into a document
 that you can save.
*****************

- Write a loop to fill an array of size 10 with random numbers.
   Each number should be 3 digits - between 0 and 999.

- Write a loop to add up the random numbers in the array.
   
- Make the program repeat 10 times, and each time make
   new random numbers and add them up.  The result will be
   10 TOTALS.  They will be reasonably close to each other.
    A total of 20 is highly unlikely, although not impossible.

- Make the program repeat 1000 times instead of 10.
   It should ADD UP all the TOTALS and display the following:
   (a) the average TOTAL
   (b) the smallest TOTAL
   (c) the largest TOTAL
   (d) the difference between smallest and largest = RANGE


Practicing Pseudocode - 1-4 Mar 2019

Here are some questions from OLD exams (around year 2000).
These are all about Pseudocode.  The Pseudocode back then was
slightly different from our current Pseudocode, but these are
still good practice questions.  You should:

1 - read a questions
2 - write a solution on paper, with a pen
3 - compare your solution to the solution in the document
4 - if appropriate, type your solution into the practice tool : 
     http://ibcomp.fis.edu/pseudocode/pcode.html

Then do another question.  Working with another student
is quite useful.


Begin Review and Finishing Syllabus - 25 Feb 2019

We will discuss 2017 Paper 1:

Nov 2017


IA Forms Folders - 12-15 Feb 2019

The teacher will distribute USB sticks to each student,
including a FORMS folder as specified by the IBO.

Please note the following advice:
0 - all files in the Documents folder must be PDF files
     The links on the cover-sheet are correct, IF you name the files correctly
1 - you need to use a Web-Page editor (Seamonkey or Kompozer) to edit the CoverPage
     If you use MS Word (DON'T) it makes a mess of the file
2 - don't forget to include a sound-track (narration) with your video
     The video should be 5-7 minutes long
3 - show your finished program to your client and include some of their suggestions
       in Stage E Evaluation
4 - Don't forget the Record of Tasks
5 - You can make an EXECUTABLE .jar file in NetBeans:
      - Click on [Run][Clean and Build Project]
      - link the cover sheet to [dist][filename.jar]
6 - you may find this check-list helpful:  Checklist (IBO)

You may spend the classes this week finishing your IA.
If you finish early, you can do work for another class.

You need to turn in the USB stick containing all files and the program on
     Friday 15 Feb

Work on IA - 7-12 Feb 2015

Remember that your Internal Assessment is due on Friday 15 Feb.
We will spend class time working on this Thursday, Friday and Monday (11 Feb).
If you are uncertain about how much to write in Stage C documentation,
or exactly how to create your video for Stage D, this is your opportunity to:
ask questions and get help.

On Tuesday you will receive a USB stick with a standard Forms Directory.
You will need to copy all your PDF files (and your Java program) into the standard
folders provided, then submit the USB stick to the teacher on 15 Feb.
Since class does not meet on 15 Feb, you may submit your IA project
on 14 Feb, or during lunch or after school on 15 Feb - but no later than 15:30 on Friday.  

Here is a GOOD Stage E Evaluation document:
Make sure your Evaluation includes discussion of CLIENT FEEDBACK
from when they tried out your finished program.  The examiners complain
every year that students forget to do this.

It's a good idea to consult this CheckList while finishing your IA:

More Arrays and LinkedList Practice - 6 Feb 2019

Here is an almost finished version of the Insert program:

Open InsertNameDone.
We will add a few more methods.

For example, FIND and REMOVE a node from a LinkedList.


Arrays and LinkedList Practice - 4 Feb 2019

The main difference between LinkedLists and arrays are:
(1) Dynamic vs Static
(2) Methods vs no methods
** Explain these **

Programmers like LinkedLists if they need to INSERT or DELETE data items.
They like arrays if they are counting or adding up items.

Suppose you have an ARRAY that contains RECORDS (Objects) with a NAME and AGE in each one.
Assume the array is already sorted alphabetically by NAME.
Write Java to insert a new name in the alphabetically correct place, but do it like this:
- copy the entire array into a LinkedList
- INSERT the new name into the LinkedList
- make a NEW ARRAY and copy the LinkedList into the array

It can start out like this:

/**********************************************\

class Person

{
String name = "";
int age = 0; 

  public Person(String name, int age)
  {  
    __________________________

    __________________________

   }

}

Person[] data = {new Person("Al",10),new Person("Bee",15), new Person("Kim",12),new Person("Nel",18),

new Person("Pete",15),new Person("Zeke",99)};

LinkedList<Person> list = new _____________________________

public void insertMickey()
{

   Person p = new Person("Mickey Mouse",80);

   copyArrayToList();

   insertIntoList(p);

   copyListToArray();

}

public void showArray()

{

    list1.removeAll();

    for(int x = 0; x < data.length; x++)
    {

         _________________________

    }

}

public void copyArrayToList()

{

    for(int x=0; x < data.length; x = x+1)

    {

        ________________________

       ________________________

   }

}

public void insertIntoList(Person m)
{

    list.add(4,m);

}

public void copyListToArray() 
{

    ______________________

    for(int x = 0; x < list.size(); x = x+1)

    {

        ________________________

   }

}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {

insertMickey();

}


private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

showArray();

}                                        

\*********************************************/

Obviously INSERT-INTO-LIST at position 4 all the time is a bad idea.
This needs to be rewritten, to be a loop that searches for the
correct position, where M belongs after X and before X+1.
Then it should be able to insert ANY NAME correctly.


OOP Review - 1 Feb 2019

We must review Mock Exam Paper 2 and spend some more time
practicing OOP programming - but this time on paper, with a pen.

Mock Exam Paper 2 : 

JETS

== String Methods ==

+ for concatenation 
.equals(String) 
.substring(startPos, endPos) 
.length() 
.indexOf(String) 
.compareTo(String) 
.toUpperCase() 
.toLowerCase()

Mock Question 3c


String Practice - 31 Jan 2019

Since there are so many absences, we will do some simple
String practice at Codingbat.com:

== String Methods ==

+ for concatenation 
      firstName + lastName .       lastName + ", " + firstName     output(num+"");
.equals(String) 
      NOT . if( firstName == lastName )
      LIKE THIS .    if( firstName.equals(lastName) )
.substring(startPos, endPos) 
      int  endOfFirstName = wholeName.indexOf(" ");
      String firstName = wholeName.substring( 0 , endOfFirstName );
.length() 
      String myPlayer = "X";
      int letters = myPlayer.length() ;
.indexOf(String) 
      above
       String name = "Dave Mulkey";
       output( name.indexOf("Leo") );   --> -1
.compareTo(String) 
       String  first = "Alex";
       String  second = "Al";
       if( first.compareTo(second) == 0 .   means they are identical
                                                        1 .   if first is "bigger" 
                                                       -1 .   if first is "smaller"
         if(first.compareTo(second) > 0) .       then exchange them

.toUpperCase() 
      String test =   "LARGE letters";
      output(test.toUpperCase) ;   ---> .  LARGE LETTERS
.toLowerCase()
      makes all small letters
        String test = "Phone = 1234567";
         test.toLowerCase() . --> . phone = 1234567
    ä ö Ü  é  




Finishing the IA - 28-29 Jan 2019

Here are the rest of the steps for finishing your IA.
The order doesn't matter, but the stated order probably makes sense.

Record of Tasks -
  Make sure that your Record of Tasks (weekly entries)
  is up-to-date.  If not, add entries so that you have about one per week.

Stage B - TESTING
  A TEST PLAN is a requirement.  Look at the examples in Stage B of:
  You must ADD the test plan to your Stage B document - 
   it's a requirement.  Make a TABLE with columns for : 
       [Action to Test]     and      [Method of Testing and Results]
   Be sure that your tests cover EVERY GOAL / CRITERION FOR SUCCESS, 
     including methods that implement AUTOMATION without any apparent visual interface.

Stage D - VIDEO
   Your video must demonstrate ALL THE SIGNIFICANT FEATURES.
   The video must clearly demonstrate that ALL THE FEATURES FUNCTION WELL.  
   This must also be stated in Stage E.

Stage C - DEVELOPMENT
   You must write DOCUMENTATION of how your program was written.
   This generally includes a Screen-Shot, some Java Code,
     and a brief (one or two sentence) explanation of how the code works.
     There needs to be at least one entry for every significant feature -
       especially anything that was difficult or complex to write.

Stage E - Evaluation (more on this later)

Cover Page - later

It is QUITE POSSIBLE that you will discover BUGS during the testing,
so it's best to write the TEST PLAN and do the tests BEFORE you 
decide the program is really complete.  Making the video will 
probably help in thinking about the testing.  You really need to
have the program FINISHED before writing the documentation in
Stage C.  Do the Evaluation last - it doesn't take long.

== Project Folder == 

The entire project is due on 15 Feb.  Make sure that all the documents
are PDF files, and that the Video is a standard format.  We will discuss
the formatting of the Project FOLDER and documents on 11 Feb.


 

Preparing for Mock Exams - 27-29 Nov 2018

Here are some suggestions for preparing for your Mock Exams.
In each case, the SL exam excludes the last couple of questions.

- Old mock exam from Dec 2017 (SL = 1-14):
  Paper 1 : http://ibcomp.fis.edu/2017/mockDec2017/mockP1HL2017.pdf

- Old mock exam from Dec 2014 (SL = 1-13):

- Old mock exam review from 2013 (SL = 1-16):

Notes and Review 2019 - past exams from 2014-2017
   You can use the past papers to practice for Paper 2 OOP Java.



Answers for Past Paper 2 - 19 Nov 2018



Reviewing for Mock Exams - 14-15 Nov 2018

We will discuss a past Paper 2 - OOP.

Past Paper Notes:


Last Day in Class on IA Project Program - 13 Nov 2018

Today is the last day in class working on your IA Project program.
A working version (not finished, but working) is due :
 
Wed 21 Nov - Preliminary Working Version of IA Program due

This must be turned in as a .zip archive containing your ENTIRE program,
including any sample data files.

Starting tomorrow we will start reviewing for Mock Exams.

Continue IA Project - 5-8 Nov 2018

It's Monday - you might want to update your Record of Tasks.

Continue IA Project - 29-31 Oct 2018

Continue working on your Java program for the IA Project.

Be sure to write an entry in your Record of Tasks.
This should be a programming goal, like :
"saving data on the hard disk"
or
"laying out the user-interface"
Make a realistic plan for completing this, like 2 days or a week.

Continue IA Project - 26 Oct 2018

Continue working on your Java program for the IA Project.


Saving via Serialization - 25 Oct 2018

Download the newest version of the HotelManager program:

This contains saveData and loadData methods,
and the classes have been marked with "implements Serializable":
//========================
    public void saveData()
    {
        try
        {
            FileOutputStream file = new FileOutputStream("hotel.dat");
            ObjectOutputStream info = new ObjectOutputStream( file );
            info.writeObject( hotel.reservations );
            info.close();
            file.close();
        }
        catch(Exception ex)
        {  output(ex.toString()); }
    }   
    
    public void loadData() 
    {
        try
        {
            FileInputStream file = new FileInputStream("hotel.dat");
            ObjectInputStream info = new ObjectInputStream( file );
            hotel.reservations = (Reservation[])info.readObject();
            info.close();
            file.close();
        }
        catch(Exception ex)
        { output(ex.toString()); }
    }  

//==========================


Sorting - 23 Oct 2018


Download this program, then do the following:

- run it and test that it works correctly

- increase the amount of sample data to 20 items

- load the sample data an then add 2 new reservations and sort the result,
    checking the the sorting works correctly

- add another button that SORTS ROOMS - so it sorts all the reservations
   in order of the room numbers

- add another button that SORTS NAMES - so it sorts all the reservations
   in order of the customer name

- try pressing the 3 Sort buttons in various orders -
   that should produce a variety of results


Hotel Program - 19-22 Oct 2018

We will start writing the Hotel program (below).

We need to focus on the following goals:
 A hotel management system must fulfill at least the following goals:
- records reservations
- checks-in customers when they arrive
- assigns an empty room when a customer checks in
- checks-out customers when they leave
- prints a bill when a customer checks out
- SEARCHes for specific info, like "who is in room 12"
   or "what room is Ronald MacDonald in"
- SORTS data and displays it, for example:
   - all the names currently staying in the hotel
   - a list of empty rooms right now
   - a list of empty rooms on a future date.

We will concentrate on OOP concepts.


OOP - 16-19 Oct 2018

The Paper 2 exam will be about Object Oriented Programming.  We need to learn a bit more about vocabulary and details to prepare for the Mock Exam in December.





Example UML Class Diagram



HOTEL Example:

A hotel management system must fulfill at least the following goals:
- records reservations
- checks-in customers when they arrive
- assigns an empty room when a customer checks in
- checks-out customers when they leave
- prints a bill when a customer checks out
- SEARCHes for specific info, like "who is in room 12"
   or "what room is Ronald MacDonald in"
- SORTS data and displays it, for example:
   - all the names currently staying in the hotel
   - a list of empty rooms right now
   - a list of empty rooms on a future date

   Hotel hotel = new Hotel();
   
   private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
       String name = input("Customer name");
       int room = Integer.parseInt(input("Room number"));
       String start = input("Starting date");
       String end = input("Ending date");
       for(int x=0; x < 1000; x=x+1)
       {
           if(hotel.reservations[x] == null)
           {
               Reservation res = new Reservation();
               res.customer = name;
               res.room = room;
               res.arrive = start;
               res.depart = end;
               hotel.reservations[x] = res;
               return;
           }
       }
   }                                        

   private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                        
       for(int x = 0; x < 1000; x = x+1)
       {
           if(hotel.reservations[x] != null)
           {
               Reservation res = hotel.reservations[x];
               output(res.room + ":" + res.customer);
           }
       }
   }

 static String input(String prompt)
 { return javax.swing.JOptionPane.showInputDialog(null,prompt); }

  public void output(String message)
  {  javax.swing.JOptionPane.showMessageDialog(null,message);  }

//==================================================

public class Hotel {
   Reservation[] reservations = new Reservation[1000];
}

//===================================================

class Reservation
{
  String customer;
  int room;
  String arrive;
  String depart;
}

Continue Stage B - 15 Oct 2018

This is the last day in class to work on Stage B.
So if you have questions, ask them today.

Remember - it is due on Thur 18 Oct at 16:00


Turning in Stage B Draft - 9 Oct 2018

On 18 Oct, a DRAFT of Stage B - Design is due.

This should NOT include a TESTING plan.
It need not be "complete", but must demonstrate a thorough
start on all of the following parts:

(1) Record of Tasks - all task accomplished between May 
  and Sep (including an entry about completing Stage B Draft)

(2) ONE system OVERVIEW diagram, 
     which could be displayed as any of the following:
   - top-down hierarchical chart
   - UML class diagram
   - Data-Flow-Diagram showing how data flows between modules,
     including text files, arrays, screen displays, and other variables
     DFD Introduction --> 
https://www.smartdraw.com/data-flow-diagram/ 

     We will discuss these notes:
     
http://ibcomp.fis.edu/275979/ibcomp/review/DesignOOP2.pdf

(3) "screen-shots" from your Visual Prototype (or further
     additions) - at least 5 "screen-shots"

(4) algorithms that will implement interesting automation
     (at least 3 algorithms) - algorithms may be displayed as:
     - Pseudocode 
     - or  Flow-charts (example)    
     - Java (maybe from the Functional Prototype)
  In each case the algorithm must be clearly explained

The teacher will show examples of each of these.


A bit more about UML - 26 Sep 2018




Continue Stage B - 25 Sep 2018

1.  Make sure you have started your Record of Tasks document -
     that you have made the first 4 or 5 entries, including:
     - choosing a problem and a client
     - Visual Prototype
     - Client interview
     - Functional Prototype
     - Stage A

2. Outline a few Classes (objects) in UML


UML Diagrams - 24 Sep 2018

1.  Make sure you have started your Record of Tasks document -
     that you have made the first 4 or 5 entries, including:
     - choosing a problem and a client
     - Visual Prototype
     - Client interview
     - Functional Prototype
     - Stage A

2.  Here is a brief explanation of UML diagrams:

3.  Here is a Diagram Editor for Flowcharts and UML:
          http://www.draw.io 

4.  Here is a sample UML diagram for an attendance program:
       

UML = Unified Modeling Language

This provides diagrams that clearly illustrate the connections
between MODULES in a system.

If you use OBJECTS and CLASSES in your project,
you should include a UML chart, like this:


That shows the following:
- data members (variables/properties) of each object
- method members of each object
- BasicPart and CompoundPart both EXTEND (isA) Part
- CompoundPart must CONTAIN (hasA) 2 or more parts

Here is another simple example:



Here is one more example - you are unlikely to have so many classes:

Notice that this only has class boxes, without arrows.
This is sufficient for an IB IA Project.


Record of Tasks - 20 Sep 2018

For your Internal Assessment Project, you are required
to keep a journal of all your work.  
This is called the "Record of Tasks".
You will find this in the Documents folder in the following link;
http://xmltwo.ibo.org/publications/DP/Group4/d_4_comsc_tsm_1201_2/word/Forms.zip


Starting Stage B - 18 Sep 2018


Due Date :  Stage B partial (no testing) - 18 Oct at 18:00


Fire Drill Test Interruption - 18 Sep 2018

Please finish your test as homework.  It shouldn't take more than 30 min.
You may consult your book and notes, including online notes,
but do not discuss the test with other students.
It will be graded like an essay rather than a test -
so the teacher will comment on the quality of your writing.
This is homework - turn in your test on Wed 19 Sep.


More Network Questions - 14-17 Sep 2018

We will finish discussing these exam questions:

Then we will discuss the questions at the end of Chapter 15:


Network Exam Questions - 11-12 Sep 2018

IB Exam Questions about Networks


IB Syllabus - 10 Sep 2018

*** STAGE A GRADES ***
Several students neglected to submit the APPENDIX containing
notes of the Client Interview.  Those students need to add
this appendix and resubmit the Stage A document -
submit this no later than 17 Sep.  Any students who wish
to make other improvements may also resubmit the document
and possibly receive a better grade.

~~~~~~~~~~

We will discuss the official IB Syllabus notes:

How Data Moves Around - 31 Aug 2018

*** Remember that Stage A is due 31 Aug ***

Today: Follow data in the web

Questions about networks:


Networks - Section 3 in IB Syllabus - 21-28 Aug 2018

Reading :  Read Chapter 15 NETWORKING (p717) in your textbook Computer Science Illuminated
https://drive.google.com/uc?export=download&id=0B2t-Tmujl-IbTHlDbGl6MnZFTlU

A good overview in a Video:
https://www.youtube.com/watch?v=fCxfp1iUbqw

IB Notes :  Topic 3 - Network Basics  with brief explanations and questions
https://docs.google.com/document/d/1LdJ_b-1S3NNz5NXmw7WLeAkKza9NhWxqqrd6ItTRoro/edit

Some informative videos:
Basics of Protocols (first half)
Internet of Things :  Part 1 . Part 2  Part 3 .  Part 4 . Part 5 . (you need not watch ALL of these)
Google Data Center (start in the middle)

About DNS
Google: [which ip addresses are local]



== 27 Aug ==

Future Networks

Internet of Things :  Part 1 . Part 2  Part 3 .  Part 4 . Part 5 . (you need not watch ALL of these)

Internet of Things, 5G, better BlueTooth, Network Neutrality,  NFC = Near Field Communication = Contactless Credit Card readers

100 Questions and Answers


Continuing Stage A - Planning - 16-17 Aug 2018

It is time to write the first OFFICIAL part of the IA Project - Stage A.

  Stage A : due on Fri 31 Aug at 18:00

This is the easiest part of the IA Project. Don't turn it into something difficult.
It is 500 words - e.g. less than 2 pages.
The teacher will show you examples and outline what pieces are needed.


Read these notes:  
    http://ibcomp.fis.edu/275979/ibcomp/projects2014/SoftwareDesign.html

For Stage A, focus on :
- Choose a CLIENT and TALK TO THEM

- DEFINE the problem by :
  - referring to specific User Stories and Client Requests
  - show SAMPLE DATA and/or PICTURES of current solutions
  - include your VISUAL PROTOTYPE in the appendix if you wish

- EXPLAIN the REASONS for your proposed solution, especially
  - a picture of your VISUAL PROTOTYPE
  - AUTOMATION that will make things better for the client
  - REQUIREMENTS and/or LIMITATIONS (more on this in the goals)

- write GOALS (Criteria for Success) that are:

  - clear
  - precise
  - testable
  - complete
  - written as a BULLETED LIST

- Put notes from your CLIENT interview in the APPENDIX
- If you want, put USER STORIES in the APPENDIX

- keep the total word-count under 500 words
   only "extended writing" counts - that means paragraphs 
   bulleted lists don't count 
   diagrams don't count
   the appendix doesn't count

Here is a good example that would receive 6/6 marks for Stage A:
    https://ibpublishing.ibo.org/live-exist/rest/app/tsm.xql?doc=d_4_comsc_tsm_1201_2_e&part=4&chapter=15
Look at the Student Work - Planning
You can IMITATE this, but do NOT COPY IT exactly
For example, if you write reasons for choosing Java,
don't write the same reasons that the author wrote.

Here is another good example :
   Example 6  Stock Control System
    https://ibpublishing.ibo.org/live-exist/rest/app/tsm.xql?doc=d_4_comsc_tsm_1201_2_e&part=4&chapter=13

You may wish to look at the Assessment Criteria:
    https://ibpublishing.ibo.org/live-exist/rest/app/tsm.xql?doc=d_4_comsc_tsm_1201_2_e&part=4&chapter=5

This CHECKLIST might also be useful:
    http://xmltwo.ibo.org/publications/DP/Group4/d_4_comsc_tsm_1201_2/word/checklistStudents_en.doc

================================

(1) 

     In the FIRST image, erase the ellipse nose and replace it
with a rectangle nose - tall and thin, in the midde of the face.

(2) 

    in the SECOND image, change CAT  so it is just
the letter  Y , and change  DOG  so it is the letter  M.
The Y should MORPH automatically to the M.

(3) 

    In the THIRD image, change it so the colors start with RED
on the left end, and changes to BLUE on the right end.

(4) 

   in the FOURTH image, remove the bottom half of the circles
so there are only 5 rows.  Then change the random colors so that
only blue is used - randomly light blue and dark blue.

(5) 

   In the FIFTH image, remove one board so there are 
3 left ends and 2 right ends.  The bottom board must 
still appear complete.  You may remove the top board
or a middle board or the bottom one, as you wish.

(6) 

   In the SIXTH image, erase the lines that are there
and draw this image:


There are 4 square areas, and each contains 20 black lines.



https://drive.google.com/file/d/1uR9WGbjzL7SmeGc4Ls11iYUrCv7c-KWv/view?usp=sharing