Syllabus for
Programming Data Structures
COSC 211
(Mon. & Wed. 9:00-12:50 in PH503, but class will be online 5/9 and 5/11)
Instructor: Matt
Evett ; Dept. Computer Science; Pray-Harold 511
Tel: 734-487-1227;
e-mail: mevett@emich.edu;
Course web site: http://canvas.emich.edu/
Office Hours: MW 1:00-3:30(subject to change)
You may drop by at times other than office hours, but in that case I cannot
guarantee that I'll be able to see you. Please feel free to e-mail me to set up an appointment.
Prerequisite: COSC 111.
Corequisite: COSC 212.
Textbooks: Savitch, Absolute Java (5th ed.),
Addison Wesley, 2013.
Course Summary: Students successfully completing the course will have
obtained an intermediate level of programming proficiency and will have knowledge
of a few simple data structures (linked lists, Java's containers and collections).
The course is project oriented, with Java programming assignments spread throughout
the semester.
Course Objectives:
- Design and implement reusable classes based on inheritance and abstract classes.
- Use polymorphism to design programs that can be easily modified and extended.
- Create robust programs using Java exception handling mechanisms (catch-try blocks and writing exception classes).
- Design and implement a solution to a problem that requires the use of recursion.
- Design and implement a program for reading and manipulating data from an external file: text, randome access, and read/write objects.
- Design and implement at least one program that requires multiple classes in relation to each other.
- Design and implement a program that provides and uses a container class that is implemented via a linked list.
- Use a debugger to run programs: single step, set breakpoints, see the stack trace, and to perform other useful functions.
- Use collection classes and interfaces from the Java standard library. Program a data structure that is type independent.
- Design and implement an effective event-driven GUI that makes use of widgets from a standard library.
Information Promulgation: Students are required to the course shell (canvas.emich.edu). The shell will serve as the official site for all
information pertaining to changes to programming assignments, deadlines, etc.
Feel free to use the caucus to post questions to me and to your fellow students.
Course Calendar:
Due dates for projects are underlined. Exam
dates are in bold. A warning: the programming
assignments come fast and furious at the start of the course. The due dates in the calendar below are tentative. All official due dates are specified in the course shell (canvas.emich.edu). You must keep
up!!! Falling behind will almost certainly mean the you will want to drop the
course sometime around the midterm. Start the assigments as soon as they are given!!!
Date |
Text |
Lab |
Projects due |
5/4 |
Ch.7 |
Inheritance |
|
5/9 |
Ch. 7 |
ONLINE More Inheritance |
#1, Inheritance #1 |
5/11 |
Ch. 8, Polymorphism |
ONLINE Test Project |
#2, Inheritance #2 |
5/16 |
Ch. 8 & Debugger |
Doodlebugs |
#3, Debugging Assignment |
5/18 |
Ch. 9, Exception Handling |
Debugging with Eclipse |
#4, Polymorphism |
5/23 |
Ch. 13 Interfaces |
Interfaces |
#5, Exception Handling |
5/25 |
Ch. 10 File I/O |
Inner Classes |
|
5/27 |
Ch. 11 Recursion |
File IO #1 |
#6, File IO #1, Midterm |
5/30 |
Memorial Day |
|
|
6/1 |
Ch. 11 & 14 |
Recursion |
|
6/6 |
Ch 14 Generic Programming |
Recursion |
#7, File IO |
6/8 |
Ch 14 & 15 Linked Data Structures |
Linked Lists |
|
6/13 |
Ch 15 |
Doubly-linked Lists |
#8, DoubleArraySeq |
6/15 |
Ch 16 Collections and Iterators |
Shuffling |
|
6/20 |
Simple Sorting |
Simple Sort |
#9 DoubleListSeq |
6/22, 9:00 |
|
|
Final Exam |
Grading Policy:
The final course grade will be a weighted average of the grades received in each
of the following categories, as specified: Programs & Labs 40%, Midterm exam
20%, Final exam 30%, Quizzes & Homeworks 10%. In determining your programs grade, I will drop the
lowest score you received among your labs. Effectively this means
you may skip one lab without loss. I highly recommend you do not skip
the earlier projects! They tend to be simpler than the later ones. This policy
is to enable students some flexibility in terms of their homework scheduling.
For example, you might want to skip a 211 assignment on the week that you are
completing a significant assignment for another class.
Tardiness Policy: Programming and other homework assignments
will be due at the beginning of class. After that, assignments will
be accepted through the start of the next scheduled class, but will suffer
a full grade penalty. E.g., if a late programming assignment is worthy
of an 'A', I will mark it a 'B'. Assignments more than one class late will
not be accepted, and will receive a grade of 'F'.
Attendance Policy: We're all grown-ups, when and whether you attend
class is up to you. However, missed assignments, and exams shall only be excused
by a doctor's written note, verifying that the student was medically indisposed
to attend class that day. Keep in mind, too, that study after study has demonstrated that regular class attendance dramatically improves student grades.
Grading of Programs: Grading of programming assignments will
reflect three factors, weighted as shown.
- (70%) Correctness -- does the program run correctly.
- (15%) Style -- does the code adhere to class documentation standards? Is
the code indented properly? Are the variable names mneumonic? How well has
the student followed the basic formatting characteristics for the language?
- (15%) Design -- is the program adequately decomposed (i.e., are the functions
and procedures small enough to be comprehensible)? Are the class and structure
definitions well chosen? How well has the student taken advantage of the language's
capabilities
Announcements and the Web Page:
Students should view the Canvas course page regularly for announcements regarding
programming assignments, readings, etc. I update course web pages frequently!
Cheating policy:
Students are required to attend to the policy on academic irregularity outlined
in the EMU student handbook (see the full policy at https://www.emich.edu/policies/policy.php?id=124).
In addition, collaboration among students in solving programming and homework
assignments is forbidden. If I receive programs or homework assignments that are
substantially equivalent, or which are not the original work of the student submitting
the material, I will not hesitate to punish all involved parties to the fullest
extent, up to and including assignment of a failing grade for the course, and
referral to the Office of Student Conduct and Community Standards for possible punitive action
at the University level, which may include expulsion from the University. In addition,
the University and the computer science department maintain policies regarding
proper behavior on its computer systems. Failure to adhere to these policies can
result in loss of computer privileges, and possible legal action.