intro to cit 594 matuszek/cit594-2007.html

14
Intro to CIT 594 http://www.cis.upenn.edu/~matuszek/cit594-2007.html

Upload: kenneth-roberts

Post on 24-Dec-2015

213 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Intro to CIT 594 matuszek/cit594-2007.html

Intro to CIT 594

http://www.cis.upenn.edu/~matuszek/cit594-2007.html

Page 2: Intro to CIT 594 matuszek/cit594-2007.html

2

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

Page 3: Intro to CIT 594 matuszek/cit594-2007.html

3

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

It will also be necessary to cover more Java

Page 4: Intro to CIT 594 matuszek/cit594-2007.html

4

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

Page 5: Intro to CIT 594 matuszek/cit594-2007.html

Recommended book #1

If you don’t have a book that describes the new features in Java 5 (especially generics), you should get one

Here’s my favorite:

Page 6: Intro to CIT 594 matuszek/cit594-2007.html

6

Recommended book #2

The Elements of Java Style, by Alan Vermeulen (ed.)

This book describes the style that will be expected of you

Page 7: Intro to CIT 594 matuszek/cit594-2007.html

7

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 (the

current version is 3.2.1) Eclipse 3.0 does not support Java 5.0

Page 8: Intro to CIT 594 matuszek/cit594-2007.html

8

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

Page 9: Intro to CIT 594 matuszek/cit594-2007.html

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

Page 10: Intro to CIT 594 matuszek/cit594-2007.html

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

Page 11: Intro to CIT 594 matuszek/cit594-2007.html

Assignments Except as otherwise noted, all assignments:

Should be done in Eclipse Should include complete JUnit tests for non-GUI, non-I/O classes, and Should include complete javadoc documentation for non-private entities Must be submitted via Blackboard; email will not be accepted

You will do some programming with a partner Partners are assigned by the instructor As in CIT591, you will get a different partner for each assignment Unfortunately, we do not have a laboratory section

You will do some assignments by yourself 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

Late assignments will lose 5 points per day, and may or may not be accepted if more than a week late

Page 12: Intro to CIT 594 matuszek/cit594-2007.html

12

Grading We will have:

Approximately one assignment per week One midterm One final exam Grades will be curved We will use Blackboard to turn in assignments

Grades will be weighted as follows: 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

Page 13: Intro to CIT 594 matuszek/cit594-2007.html

13

Office hours and (no) labs

I will be more available than last semester I avoid making appointments I have an open door policy: If my door is open, I’m

available Posted office hours are just the times that I try hard to be in

my office, not the only times you can talk to me The TA will also have office hours

We will not have extra help sessions or labs this semester

Page 14: Intro to CIT 594 matuszek/cit594-2007.html

14

The End