Logic and Computation

Monday, May 15. 2023

Final Project Launcher

Final Project Launcher.zip

Dean Game : Press SPACE to take out your phone. Don't get caught by Mr. Grable!

Pacwoman: Eat the coins and avoid the men. Use WASD to move. Waka waka waka.

Rift Battle: Fight three opponents in this board game. Use the mouse to select a piece and move.

The Thaw: Click to move between rooms and collect items to prevent the Cold War. Can you find all the secret endings in this very historically accurate game?

Car Game: Race around the track! Use WASD to move.

Italian Bros: Use SPACE to jump and use the arrow keys to move the Italian Brother to the ending! Any resemblance to other Italian-themed platformers is purely coincidental.

Cat Jump Game: Use WASD to move the cat and SPACE to jump. Can you collect all of the cat food in this purrfect platformer?

Fun Time Game: It's raining pancakes! Use the arrow keys to move and collect as many as you can. Be sure to avoid the falling forks.

Pancake Pros: Use the WASD keys to move the Tetris pieces and SPACE to drop them. There are special pancake pieces to help you fill the gaps!

ThugSim: Can you find a way to escape the prison? Use WASD to move your character.

Crossy Gym: Move through the gym with WASD and collect all of the coins. Watch out for the treadmills!.

The Hacker: Type the sentence as quickly as you can to hack into the mainframe. Don't make any tyops and don't let the time run out!

Knock Out Kenzie: Click to see different scenes of this interactive story and pursue the love of your life.

Pokeman: Use WASD to move around the field. Enter tall grass for a chance to encounter a "Pokeman". Press C to add it to your inventory. Can you catch 'em all?/

Room Rushers: Move around the room with WASD to dodge enemy bullets. Aim with the mouse and click to shoot. Look out for that game over sound effect!

Wednesday May 3, 2023

Picture Story Template

Picture Mover Template

Friday, April 28, 2023

Tile Mover Template

Tile Mover Template

Thursday, April 20, 2023

Mini Projects

Period 3: SpaceFighters

FloppyFish (Final)

Meteor Massacre (final)

Friday, April 14, 2023

Lab: Experimenting with a Large Language Model

Lab Assignment: Experimenting with a Large Language Model

In this lab, you will pick three of the five short projects to try with ChatGPT.

The instructions are available in the link above. Please note: You will submit the assignment three times in total, once for each project that you choose.

Thursday, April 6, 2023

Turn in the Paint Application on Github

Accept the assignment and upload your .java file to the repository.

Monday, April 3, 2023

Add features to the Paint Application

Get the starter code from where we left off in class:

PaintProgram.java

Thursday, March 30, 2023

Bouncing Ball Animation

Get the two classes here:

Animation.java and Ball.java

Wednesday, March 22, 2023

GUI Programming

Hi folks. Please continue working through the notes and challenge problems from earlier this week.

For those who are finishing up or are ready to move on, take a look at this next topic: creating graphical user interfaces in Java.

Tuesday, March 21, 2023

Continue ArrayList Notes

Hi all, please continue to work through the material posted yesterday.

Quick correction: Where it says ArrayIndexOutOfBoundsError in the notes, it should have said ArrayIndexOutOfBoundsException.

Feel free to send me an email if you have any questions. Thanks!

Monday, March 20, 2023

Exploring Data Structures

Hi everyone! I hope you have enjoyed your break. I will be returning next Monday and I look forward to seeing you all then.

For this week, we will learn how to create a useful data structure called an ArrayList. It can hold a collection of items like a normal array, but can also change its size as needed.

I have prepared a series of guided notes for this topic. Please follow along with these notes with BlueJ open to a new project called DataStructures. Whenever you see a section of Java code, please add this code to your project.

Friday, March 3, 2023

Implications of the Halting Problem

So far we have seen that there is a Turing Machine (a Universal Turing Machine) that can simulate the operations of other Turing Machines. And Turing used this idea to give a surprising proof that there are some things that computers cannot do.

A Turing Machine (or computer) cannot decide if another Turing Machine (or computer program) will run forever on its given input or eventually halt.

This result stands for all times. Even if we are able to make computer hardware with as-yet unimaginable technology, this limit of computation will never be overcome.

For today's lesson, please read this description of more implications of the Halting Problem's undecidability.

  1. Implications of the Halting Problem

Thursday, March 2, 2023

The Universal Turing Machine

Hi everyone. I forgot to present this lesson to you first, which is background knowledge to make more sense of the halting problem, which you learned about yesterday.

Today's readings establish a way for one Turing Machine to interpret another Turing Machine's instructions. As you will see, it is possible to build a "Universal" Turing Machine that can be reprogrammed with the "blueprint" of another Turing Machine. Most Turing Machines can perform only a very specific task, but the Universal Turing Machine can do anything that any Turing Machine can do. In that sense it is like a general computer.

The videos that you watched for homework rely on this idea—that one Turing Machine can simulate another one.

I find this idea extremely fascinating, and I hope that you will too!

Please read the following:

There is no homework today. Thank you.

Wednesday, March 1, 2023

The Halting Problem

Please read the following online lessons closely and make an attempt to answer the questions for yourself before moving on.

The two lessons for the day are to introduce "The Halting Problem" before we later set up Turing's ingenious proof of it's inability to be solved with Turing Machines.

The videos for lesson two are not included for today's in-class lesson. Please view them at home for homework:

Tuesday, February 28, 2023

Yay! I'm a dad!

Hi class, as you might have heard by now, my baby arrived a little sooner than expected! Her name is Aletta Ruth Haney Kanim. She is named after important people in our families and is getting a doubled last name. We're calling her Allie.

Allie is in perfect health and so is Ms. Kanim. I feel amazingly blessed by that.

I will return to class the second week of quarter 4 on Monday. In the meantime, I will leave some assignments posted on the website for you guys to complete independently while you have a sub.

Here's a picture of me holding her on her birthday:

Thanks guys!

Finish up the Designing Turing Machines problem set

We have one day left to finish the Turing Machines problem set. Please have this ready to turn in by tomorrow morning. I will ask the sub to collect them and place them on my desk in the faculty office.

Please complete it for homework if you run out of time today. If you are already done, you may use this period as a study hall. Thank you!

Monday, February 13, 2023

Correction to getNearest() method

Replace the getNearest() method in the Organism class with the corrected code below:

Correction:

Tuesday, February 7, 2023

Ecosystem Inheritance Lab

We are beginning a lab to practice inheritance and to see how a system can be designed with a hierarchy of classes.

Download the starter code here and complete the todo items that are left as comments in the code:

Monday, January 9, 2023

Regular Expression Lab

We are beginning a lab that will exercise our ability to write regular expressions in Java. It will also review a bit of iteration and File IO

Get the starter code from Github classroom:

Tuesday, December 6. 2022

Logic Midterm Study Guide

We are reviewing for the cumulative logic midterm this week. Use this study guide as an opportunity to review the content from this semester.

Logic Midterm Study Guide

Thursday, December 1, 2022

Advent of Code

Join people around the world in celebrating the holidays with fun programming challenges: Advent of Code.

Each day until Christmas, two new puzzles unlock in this advent calendar. They get progressively harder each day, but they are a good opportunity to practice using some of the skills we have been learning recently like iteration, arrays, and file io.

Wednesday, November 30, 2022

GuessTheNumber Game

Code from the first day:

Monday, November 28, 2022

File IO Examples

Today we introduced file input and output in Java.

We covered reading text from a file with a Scanner and writing to a file with a PrintStream.

Example code:

Monday, November 21, 2022

Turn in Arrays Lab

Turn in instructions:

Monday, November 7. 2022

Iteration Strategies Handout

Arrays Mixed Practice

We began working in groups on this problem set to practice processing arrays using the iteration strategies.

Wednesday, November 2, 2022

Arrays and Computer Memory

The limitations of arrays make sense when we understand how they are backed by the memory of our computer. Take a look at the slides from today and the code examples that we created together.

Array Processing Code examples:

Tuesday, November 1, 2022

Arrays Introduction

Today we introduced arrays in Java. You can find the slides and exercises below.

Monday, October 31, 2022

Sub Plans:

Sorry I can't make it in today folks. I'm not feeling very well :(

Please work on the following activities while I am out. They will help you prepare for the quiz tomorrow and for our next unit in programming: arrays.

Logic Problem Set

Answer the following questions in your notebook to review for the Conjunctions Quiz.

Translate the following sentences into logical symbols:

  1. "All animals are equal, but some animals are more equal than others." - Animal Farm by George Orwell
  2. "Nowadays people know the price of everything and the value of nothing." - The Picture Of Dorian Gray by Oscar Wilde
  3. "If we respected only what is inevitable and has a right to be, music and poetry would resound along the streets." - Walden by Henry David Thoreau
  4. "To produce a mighty book, you must choose a mighty theme. No great and enduring volume can ever be written on the flea, though many there be who have tried it." - Moby Dick by Herman Melville

Prove the following:

  1. Premises: (P -> Q) ^ (R -> S), -Q ^ -S. Conclusion: -P ^ -R.
  2. Premises: P ^ ((-Q -> R) ^ (Q -> -P)). Conclusion: R.

Programming Research Task:

Search for the following information online. (Websites only. No videos, please).

Feel free to try out any code you find in BlueJ on the code pad.

Silent Study Hall

When you are finished, please work on something else quietly for the rest of the period. Maybe your Senior Thesis?

Wednesday, October 26, 2022

Turn in Objects Lab

Directions to turn in lab:

Monday, October 24, 2022

Objects Lab Challenge Problem

When you are finished with the first two activities, try the small project below for an additional challenge.

You will be making an application that simulates a planet orbiting its sun. Copy the files into their own classes and complete the TODO items in the Planet class

Solar System App

Tuesday, October 18, 2022

Objects Lab

Begin the objects lab. Get the starter code from your Github account after clicking the link below for your class period.

Thursday, October 13, 2022

Object Examples

We created classes that modelled real-world things. This was our first introduction to object-oriented programming.

In this style of programming, related data is bundled together in an object defined from a class. Over the course of the program, the data changes (mutates) through its methods.

Example 1: Radio

Radio class:

Example 2: Mover object

Mover class:

Mover World

World class:

Wednesday, September 28, 2022

Programming Syntax and Semantics Review

Classwork group activity: Programming Syntax and Semantics Review

Monday, September 26, 2022

Project Euler

More programming challenges are available at projecteuler.net.

Create an account to check your answers and track your progress.

Tuesday, September 20, 2022

Study Guide: Logical Validity

Study Guide: Logical Validity Test Study Guide

Monday, September 19, 2022

Classic Programming Challenges

Problem Set: Classic Programming Challenges

Thursday, Spetember 15, 2022

Methods with While Loops

Code examples:

Wednesday, September 14, 2022

Logical Validity

Classwork/Homework Activity: Checking Logical Validity

Friday, September 9, 2022

Submit Circuits Lab

Turn in your lab by sharing the google doc of your screenshots.

Tuesday, September 6, 2022

Begin Circuits Lab

Lab Instructions: Logic Gates Lab

Friday, September 2, 2022

Methods Practice Problems

Problem Set: Methods Practice Problems

Wednesday, August 31, 2022

Boolean Algebra Test Study Guide

Classwork/Homework Activity: Boolean Algebra Test Study Guide

Tuesday, August 30, 2022

Static Methods

Code Examples:

Monday, August 29, 2022

Truth Tables

Classwork/Homework Activity: Truth tables exercises

Friday, August 26, 2022

Turn in lab assignments on github

When you have made your github account, click the link below for your class period:

Wednesday, August 17, 2022

Begin Classes and Conditionals Lab

Work with your group to complete the three parts of the lab.

Monday, August 15, 2022

Classes with Constructors

Code examples:

Wednesday, August 10, 2022

Data Definitions and Designing Classes

Problem Set: Data Definitions Practice

Tuesday, August 9, 2022

Designing Classes

Code examples:

Monday, August 8, 2022

Definitions by Genus and Difference

Classwork/Homework Activity: Definitions by Genus and Difference

Thursday, August 4, 2022

Paradox Activity

Group Activity: Classic Paradoxes