CS206 Introduction to Computer Science II
Spring 2020
Skidmore College
Syllabus

Instructor:
  Dr. Michael Eckmann
  Associate Professor
  Computer Science Dept.
  205-C Harder Hall
  email: meckmann@skidmore.edu
Instructor webpage: http://meckmann.domains.skidmore.edu/
Office hours:
Mondays 2:00 p.m. - 3:30 p.m.
Tuesdays 2:30 p.m. - 3:30 p.m.
Fridays 2:30 p.m. - 3:30 p.m.


Course webpage: http://meckmann.domains.skidmore.edu/2020Spring/cs206/

=====================================================

Class Meetings

LECTURE  
M W F  
11:15 A.M. - 12:10 P.M.  
HARDER 101
LAB  
W  
4:00 P.M. - 07:00 P.M.  
HARDER 207

=====================================================

Course Text and readings

Recommended Text: Data Structures & Problem Solving Using Java
by Mark Allen Weiss
Publisher: Addison Wesley: 4th 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 first cover a short review of Java programming, 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 mandatory. I will take physical attendance as well as
"attentiveness" attendance.

Any exams given cannot be made up. Those students who are absent when an
exam is given are given a zero for that exam. This policy is strict.

=====================================================

Assignments

The course will have approximately 3-4, 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://meckmann.domains.skidmore.edu/2020Spring/cs206/

Please type all assignments.

Late assignments will be accepted, but with penalty.

=====================================================

Exams

The course will have two exams during the semester in addition to a final exam.

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:
15% Exam 1 (closed book)
15% Exam 2 (closed book)
35% Final Exam (part closed book, part open book)
30% Programming Projects and other homework
05% 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


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.

=====================================================

Students with Disabilities
Please bring me your semester memo of accommodations as soon as you
obtain it. If you think that you need accommodations but do not yet have
them, set up a meeting with the Coordinator for Students with
Disabilities in the Office of Student Academic Services in Starbuck
Center.

=====================================================

Title IX Statement
Skidmore College considers sexual and gender-based misconduct to be one
of the most serious violations of the values and standards of the
College. Unwelcome sexual contact of any form is a violation of students'
personal integrity and their right to a safe environment and therefore
violates Skidmore’s values. Sexual and gender-based misconduct is also
prohibited by federal regulations. Skidmore College faculty are committed
to supporting our students and upholding gender equity laws as outlined
by Title IX. If a student chooses to confide in a member of Skidmore's
faculty or staff regarding an issue of sexual or gender-based misconduct,
that faculty or staff member is required to tell Skidmore’s Title IX
Deputy Coordinator. The Title IX Deputy Coordinator will assist the
student in connecting with all possible resources for support and
reporting both on and off campus. Identities and details will be shared
only with those who need to know to support the student and to address
the situation through the college's processes. If the student wishes to
confide in a confidential resource, The Counseling Center Staff, Health
Services, and Victim Advocates are all options available.
More information can be found at https://www.skidmore.edu/sgbm/ or by
contacting the Title IX Deputy Coordinator.

=====================================================

Topics

in approximate order with possible programming assignments signified by ***

Testing and Debugging (Chapter/Section 1.3)
Javadoc (section 3.3)
Java review including
References to objects (Chapter 2)
File I/O
ArrayList (section 2.4.3)
Exception Handling (section 2.5)
StringTokenizer

***Write a program using an ArrayList, File I/O, etc.

Quick intro to Algorithm Analysis (section 5.1)
Big O (sections 5.1-5.4)

Linked Lists (sections 6.5.2-6.5.4, Chapter 17)
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

Trees (Chapter 18)
General trees
Binary trees
Traversals

Binary Search trees (Chapter 19)
various operations on them

***Programming assignment using binary search trees

Recursion
Dynamic Programming

Divide and Conquer
Merge Sort

Stacks
Queues

Priority Queues
Deques
***Programming assignment using stacks, queues, priority queues
Heaps

Graphs
Breadth First Search

Depth First Search
Dijkstra's Algorithm

Hash functions and tables
***Programming assignment using hash tables

Balanced binary search trees
AVL
B-trees

Quicksort
Selection problem
Huffman coding

FINAL EXAM