CS206 Fall 2009
Skidmore College
Syllabus
Instructor:
Dr. Michael Eckmann
Assistant Professor
Mathematics and Computer Science Dept.
290 Dana Science Center
Office phone: 518 580 5294
email: meckmann@skidmore.edu
Instructor webpage: http://www.skidmore.edu/~meckmann/
Course webpage: http://www.skidmore.edu/~meckmann/2009Fall/cs206/
=========================================================================
Class meetings
Lecture MWF 1:25 p.m. - 2:20 p.m. Harder 201
Lab Th 12:40 p.m. - 3:30 p.m. Harder 207
=========================================================================
Course Text and readings
Required Text: Data Structures & Other Objects Using Java
by Michael Main
Publisher: Addison Wesley: 3rd edition
Other readings as handouts/links.
=========================================================================
Course Overview
This course is a continuation of Introduction to Computer Science I, with an emphasis on common data structures and algorithms that work on them. The course will cover a review of Java programming in the first week and a half, including File I/O, Exception Handling, etc. We learn a bit about how to analyze algorithms for efficiency. We then cover data structures such as linked lists, stacks, queues, priority queues, heaps, graphs, trees (binary and other), search trees, and hash tables. We also cover algorithms that work on those data structures such as breadth first search, depth first search, Dijkstra's algorithm, various sorting algorithms and tree balancing algorithms. These algorithms and data structures are commonly used by computer scientists, so it is necessary for students to grasp these concepts.
=========================================================================
Course Goals and Objectives
1. To understand, be able to use and be able to write computer programs utilizing the various data structures that we'll cover.
2. To understand, be able to use and be able to write computer programs utilizing the various algorithms that we'll cover.
3. To be able to, to some degree, analyze algorithms that solve the same problem. Then be able to determine which is more efficient and why.
4. To become more proficient computer programmers. Learn and practice good techniques for testing and debugging.
=========================================================================
Attendance
Attendance is required in this course. Missing a few (up to 3) classes will not negatively affect your grade, but more than 3 might as stated in the grading policy. Further, I will honor the minimum expectation outlined in the Faculty Handbook and echoed in the Student Academic Handbook which states "Any student who misses more than a third of the [class] sessions may expect to be barred from final examination. In such cases, the course grade will be recorded as F."
=========================================================================
Assignments
The course will have approximately 4-5, programming assignments. The submission procedure will be given when it comes time for you to submit programs.
One policy that you must follow is: Give proper attribution to any code you get out of a book or off the web or any code that you yourself did not write. That is, if you use code (even a small amount) taken from another source (the text book or lecture notes or elsewhere), you *must* cite the source in a comment in your program. If you do not, it may be considered plagiarism. The program source code will be read. Source code documentation and organization should make your program easy to read, and convey your understanding of the techniques your program demonstrates. Poor documentation and programming style will result in a lower score. (Note: This policy is borrowed from G. Drew Kessler's (Lehigh University) program policy. See, I gave proper acknowledgment. ;-)
In addition to programming assignments, there will be conceptual homework assignments.
Assignments and class handouts will be available on the World Wide Web
at URL http://www.skidmore.edu/~meckmann/2009Fall/cs206/
Please type all assignments.
Late assignments will be accepted, without any negative effect on your grade on the late assignment. However if assignments are habitually submitted late or one is more than a couple of days late, then this can negatively effect your overall course grade as stated in the following grading policy.
=========================================================================
Exams
Midterm exam date is to be determined and announced in class with at least 1 and a half week's notice. The exam will be during a regularly scheduled lecture in our classroom or during lab in our lab room. The final exam date, time and place is determined by the registrar and we all will adhere to it. You are required to take the exams at the scheduled place and time. Any exams given cannot be made up. Those students who are absent when an exam is given are given a zero for that exam. However, if there is a compelling reason for you to need to miss an exam, you MUST contact the instructor in advance. This policy is strict.
=========================================================================
Grading Policy
A grade is first calculated by the following scheme:
25% Midterm (closed book)
35% Final (part closed book, part open book)
30% Programming Projects and other homework
10% Labs
However, your final grade will be influenced either positively or negatively by how I, the instructor, evaluate you on the following:
a) class participation
b) good attendance (not just physical)
c) increase of performance throughout the semester,
d) quality/effort of your program/homework submissions (aside from just correctness)
e) lateness of your program/homework submissions
Each lab period (with the exception of the first lab) will have a graded lab exercise. The labs will be graded in the following way:
check + = excellent (A+)
check = satisfactory (A, A-, B+)
check - = lower than B+
Each student's lowest lab exercise grade will be dropped.
Class participation includes answering questions in class, asking questions in class, visiting me during office hours, or by appointment and asking questions through email. Class participation is based on my assessment of the student's voluntary contribution, plus their responses to questions I ask them.
If assignments are habitually submitted late or one is more than a couple of days late, then this can negatively effect your overall course grade.
Each program/homework/exam may be graded on a curve (with assignments not turned in not affecting the curve). Programs and homework assignments will have point values that reflect their relative weights.
In general each curve will have a mean between B- (2.7) and B (3.0), depending on my assessment of the overall performance.
=========================================================================
Academic Integrity
I list here the policies by which the students of this class are expected to abide.
1. Improper Collaboration Policy.
2. Skidmore Honor Code and Academic Integrity.
3. The Ethics of Scholarship.
Failure to abide by these policies results in a negative learning environment and you should expect to be held accountable.
=========================================================================
Topics
in approximate order with possible programming assignments signified by ***
Week 1
Testing and Debugging (Chapter/Section 1.3)
Javadoc (Appendix H)
Java review including
References to objects
File I/O (Appendix B)
ArrayList (Appendix D)
Exception Handling (Appendix C)
StringTokenizer
***Write a program using an ArrayList, File I/O, etc.
Week 2
Quick intro to Algorithm Analysis (Chapter 1)
Big O
Linked Lists (Chapter 4)
singly, doubly, circular
Operations: add a node, insert a node, delete a node, etc.
***Rewrite Programming Assignment using a linked list instead of an ArrayList
Week 3
Trees (Chapter 9)
General trees
Binary trees (9.3)
Traversals (9.4)
Week 4
Binary Search trees (9.5)
various operations on them
***Programming assignment using binary search trees
Week 5
Recursion (Chapter 8)
Dynamic Programming
Week 6
Divide and Conquer
Merge Sort
Week 7
Stacks (Chapter 6)
Queues (Chapter 7)
Midterm Exam
Week 8
Priority Queues (7.4)
Deques
***Programming assignment using stacks, queues, priority queues
Heaps (beginning) (10.1)
Week 9
Heaps (continued)
Graphs (Chapter 14)
Breadth First Search
Week 10
Depth First Search
Dijkstra's Algorithm
Week 11
Hash functions and tables (Chapter 11)
***Programming assignment using hash tables
Balanced binary search trees (beginning)
Week 12
Balanced binary search trees
AVL
B-trees (10.2)
Week 13
Quicksort
Selection problem
Week 14 (partial)
Huffman coding