Techniques of Computer Science

Thursday, November 21: GUIs Tuesday, December 3: GUIs Thursday, November 21: Exam Tuesday, November 19: Miscellaneous Thursday, November 14: Recursion Tuesday, November 12: Recursion Thursday, November 7: Inheritance Tuesday, November 5: Interfaces Thursday, October 31: Class dependencies Tuesday, October 29: Static Thursday, October 24: ArrayLists Tuesday, October 22: 2D Arrays Tuesday, October 15: Arrays Thursday, October 10: Arrays Tuesday, October 8: Exam Thursday, October 3: Graphical classes Tuesday, October 1: Game classes Thursday, September 26: Classes Tuesday, September 24: Classes Thursday, September 19: Methods Tuesday, September 17: Applets Thursday, September 12: Strings Tuesday, September 10: Logic Thursday, September 5: Logic Tuesday, September 3: Java basics Thursday, August 29: Introduction
Course overview

This course will introduce you to the Java programming language. We will start with basic programming concepts that will be familiar to you from the previous course. Then we will go on to more advanced concepts, including:

This course has three goals. It will introduce you to Java, which is a popular language used in many of our upper-level courses as well as many jobs. It will also introduce you to object-oriented design, which is a powerful trend in modern software development. Finally, it will make you a more sophisticated programmer, with a wider range of skills and techniques at your disposal.


Our CS 140, or something similar. This course assumes that you have experience with basic programming concepts in Python, and moves quickly through the corresponding concepts in Java.


Java Software Solutions, 7th Edition by Lewis & Loftus. For each topic we cover, I will list relevant sections in the book. Reading these sections is likely to improve your understanding of concepts from class, and in some cases may provide useful details that did not happen to come up in class.

Office hours

These are all the times when I’m likely to be in my office. Come by at any of these times and you will probably find me. If you want to be sure, you can make an appointment in class or through email.


If your learning or participation in this course may be affected by a disability or any other factor, please talk to me early in the semester so that we can arrange appropriate accommodations. I will do my best to ensure that everyone can learn effectively.


Being in class is crucial for your learning in this course. Absences will cause you difficulties on assignments and exams. There are also small amounts of in-class graded work.  If you must miss a class, it is your responsibility to get caught up on anything you missed before the next class.

Keeping up

It is particularly important not to fall behind in this course, because most topics build directly upon the ones before. You will need to develop your Java skills gradually and spend time practicing them. If you fall behind, you may find it difficult to catch up.

Grading policy

Your final grade will be a weighted average of four components: exams (45%), homework (35%), quizzes (10%), and a final project (10%). This table shows how course averages will translate to the 4-point scale. Be aware that I set a high bar for a 4.0 (an average of at least 96%).

Academic integrity

The St. Lawrence Academic Honor Code in your Student Handbook applies to this course. The specific policies for this course are supplementary to the Honor Code. I expect you to abide by Article I (Student Responsibilities), and I intend to abide by Article II (Faculty Responsibilities).


Programs will be assigned for homework approximately once per week. They will give you practice writing your own code using concepts from class. The first few may be easy, but they will quickly become more difficult as the semester progresses. Below are some specific rules for homework.


Two midterm exams will test your ability to explain concepts, interpret code, and produce code on a small scale with pencil and paper. They will take place in class on October 10 and November 21. Your best exam will count for 25% of your final grade, and the other will count for 20%.


A very short written quiz at the beginning of nearly every class will review the material introduced in the previous class. The purpose of these quizzes is to help ensure that you are mastering new concepts as we cover them. Your lowest two quiz scores will be dropped.


In a two-week final project at the end of the semester, you (and perhaps a partner) will implement a program of your own design. This project takes the place of a final exam.


Things you might find useful:

We will be using Sakai for homework submission and grade tracking.