Jump to Lecture 1, Lecture 2, Lecture 3, Lecture 4, Lecture 5, Lecture 6, Lecture 7, Lecture 8, Lecture 9, Lecture 10, Lecture 11, Lecture 12, Lecture 13, Lecture 14, Lecture 15, Lecture 16, Lecture 17, Lecture 18, Lecture 19, Lecture 20, Lecture 21

Information for Lecture 1

Slides are here.

Today's lecture covers the Java language and Robot basis for learning programming.
First programming language graphic
Another language graphic

Today's goals are to find where resources are available, and set up software. Please see direction in the left-hand frame.

Information for Lecture 2

Today's lecture covers the basics of Java. We will see how to interpret a program, and how to 'debug' or fix errors in the program. Lecture notes are here.

There are three in-class exercises for today. If you haven't yet, Please start by setting up the jGrasp and JDK software. You will need to follow the directions (linked to the left) to download the becker.jar file, and set the paths in jGrasp.

The next step will be to download the class files, and exercise instructions in a subfolder of your BIT115 folder. Today will show you how to get started on a piece of code, but more importantly, you will have practice debugging and predicting the behavior of a computer program. Mastering these tools is what will allow you to master BIT115.

Information for Lecture 3

Today's lecture covers the basics of Java. We will learn more about the components that make up the Java Language. Lecture notes are here.

There are three in-class exercises for today.

Lecture 4

Today we start writing more code. Lecture notes are here.
When you think about writing code, please think about these goals: 8 characteristics for great code

There are, again, a few exercises today. You will trace a program, debug a program, and write some code. Please download the following information, and get started with exercise 1.

Exercise directions
ICE_03_01_Trace
ICE_03_02_CompileErrors
ICE_03_03_WalkDownWalls
ICE_03_Demo
and an Example trace

Lecture 5

Assignment amnesty: due to late registrations and moving rosters you will have until this Friday to address any issues with Canvas, or submit any of the first two week's assignments. These assignments will not be accepted after Friday, so log into Canvas and see where you stand.

This class is the beginning of writing flexible code: We learn decision points. Lecture notes are here.

Files and instructions for in class exercises are below. You should spend time working on these exercises in class, and will also want to be sure to complete this week's mini assignment.

Instructions
I_04_If, ICE_04_1_Errors, ICE_04_Demo_01, ICE_04_If_Else
Trace example

Lecture 6

We review while loops and discuss primitive data types and declaring variables. Lecture notes are here.

In class exercises:

ICE 5 instructions
If-else example document, while loop example, While loop concepts
Java code: HallwaysWhile, ICE_05_Avenues, ICE_05_Demo, ICE_05_Race, Example race solution, ICE_05_Trace

Lecture 7

In this lecture we will be continuing to work on use of local variables and while loops. We will also cover predicate methods, which are useful for use in control-statements such as if/else and while loops. Lecture notes are here.

Exercise instructions
Documents: CountingLoop Trace, ICE_05_02 Trace
Java code: ICE_05_CL_Trace, ICE_05_Count, ICE_05_Demo

Lecture 8

Today's class covers parameter variables. Lecture notes are here.
You should also look at this completed version of WalkDownWalls for examples of comments. Future assignment will require commenting.
As usual, exercises and java files are below.

Exercise instructions and example trace.
Demo 1, and Errors 1.
Extra: Method Overloading

Lecture 9

Review

Test 1

Lecture 10

In today's lecture we will be looking at printing information to the console window. This is really simple, and amazingly useful. Not only is it a step towards making your programs do real things, but, it can be quite useful as a debugging device (print out a value to double check that it is what you think it is. In class exercises below. Lecture notes are here.

When we use output we add a column to our trace table to record the output. You should practice tracing through the output demos below.
Hello World, and Output_demo

Practice: Start with the "Hello World" class. Change the code so that it prints out your name. Refer to the slide on formatting characters, and use this information to print out the line with the numbers with tab-intervals.

We will also talk about Strings. Lecture notes are here. Here are some some string example files.

String Demo,
Getting String,
Reverse String,
String Arrays,
String Length,
String Literal,
String Methods,

Lecture 11

Today's class covers getting user input. Lecture notes are here.

Exercise instructions and example trace.
Basic Keyboard IO, , ICE 05 IO, ICE 07 Output, Simple Keyboard IO, Fix Keyboard IO.

Lecture 12

We talk about class variables. Lecture notes are here. As usual, exercises and java files are below.

Exercise instructions and example trace, and another.
ICE_06 Errors 2, Demo 1, Demo 2, Remembering Robot

Lecture 13

Today we discuss overriding methods. Methods from a super class are inherited by a subclass, and can be overridden to behave more specifically to the subclass. Overriding allows java to be polymorphic Additionally we will look at making programs using multiple classes and files. Lecture notes are here.

If you are interested in more information about classes, there is a lot of information here: http://www.javaworld.com/article/2979739/learn-java/java-101-classes-and-objects-in-java.html

Demo 1 Overriding exercise and Code to trace
Look at this example trace after you have done yours.
Safer robot demo
Multi-file exercises
Harvester class, HarvestTask, Harvest.txt

Lecture 14

New types of loops - for loops. Lecture notes are here.

Exercise Description
Java files for ICE_15_For, and Nested While, and Printing Shapes
Documents: Trace Starter and Trace solution

Lecture 15

Review and test. Please bring pencils.

Lecture 16

Introduction to Arrays: We will cover arrays as objects, and using arrays as parameters. Lecture notes are here.

Exercise Description, and and more exercises.
Java files for ICE_15_For_4, and ICE_15_For_1 and ICE_17,
and Arrays with Loops, and Printing For
Demonstration Code

Lecture 17

More arrays. In this class we will be covering some more details, including examples of arrays of objects, processing arrays, and passing arrays around. Lecture notes are here.

In class exercises are here: Basic array exercises, and Array parameters, and Array passing exercises. Java files for Fill Array, Find in Array, Find Max, Print Array, Array Methods, Array Loops
Some sample code: Array Demo

Lecture 18

Lecture notes are here.

In class exercises for today are to review your previous assignments and tests.

Lecture 19

Today we are reviewing for the final exam. Please come prepared with questions.
A good start is to review your tests and assignments.

Lecture 20

FINAL EXAM Please bring pencils!

Lecture 21

We will review the final exam, and reinforce your mastery of these topics.
(And, yes, attendance will be taken.)

Jump to Homework Assignment 1, Homework Assignment 2, Homework Assignment 4

Lecture Date Topics Reading / Assignments
1 Monday, March 26 Course Intro
Java
Karel the Robot
Ch. 1
2 Wednesday, March 28 Compiling and Executing
Types of bugs
Debugging and debug tables
Tracing a program
Ch. 1.5 & 1.4
3 Monday, April 2 Variables, Methods Ch. 1.4, 1.7,
Ch. 2.1, 2.2, 2.4
4 Wednesday, April 4 Extending a class Ch. 1.4, 1.7,
Ch. 2.1, 2.2, 2.4
Homework 1 due
5 Mon. April 9 Decision Points: 'if' and 'if-else' Chapter 4.1, 4.2, 4.4
6 Wed. April 11 Repeating Statments - 'while' loops
Data types and temporary memory.
Chapter 4.1, Chapter 5.2 & 5.8
7 Mon. April 16 Counting while loops
Predicate Methods
Chapter 4.1, 4.2, 4.4, 4.5
8 Wed. April 18 Arguments to Methods (Parameters) Ch. 4.6, 6.2
Homework 2 due
9 Mon. April 23 Review
Test 1: bring pencils
10 Wed. April 25 Printing to the console
Strings and enumerated types
Ch. 6.6
Ch. 7-7.3
11 Mon. April 30 Getting User input
Non-robot programming
Ch. 9.4-9.5
Homework 1 Resubmission
12 Wed. May 2 Instance Variables
Variable types
Ch. 6.1-6.3
13 Mon. May 7 Over-riding inherited Methods
Programs in Multiple files
Ch. 6.2 & 4.4
Homework 3 due
14 Wed. May 9 For loops
15 Mon. May 14 Review Test 2: bring pencils
Homework #2 Resubmission
16 Wed. May 16 Arrays Ch. 10-3
Homework 4 due
17 Mon. May 21 Arrays as Parameters
Arrays as Return Values
18 Wed. May 23 Array tricks & details
Arrays of Objects
Ch. 10-10.5
NL Mon. May 28 No Lecture Today
19 Wed. May 30 Review for Final Exam. Homework 5 due
20 Mon. June 4 Bring pencils. FINAL CUMULATIVE EXAM
Homework 3 resubmission
21 Wed. June 6 Review Final Exam Attendance is taken.
All Assignment Re-writes Due


Homework Assignments: There are five homework assignments worth 75 points each. Each assignment is due at 11:59 on the due date. Each assignment may be resubmitted once after it is graded to re-write portions. The final grade will be the best out of the two grades.

Homework Assignment 1

Exercise your Fundamentals

This homework will contain a series of exercises to reinforce the concepts from the first portion of this course. The homework description and links to necessary files is here.


Homework Assignment 2

This homework will contain exercises to reinforce concepts of class extensions and conditional statements. The homework description and links to necessary files is here.


Homework Assignment 3

Non-robot code that interacts with the user. You should complete this assignment with a partner. The homework description and necessary file is here.

Homework Assignment 4

MazeBot: In this assignment you will create a new class of Robot that can navigate a randomly generated maze. The product of this assignment is one java program. The initial program and directions may be found below. Assignments will be handed in via Canvas.

Some hints:
  1. Notice that the MazeBot is extending RobotSE, not Robot. You can find the documentation for RobotSE on the web page, and you will find, among other things, that is has a turnRight() service.
  2. You will want to retain a count of the number of times a MazeBot moves in any given direction, and this is precisely the type of thing that instance variables are good for. (They will retain their values for the lifetime of the instance.)
  3. The comments in the existing code will help you determine how to structure your program. Another exercise is to solve the maze yourself, by hand, and notice what processes and decisions you make. (But remember that the MazeBot can't look ahead very well.)
  4. You should create helper methods. A method exists to perform a very specific task, or return a very specific piece of information. It is a great idea to create a helper method for each step of your solution (e.g, chooseDirection, moveSafely). You will be graded on how well organized your code is.
  5. Becker.jar contains a MazeCity class that may be used to generate random mazes in order to test your solution.
  6. You are encouraged to work with a partner for this homework. Please hand in one copy. The names of all partners must be in comments at the top of the Java file.
  7. The successful project will be fully commented and documented.
Directions
Maze java class

Homework Assignment 5

Histograms and Guessing Games. In this assignment you will create one robot code (Histograms!), and one non-robot code (GuessingGames!). These projects will allow users to practice a variety of concepts from this quarter, as well as focus on understanding arrays. The successful programs will be fully commented and documented. You are encouraged to work in teams of two or three. Your submission will include three java files.

The homework description and links to necessary files is here.