Download Lecture 1 - UMass CS !EdLab

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
CMPSCI 187
Introduction to Programming
with Data Structures
Computer Science 187
Lecture 1
INTRODUCTION
Instructors:
Allen Hanson
[email protected]
TA:
Scott Kuindersma
[email protected]
1
CMPSCI 187
Items to Discuss





Getting into the course.
Homework and Grading.
Working together.
TAs: office hours etc.
On-Line course material.
2
CMPSCI 187
Course Goals and Content





Learn specifics of use of some important data structures
Learn how to for design and evaluate data structures
Develop an object-oriented philosophy
Deepen general facility in programming
Learn to use Java
Data structure : A systematic way of organizing and
accessing data.
Algorithm : A step-by-step procedure for performing
some task in a finite amount of time.
3
CMPSCI 187
(Secret) Agenda
Understand, appreciate fundamental data
structures & their relationship to algorithms
 Appreciate the interplay between DS,
algorithms, and OO programming
 Become a skilled code reader
 Become a skilled Java programmer

4
CMPSCI 187
Who fails, and why..





Phrasebook Java
Don’t know what you don’t know (come to
class!)
In general CS is as much about technique as
about brains
Passivity: this course in not a big-needle shot
of knowledge in the head
Write code….practice, practice, practice
5
CMPSCI 187
Textbook

Elliot B. Koffman and Paul A. T. Wolfgang
Data Structures: Objects, Abstraction, and
Design Using Java 5.0
[John Wiley and Sons, 2005]

Available at
 Textbook
annex and possibly
 Jeffrey Amherst Bookstore (downtown
Amherst)
http://www.jeffbooks.com/Info.html
6
CMPSCI 187
Jeffrey Amherst Location
N. Pleasant Street
Amity Street
Main Street
S. Pleasant Street
7
CMPSCI 187
Syllabus

Will cover a fair amount of the textbook

Material will be covered in order shown on syllabus

Detailed syllabus on course WIKI page

Web Page: http://www.cs.umass.edu/cs187

WIKI page: http://twikiedlab.cs.umass.edu/bin/view/Hanson187/WebHome

Lectures will hit the high points of material in the
book plus additional material not in the book.

Wednesday discussion sessions will be more
informal.
8
CMPSCI 187
Homework and Grading
Quantity
1
1
6 or 7
Worth
midterm exam
final exam
programming projects
Owl & Discussion sheets
20%
35%
30%
15%
Must get at least a C on the final to get a C overall
Collaboration?
YES …..encouraged, BUT final
work must be your own.
9
CMPSCI 187
Course Syllabus -- Topics
(not necessarily in order)
 Java - Review/Overview
 Generics
 Object-Oriented Design
 Trees
 Abstract Data Types
 Priority Queues
 Computational
 Dictionaries
Complexity
 Stacks & Queues
 Recursion
 Vectors, Lists &
Sequences
 Search Trees
 Sorting, Sets & Selection
 Graphs (time permitting)
 Strings and Pattern
Matching (time permitting)
10
CMPSCI 187
On-Line Resources
Course Wiki Page:
http://twiki-edlab.cs.umass.edu/bin/view/Hanson187/WebHome









Course Overview and Administration
Course Staff
Course Schedule
Lecture Notes
Homework Assignments
Exams
Discussion Notes and Assignments
Useful Links
Grades
11
CMPSCI 187
WIKI Front Page
VERY IMPORTANT
 Late breaking news
 Changes in
assignment dates
 Important
announcements
12
CMPSCI 187
Syllabus page
Reading to be done
PRIOR to class
13
CMPSCI 187
TA



Scott Kuindersma
CS 207
[email protected]
I am a first year graduate student in
the Computer Science MS/PhD
program at UMass Amherst. My
primary research interest is
biologically-inspired models for
machine learning.
My hope is that such research will not only lead to more effective
computational learning models, but also provide some further
insight into the mechanisms for learning and prediction in the brain.
14
CMPSCI 187
Consulting
HOURS
TBA



Consulting is in LGRT 224.
LGRT 224 shared with 121 consulting.
Watch 187 bulletin board (WIKI page) for
more information.
15
CMPSCI 187
Getting Into the Course
Prerequisites: C or better in CS123
 Programming experience in Java, C++
 Permission of Instructor


If not registered:
 Fill
in override form
 Look for announcement on 187 Bulletin board
 Course has openings

If you are not registered, see me after class.
16
CMPSCI 187
Questions





What year are you in?
Math experience?
Intended major?
Have you taken CMPSCI 121?
Programming experience
 never?
- consider switching to 121
 Basic?
- consider switching to 121
 Pascal?
- tough call, course assumes Java or C+
 C?
- tough call, course assumes Java or C++
 C++?
- should be OK but will require extra work
 Java?
- should have at least one full semester
 Scheme? - probably OK
 Python? - probably OK
17
CMPSCI 187
Questions, continued



Do you have a computer?
If yes, what kind:
Macintosh?
IBM PC or compatible?
Others?
Have you ever used a Java Integrated
Development Environment before? If yes:
Sun JDK under Unix? Windows? MacOs?
Metroworks Code Warrior?
Microsoft J++/Jbuilder?
BlueJay?
Eclipse?
18
CMPSCI 187
EDLab Accounts



Everyone has an account
Will use the EdLab to submit Java source code and
other assignment information
Make sure you can log onto your account


Initially,



cd cs187 (all your 187 work should be done here)
User name =Most usernames will be first character of your
first name appended your lastname and then truncated to 8
characters.
Password = 9 digit student account number or whatever you
set it to last semester.
Problems logging on? See me or TA.
19
CMPSCI 187
CMPSCI 187
….on to the Java Review
20
CMPSCI 187
Topics of the Review



Essentials of object-oriented programming, in Java
Java primitive data types, control structures, and
arrays
Using some predefined classes:

Math

JOptionPane????, I/O streams
String, StringBuffer, StringBuilder
StringTokenizer



Writing and documenting your own Java classes
21
CMPSCI 187
Salient Characteristics of Java


Java is platform independent: the same program can
run on any correctly implemented Java system
Java is object-oriented:



Java designed as



Structured in terms of classes, which group data with operations
on that data
Can construct new classes by extending existing ones
A core language plus
A rich collection of commonly available packages
Java can be embedded in Web pages
22
CMPSCI 187
Classes and Objects


The class is the unit of programming
A Java program is a collection of classes
class definition (usually) in its own .java file
 The file name must match the class name
 Each

A class describes objects (instances)
 Describes
their common characteristics: is a blueprint
 Thus all the instances have these same characteristics

These characteristics are:
 Data
fields for each object
 Methods (operations) that do work on the objects
23
CMPSCI 187
What's a Java program?




A bunch of files, living in a project (directory)
Each file contains a class declaration
Somewhere inside the classes there is a main
method:
public static main (String [] args)
which gets called when you run a java project.
Two kinds of Java programs:


Applets: designed to be downloaded into a web browser
Applications: stand-alone programs that perform some task
(e.g. Word, Excel, Photoshop…)
187 concentrates on applications.
24
CMPSCI 187
Hello, World
import java.io.*;
class HelloWorld
{
/**
* main method…prints the string Hello, World
*/
public static void main(String[] args)
{
System.out.println("Hello, World") ;
} // end of method main
} // end of class Hello
25
CMPSCI 187
Java Processing and Execution


Begin with Java source code in text files:
Model.java
A Java source code compiler produces Java byte
code
one file per class: Model.class
 May be standalone or part of an IDE
 Outputs

A Java Virtual Machine loads and executes
class files
 May
compile them to native code (e.g., x86) internally
26
CMPSCI 187
Compiling and Executing a
Java Program
27
Grouping Classes: The Java
API
CMPSCI 187



API = Application Programming Interface
Java = small core + extensive collection of packages
A package consists of some related Java classes:





Swing: a GUI (graphical user interface) package
AWT: Application Window Toolkit (more GUI)
util: utility data structures (important to CS 187!)
The import statement tells the compiler to make
available classes and methods of another package
A main method indicates where to begin executing a
class (if it is designed to be run as a program)
28
CMPSCI 187
Data Structures and Algorithms
From Goodrich & Tamassia (1st edition), p. 5
29
CMPSCI 187
Abstract Data Types


An abstract data type (ADT) is an abstraction of a data
structure: no coding is involved.
User
The ADT specifies:



For example, if we were going to model
a bag of marbles as an ADT,
we could specify that




What can be stored in the structure
What operations can be done on/by the ADT
Public Interface
Abstract Data Type
Implementation#1
Implementation#2
Implementation#3
Details hidden from user!
this ADT stores marbles
this ADT supports putting in a marble and getting out a marble
There are lots of formalized and standardized ADTs
In this course, we will look at many of them:
 stacks, queues, lists, trees, …...
30
CMPSCI 187
Object-Oriented Design
Principles and Techniques
 Principles
Abstraction
Encapsulation
Modularity
 Techniques
Classes and
Objects
Interfaces and
Strong Typing
Inheritance and
Polymorphism
31
CMPSCI 187
Object-Oriented Design Principles
Modularity
From Goodrich & Tamassia , p. 62
32
CMPSCI 187
Object-Oriented Design
Principles and Techniques
33
From Goodrich & Tamassia (1st edition) , p. 10
CMPSCI 187
‘Chance’ Simulation
import java.util.Random;
public class Chance{
Random R;
public Chance()
{R = new Random(); }
public boolean coinToss()
{return (R.nextInt(2) == 1);}
public int dieToss()
{return(R.nextInt(6) + 1);}
public int diceToss()
{return (dieToss() + dieToss()); }
}
34
CMPSCI 187
Test Program for Chance
public class ChanceTester
{
public static void main(String[] args)
{
Chance C = new Chance();
for (int j = 0; j < 10; j++)
System.out.println("throwing dice.." + C.diceToss());
}//End Main
}//End ChanceTester
-----------------------------------------------------throwing dice..8
throwing dice..10
throwing dice..12
…
throwing dice..3
throwing dice..6
throwing dice..8
35