This course is an introduction to computer programming using Java. I use a traditional
lecture format to teach the course material. The primary learning objectives are to have students
learn how to write very simple statements using the various constructs in the language and to
understand how the program is modifying the contents of RAM while it runs.
Exams require students to demonstrate that they can utilize all of the various language features
taught in the course. I am not concerned with whether or not they can solve tricky problems in
50 minutes. The same goes with quizzes.
Students are required to write notes. No computers are allowed in lecture to eliminate
I administer weekly quizzes in recitation (i.e. lab) based on the material taught during the previous week. I provide sets of problems each week for student to use to prepare for the quizzes.
Students will create and work on a Linux Virtual Machine (VM) using Amazon Web Services (AWS).
Students learn on linux, compiling with javac and running their programs with java. Students write using vi. We do not use IDEs since IDEs have features like autocomplete that give students an
unhelpful crutch at this stage of their development.
Students will install git on their VM and push their source code to GitHub for assistance and
Wed, Nov 3
Scanning Strings, Finding Row and Column indices (code)
Modeling Entities with Classes (Box.java)(BoxApp)
Fri, Nov 5: ¶ 9.1-9.5, 9.8-9.11
Use-defined Types, fields, constructors, getters and setters,
overriding the Object class' toString method (Box.java)
Using the Box class (code)
Reading box data from a file and storing in an array (boxes.txt)
Mon, Nov 8: ¶ 9.7,9.14
Static fields and methods, final fields, this keyword (Rocket.java)
Using the Rocket class (code)