Columbia University

High School Science Honors Program

Computer Programming in Java

2007 Fall


General Information

Instructor: Matt Chu

Email: mwc2110@columbia.edu (Prepend “[SHP]”to the subject)

Homepage: http://www.cs.columbia.edu/~mwc2110/shp

Classroom: 222 Pupin

Lab: 251 Mudd


News and Announcements

Oct 06: If you haven't done so yet, please fill out this survey so that I know more about what you're looking for from this course.

Oct 06: If you're interested in looking ahead, you can take a look at last semester's homepage. Note that 1) I'm always working on improving the class, and 2) we're following a different schedule this semester, so some of the material might not be applicable (or comprehensible).


Useful Programs and Links

To log into CUNIX to write, compile, and execute your programs use either: PuTTY if you are using Windows, or the built-in Terminal if you are using Mac OS X.

To connect to CUNIX for transferring files, use either: WinSCP (Windows) or Fugu(Mac OS X). The hostname is "cunix.cc.columbia.edu".

Two useful CUNIX tutorials: here and here.

If you are having problems getting the software set up correctly, feel free to bring your laptop and I'll help you get it all working.

Java 1.6 API Documentation


Schedule

Week

Date

Topics

Files/Links

1

Sep 29

Lecture

·       Introduction and Logistics

·       What is: Java?

Lab

·       UNIX/CUNIX

·       pico

·       javac and java

·       WinSCP

HelloWorld.java

InteractiveHello.java

Calculator.java

2

Oct 06

Lecture

·       Data types & Variables

·       Comparison Operators

·       Arithmetic Operators

·       Control Flow

·       Variable Scope

·       Random Numbers

·       User I/O

Lab

·       See Lecture Notes

Lecture Notes

GuessingGame.java

ToSeconds.java

FromSeconds.java

RockPaperScissors.java

Algorithm.java

OverUnder.java

3

Oct 13

Lecture

·       Functions/Methods

·       Comments & Style

·       Common compiler errors

·       String manipulation

Lab

·       See Lecture Notes

Lecture Notes

MethodExample.java

ArraysExample.java

4

Oct 20

Lecture

·       Analysis of Algorithms, Part I

o      Asymptotic analysis, Big-Oh

o      Sequential Search

o      Binary Search

Lab

·       See Lecture Notes

Lecture Notes

Search.java

unsorted-set.txt

sorted-set.txt

5

Oct 27

Lecture

·       Analysis of Algorithms, Part II

o      Insertion Sort

o      Selection Sort

o      Bubble Sort

o      Merge Sort

Lab

·       See Lecture Notes

Lecture Notes

Sorting.java

InsertionSort.java

SelectionSort.java

BubbleSort.java

MergeSort.java

small1.txt

small2.txt

small3.txt

small4.txt

big1.txt

big2.txt

6

Nov 03

Lecture

·       Discussion of Programming Assignment: Even-Odd

Lab

·       See Lecture Notes

Lecture Notes


 

7

Nov 10

Lecture

·       Intro to Object Oriented Programming

o      Classes, objects/instances

o      Member variables and methods

o      Getters and setters

o      Constructors

Lab

·       OO Programming practice

Lecture Notes

Assignments

Triangle.java

Square.java

Circle.java

8

Nov 17

Lecture

·       More OO Programming

o      Inheritance

o      Polymorphism

Lab

·       See Lecture Notes

Lecture Notes


 

Nov 24

Thanksgiving Break! No Class.


 

9

Dec 01

Lecture

·       Intro to Artificial Intelligence

·       The minimax algorithm

Lab

·       TicTacToe

·       5-in-a-row

Lecture Notes

Assignments

Tic-Tac-Toe.zip

10

Dec 08

Lab

·       TicTacToe


 

11

Dec 15

Lab

·       Cryptography

Assignments

package.zip


Last Updated: 2007 Dec 16 Sun 05:00 EDT