Introduction

advertisement
Intro to CIT 594
http://www.cis.upenn.edu/~matuszek/cit594-2015.html
Prerequisites

The prerequisite is CIT 591




CIT 590 can also be used
CIT 591 was a course in Python and Java
We will continue using Java (and maybe get to Scala?)
If you did not take CIT 591...


You must already know Java, including 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
Knowing C++ is not a substitute for knowing Java
2
What the course is about

There are five main, interrelated topics in CIT594:





Recursion
Data structures
Algorithms
Analysis of algorithms
Concurrency

We will continue to explore good programming
techniques and programming style

It will also be necessary to cover more Java
3
Required Textbook

This book is by one of the
authors of the most widely
used algorithms textbook (the
latter is more like an
encyclopedia)

If you are taking CIT 596, the
chapters on graph algorithms
and on intractable and
incomputable problems will
also be useful
Recommended Textbook



This book has good
coverage of many of the
data structures and
algorithms that we will be
using
The book is intended to
supplement my lectures
There are many similar
books that will do equally
well
Recommended reading
 This is an excellent
self-study book for
anyone who wants a
technical position
Canvas and Piazza
 Canvas is designed to be a“complete course solution”that holds everything
about a course
 But we will use Canvas only for submitting assignments and posting grades on
those assignments
 When an assignment consists of more than one file, zip the files together into a
single file
 Piazza is a web site in which you can ask and answer questions about this
course
 Piazza is usually much faster than waiting to see or email me or one of the TAs
 To encourage use, you can get bonus points being a “good citizen” and
providing good answers and helpful tips
 Use good grammar
 Don’t post solutions to assignments
Java Collections

The Java Collection hierarchy (in java.util)
implements many of the most important data
structures for you


You need to know what these data structures are, when to
use them, and how they are implemented
There are also important data structures that the Java
Collection hierarchy does not provide


You need to be able to implement these data structures
You need to be able to devise and implement data
structures that are specific to your current problem
8
Algorithms




An algorithm is:
 A well-defined, step-by-step procedure
 That is guaranteed to terminate
There are literally thousands of published algorithms
We will cover some of the algorithms from the textbook
It’s almost always better to find an existing algorithm than to
re-invent it yourself
 Always reference your sources
9
Analysis of algorithms

Analysis of algorithms is a relatively small part of this course, but
it’s an important part





Most of the time, programming efficiency is the wrong goal—you should
be making your programs clearer, not faster
But sometimes your program is too slow, or it is part of an application
where speed is critical
Besides, using well-known algorithms often make your program easier to
understand
Analysis can tell you how fast an algorithm will run, and how
much space it will require
When speed is important, a proper choice of algorithm is
essential

Coding details matter almost not at all
10
Assignments

Except as otherwise noted, all assignments:





There may (or may not) be some team assignments



Should be done in Eclipse
Should include complete JUnit tests for non-GUI, non-I/O methods, and
Should include complete javadoc documentation for non-private entities
Must be submitted via Canvas; email will not be accepted and may be
discarded without comment
Partners may be assigned by the instructor
We do not have a laboratory section
You will do most or all 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 days





Late assignments will lose 5 points each day that they are late
However, each person can take up to 7 free “late days”
To claim late days for an assignment:
 Send me email specifying which assignment and how many late days you are
requesting for it
 You can do this either before or shortly after submitting your assignment, but not
several days or weeks later, and certainly not after we’ve graded it
The following are not requirements, but will make it easier for me to keep track of
things:
 Specify assignments by name, not just by number (I don’t remember assignments
by their numbers)
 Use something like “CIT 594 late days” in the Subject: line of your email
 Please avoid changing a request after you have made it
 Please don’t ask for any additional late days (unless you have health problems or
serious family emergencies)
The last assignment of the semester may have a “hard” deadline closer than the number
of late days you have remaining
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 avoid making appointments




I will have office hours 2:00-4:00 on Tuesdays and
Thursdays, but...
...I have an open door policy: If my door is open, I’m
available
The TAs will also have office hours
We will not have labs or extra help sessions this
semester
14
The End
15
Download