Intro to CIT594

Download Report

Transcript Intro to CIT594

Intro to CIT 594
http://www.cis.upenn.edu/
~matuszek/cit594.html
17-Dec-03
Prerequisites
The formal prerequisite is CIT 591
CIT 591 was primarily a course in Java
If you did not take CIT 591...
You must be a reasonably good Java programmer,
including programming applications, applets, and the AWT
You are expected to have good Java programming style
Other programming languages can not be used as a
substitute for Java
2
What the course is about
There are four main, interrelated topics in CIT594:
Recursion
Data structures
Algorithms
Analysis of algorithms
In addition, we will continue to explore good
programming practices
Good programming style
Good habits, such as creating test cases
Use of tools, such as Eclipse and JUnit
3
Required textbook #1
Java Collections: An Introduction to
Abstract Data Types, Data Structures
and Algorithms, by David A. Watt and
Deryck F. Brown
There is another textbook entitled Java
Collections, by a different author (John
Zukowski). Be sure to get the correct
book!
4
Required textbook #2
Data Structures & Algorithms in
Java, Second Edition, by Robert
Lafore
This book has the clearest and
most understandable explanations
of algorithms that I have ever
seen (and I’ve seen a lot of Data
Structures textbooks!)
5
Recommended reading
The next three books are not required for this course,
so the campus bookstore probably won’t have them
If you want them, you will probably have to special
order them
The campus bookstore may have some copies of the
style book left over from last semester
6
Suggested reading I
Essential Java 2 Fast, by John
Cowell
This is not a tutorial, but rather an
extremely useful and concise
reference
This is my favorite Java book
7
Suggested reading II
The Elements of Java Style, by Alan
Vermeulen (ed.)
This book describes the style that
will be expected of you
It contains material you should know
from CIT 591
If you did not take CIT 591, you
need this book
8
Just good reading
The Pragmatic Programmer:
From Journeyman to Master,
by Andrew Hunt and David
Thomas
Full of excellent advice for
practicing programmers
We will not be using this book
this semester
9
Java in this course
This is a course in algorithms and data structures, not a
second course in Java
But...
Java will be the primary programming language
We will study Java Collections in detail, as they are
extremely relevant to the course
You will be expected to learn the Eclipse IDE
10
Eclipse
Eclipse is an IDE, similar to BlueJ but much more powerful
(and more complex)
The major IDEs are all pretty similar; once you learn Eclipse,
you will be able to pick up another IDE pretty quickly
Advantages of Eclipse:
Full-featured
Free, open source
Very well implemented
Support for various refactorings
Disadvantage:
No special support for GUI building
Uses SWT rather than Swing
11
Java Collections
Java Collections implement many of the most
important data structures for you
A traditional data structures course would have you
implement these yourself
I don’t believe in re-inventing the wheel
However, you need to know how these data structures
are implemented, for the times when you need something
more than Java gives you
The Java Collections textbook is a good compromise
between using what Java provides, and doing it yourself
12
Algorithms
There are literally thousands of published algorithms
We will cover:
a few algorithms that are related to the data structures we
are studying
a few more algorithms that your instructor especially likes
It’s usually better to find an existing algorithm than
to re-invent it yourself
The Data Structures & Algorithms in Java textbook is an
excellent textbook for beginning data structures and
algorithms, but it completely ignores Java’s collections
13
Analysis of algorithms
Analysis of algorithms is a relatively small part of this
course, but it’s an important part
Analysis can tell you how fast an algorithm will run,
and how much space it will require
A good algorithm, even if badly coded, can run circles
around a poor algorithm that is carefully tuned and
highly optimized
14
Assignments
Except as otherwise noted, all assignments:
Are to be done solo (by yourself). As before,
You may discuss the assignments with other students
You may help (and get help with) debugging
You may not give your source code to anyone
Should be done in Eclipse
Should include complete JUnit tests, and
Should include complete javadoc documentation
Late assignments will lose 5 points per day, and may
not be accepted if more than a week late
Grading
We will have:
Approximately one assignment per week
Three to five quizzes
A final exam
Grades will be curved
We will use Blackboard to turn in assignments
Grades will be weighted as follows:
50% assignments
30% quizzes
20% final exam
If you feel a grading error has been made, you have one week
after grades have been posted to bring it to our attention
16
Office hours and (no) labs
I will be more available than last semester
I will post office hours; these are the times that I will try
hard to be in my office and available
When my door is open, I’m probably available
Please try to keep visits short
The TA will also have office hours
We will not have extra help sessions or labs this
semester
We will be doing all or almost all individual (solo)
projects, but there may be some exceptions
17
The End
18