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:

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.

  1. (70%) Correctness -- does the program run correctly.
  2. (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?
  3. (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.