Intro to CIT 594PrerequisitesWhat the course is aboutRequired textbook #1Recommended book #1Recommended book #2Java in this courseJava CollectionsAlgorithmsAnalysis of algorithmsAssignmentsGradingOffice hours and (no) labsThe EndIntro to CIT 594http://www.cis.upenn.edu/~matuszek/cit594-2007.html2PrerequisitesThe formal prerequisite is CIT 591CIT 591 was primarily a course in JavaIf you did not take CIT 591...You must be a reasonably good Java programmer, including programming applications, applets, and SwingYou must be familiar with, or prepared to learn quickly: JUnit testingThe Eclipse IDEYou are expected to have good Java programming styleOther programming languages can not be used as a substitute for Java3What the course is aboutThere are four main, interrelated topics in CIT594:RecursionData structuresAlgorithmsAnalysis of algorithmsIn addition, we will continue to explore good programming practicesGood programming styleGood habits, such as creating test casesUse of tools, such as Eclipse and JUnitIt will also be necessary to cover more Java4Required textbook #1Data Structures & Algorithms in Java, Second Edition, by Robert LaforeThis 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 needRecommended book #1If you don’t have a book that describes the new features in Java 5 (especially generics), you should get oneHere’s my favorite:6Recommended book #2The Elements of Java Style, by Alan Vermeulen (ed.)This book describes the style that will be expected of you7Java in this courseThis is a course in algorithms and data structures, not a second course in JavaBut...Java 5.0 will be the primary programming languageWe will study Java Collections in detail, as they are extremely relevant to the courseYou 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.08Java CollectionsJava Collections implement many of the most important data structures for youA traditional data structures course would have you implement these yourselfI don’t believe in re-inventing the wheelHowever, you need to know how these data structures are implemented, for the times when you need something more than Java gives you9AlgorithmsThere are literally thousands of published algorithmsWe will cover: a few algorithms that are related to the data structures we are studyinga few more algorithms that your instructor especially likesIt’s usually better to find an existing algorithm than to re-invent it yourselfThe Data Structures & Algorithms in Java textbook is an excellent textbook for beginning data structures and algorithms, but it completely ignores Java’s collections10Analysis of algorithmsAnalysis of algorithms is a relatively small part of this course, but it’s an important partAnalysis can tell you how fast an algorithm will run, and how much space it will requireA good algorithm, even if badly coded, can run circles around a poor algorithm that is carefully tuned and highly optimizedAssignmentsExcept as otherwise noted, all assignments:Should be done in EclipseShould include complete JUnit tests for non-GUI, non-I/O classes, andShould include complete javadoc documentation for non-private entitiesMust be submitted via Blackboard; email will not be acceptedYou will do some programming with a partnerPartners are assigned by the instructorAs in CIT591, you will get a different partner for each assignmentUnfortunately, we do not have a laboratory sectionYou will do some assignments by yourselfYou may discuss the assignments with other studentsYou may help (and get help with) debuggingYou may not give your source code to anyoneLate assignments will lose 5 points per day, and may or may not be accepted if more than a week late12GradingWe will have:Approximately one assignment per weekOne midtermOne final examGrades will be curvedWe will use Blackboard to turn in assignmentsGrades will be weighted as follows:50% assignments20% midterm30% final examIf you feel a grading error has been made, you have one week after grades have been posted to bring it to our attention13Office hours and (no) labsI will be more available than last semesterI avoid making appointmentsI have an open door policy: If my door is open, I’m availablePosted office hours are just the times that I try hard to be in my office, not the only times you can talk to meThe TA will also have office hoursWe will not have extra help sessions or labs this semester14The
View Full Document