CompSci-61B Lecture Topic 0
Orientation and Overview

Instructor: Prof. Robert Burns

Introduction
Program Design & Data Structures
You will learn...
  Java programming language
  what is a "data structure"
  storing, finding, and sorting data
  arrays vs. linked-structures
  how to choose the "right" data structure
  how to "time" algorithms
About the instructor
  Ph.D. Purdue, Mech.Engr.
  programmer since 1969 (C++ and Java)
  DVC CS dept. chairman

Course Goals
Understand details of classic sorting methods
Understand details of classic searching methods
Be able to design reusable Java classes to manage data
Be able to use Java's "java.util" package
24 hours per week (6 lec + 6 lab/disc + 12)

Learning process: read, lecture, lab, project
schedule in Syllabus and Course Outline

Class Website Tour
URL http://inst.eecs.berkeley.edu/~cs61b/su07/
lab assignments and lecture topic notes
fully-independent online discussion group
some free Java programming resources

Programming In Java SE
console programs -- no GUI in this class
command-line compiling (in lecture)
vendor-, system-, and compiler-independence
  UNIX, Microsoft, Mac OSx, Linux

computer account forms: get one today

using packaging and jars
  for organization and distrubution
using the BufferedReader & BufferedWriter
  classes for console and file I/O
  ref: Burns, chapter 5

Elements Of Program Design
understand the problem
  NO: paper->eyeball->brain->keyboard programming!
verify your assumptions; know your assumptions
  the difference between what you know...
  ...and what you think you know!
gather your tools; know your tools
  language and its features
  references: APIs, sample code,...

Debugging
syntax errors that prevent compilation
  the "stare" method
logic errors: trace and isolate
  using debug output statements
  ...or step-by-step debugging in IDEs
  using "assert" statements
try not to spend all your time debugging!

Developing An App
at the center: the data
  build app around it
  app manilupulates this data
  direct manipulation as proof-of concept
  build modules to automate manipulation
    good example: SQL database
data <-> module <-> UI
build/gather needed utilities
  e.g., random number generators, UI menus,...

Some Key Concepts In Data Structures
a "collection" of values
values: simple single-values vs. structured multiple-values
storage options for collections:
  arrays with adjacent elements
  linked structures (non-adjacent)
collections as references to data stored in "objects"
retrieval: copy or reference?
use of recursion
speed and size considerations

Unit Testing (vs Functional Testing)
refs: [ ACM | IBM | Miller ]


[ Home | Contact Prof. Burns ]