Top Banner
Intro to CIT 594 http://www.cis.upenn.edu/~matuszek/cit594-2015.html
15
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Intro to CIT 594 matuszek/cit594-2015.html.

Intro to CIT 594

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

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

2

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

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

3

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

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

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

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

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

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

Recommended reading

This is an excellent self-study book for anyone who wants a technical position

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

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

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

8

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

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

9

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

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

10

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

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

Assignments Except as otherwise noted, all 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 There may (or may not) be some team assignments

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

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

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

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

13

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 14: Intro to CIT 594 matuszek/cit594-2015.html.

14

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

Page 15: Intro to CIT 594 matuszek/cit594-2015.html.

15

The End