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
]
|