Introduction

  • Excitement (and frustration) of Computer Programming

  • What have you seen computers do that really wow's you?
  • Computers are general and programmable; this is what makes them so flexible and extraordinary.
  • Java and Object Oriented Programming

  • Though we are switching languages (from C to Java), the real motivation is the switch of programming paradigms (that is, our goal is not explicitly to learn all of the many Java-specific details)
  • Learning to write small programs and then continuing to use those same techniques to design large programs is not necessarily a successful model.

    Software is often large and complex; rarely written entirely from scratch. Instead components of the software must often be designed separately, but in a way that they can interact with each other. This allows:

  • a large team of people to work together on a project in parallel and independently;
  • a more controlled methodology for testing and updating portion of the software
  • easier time in reusing or generalizing previous code
  • We'd like to learn, from the beginning, an approach to programming which allows us to see the big picture.

  • In this course:

  • We'll often have you writing pieces of a larger program (with the balance provided by us or the authors).

  • You will work at times individually, or at times in pairs.

  • Think before you write!

    This is an important principle in programming. Though it is tempting to jump right in and write the first line of code, then the second, then the third, it is more important to make sure that your high-level design makes sense before you waste time writing the wrong code.

    We'll practice this patience in the course as well, using the first week to talk about high-level design issues, only starting to use the computers after that.

  • Details of Course Administration

  • Textbook
  • Components of Course Grades
  • Academic Integrity
  • Late Policies

  • Michael Goldwasser
    Last modified: Wednesday, 14 January 2004