Meeting: Monday & Wednesday, 3:30PM-4:45PM @ WWH 102

Instructor: Randy Shepherd

Email: rjs471 [at]

Skype: randy.j.shepherd

Office hours: Monday & Wednesday, 4:45PM-6:15PM in WWH 425

Graders: Abhishek Bhunia - abhishek.bhunia [at]

Waitlist Questions

Please direct them to Romeo Kumar - kumar [at]


Students will learn how to design algorithms to solve problems, and translate these algorithms into working computer programs using the Java programming language. This is a first course for computer science majors, or for students from other scientific disciplines. Students are expected to already have some programming experience (it doesn't have to be in Java). This can be either by taking the prerequisite course CSCI-UA.0002 or the placement exam.

Class participation is important. Students should note that I generally ask all students to close their laptops at the start of class (i.e. no checking email or web surfing during class) to promote participation. Also, please note that the second half of the course (when we get to objects) is substantially harder than the first half, so attendance will be even more important.


Many materials used in this course are borrowed with permission from Joanna Klukowska and Craig Kapp


  • Understand fundamentals of programming such as variables, conditional and iterative execution, methods, etc.
  • Understand fundamentals of object-oriented programming.
  • Understand basics of how programs are executed by a computer.
  • Have the ability to write computer programs to solve specified problems.
  • Be able to use a software development environment to create, debug, and execute programs.


Part 1: Fundamentals of Programming
  • Introduction to computer science and Java
  • Primitive data types and elementary programming, simple input/output
  • Conditional execution and selection statements
  • Mathematical functions, characters and strings
  • Iterations
  • Methods
  • Arrays (1D and 2D), operations on arrays
Part 2: Object oriented programming and design
  • Objects and classes
  • Object oriented thinking and design
Part 3: Advanced concepts
  • Inheritance and polymorphism
  • Graphics and animations (using Processing)
  • Exception handling and text I/O
  • Abstract classes and interfaces
  • Recursion


"Introduction to Java Programming, Brief Version", 10th edition, by Y. Daniel Liang. This is a required textbook. There is a copy on reserve in Bobst.