Introduction to CIT 594

Download Report

Transcript Introduction to CIT 594

Intro to CIT 594
http://www.cis.upenn.edu/
~matuszek/cit594.html
1
Prerequisites
• The formal prerequisite is CIT 591
• CIT 591 was primarily a course in Java
• You are expected to be a reasonably good Java
programmer, including programming applications,
applets, and the AWT
• You are expected to have good Java programming
style, as well as knowledge of the language
2
What the course is about
• There are three main, interrelated topics in
CIT594:
– Data structures
– Algorithms
– Analysis of algorithms
• In addition, we will continue to explore what it
means to be a “good” programmer
3
Main required textbook
• Java Collections: An Introduction
to Abstract Data Types, Data
Structures and Algorithms,
by David A. Watt, Deryck F.
Brown, Dave Watt
• There is another textbook entitled
Java Collections, by a different
author (John Zukowski). Be sure
to get the correct book!
4
Secondary required textbook
• The Pragmatic Programmer:
From Journeyman to Master,
by Andrew Hunt and David
Thomas
5
Recommended reading
• The next two 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
• Not for beginners, but 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
• The Java style book contains
material you should know from
CIT591; if you did not take CIT91,
you need this book
8
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 Forté IDE
9
Forté
• Forté is an IDE, similar to BlueJ but much more
powerful (and more complex)
• If you already know a good IDE, such as Visual
Age or JBuilder, you may use it after using Forté
for the first couple of assignments
– It won’t hurt you to learn another IDE
– I do not consider J++ to be a good IDE
10
Lisp
• We begin by studying the Lisp programming
language
• Why?
– Lisp is simply the best way to learn what linked lists (an
important data structure) are all about
– Programming in Lisp is the best way to learn to write
recursive programs (recursion is an important technique
for working with data structures)
11
Getting Lisp
• If you plan to run Lisp on your own computer, I
recommend XLisp
– http://burks.brighton.ac.uk/burks/
language/lisp/index.htm
– Click on CLisp (it’s a version of XLisp)
– Download the file xlisp21h.zip
– Unzip into an empty directory to install
12
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 textbook is a good compromise between using what Java
provides, and doing it yourself
13
Algorithms
• There are thousands of 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 generally better to find an existing algorithm
than to re-invent it yourself
14
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
15
Grading
• We will have:
–
–
–
–
–
Approximately one assignment per week
A quiz approximately every other week
No final exam
Grades will be curved
We will use Blackboard, at least initially
• But the first assignment is to be turned in on paper
• Weighting will be 50% quizzes, 50% assignments
16
Extra help
• I expect to have somewhat more time available
than I did 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
• I may schedule a lab session—if so, it will be
optional
17
The End
18