Intro to CIT594

Download Report

Transcript Intro to CIT594

Intro to CIT 594
http://www.cis.upenn.edu/~matuszek/cit594-2005.html
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 Swing
You must be familiar with, or prepared to learn quickly:




JUnit testing
The Eclipse IDE
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:





In addition, we will continue to explore good programming
practices




Recursion
Data structures
Algorithms
Analysis of algorithms
Good programming style
Good habits, such as creating test cases
Use of tools, such as Eclipse and JUnit
It will also be necessary to cover more Java
3
Required textbook #1

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!)

It does not, however, cover some of the
essential math we will need
4
Required textbook #2

The Elements of Java Style, by Alan
Vermeulen (ed.)

This book describes the style that will
be expected of you
5
Strongly recommended books


You should get some book that describes the new
features in Java 5 (especially generics)
Here are two that are only about these new features:
Java in this course


This is a course in algorithms and data structures, not a
second course in Java
But...



Java 5.0 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 use Eclipse 3.1M4 or newer


Eclipse 3.0 does not support Java 5.0
Macintosh users: Java 5.0 is not yet available for you

I feel your pain
7
Java generics


C++ programmers: Java generics are similar to C++
templates
We will study generics in some detail, but for now,
here’s all you need to know about generics:


Generics have little or no relevance to the data structure
concepts we will be studying in this course
Generics completely change the way we code data structures
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
9
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
10
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
11
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:






Grades will be weighted as follows:




Approximately one assignment per week
One midterm
One final exam
Grades will be curved
We will use Blackboard to turn in assignments
50% assignments
20% midterm
30% 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
13
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
14
The End
15