EECS/CS280-007 Programming and Introductory Data Structures
Syllabus, Winter 2000

Course Web Site: http://www.eecs.umich.edu/courses/eecs2807

Note: This course is intended for students whose major is NOT Computer Science, or Computer Engineering. Students who are CS or CE majors should attend lecture section 001 and an appropriate discussion section. Course material, assignments, and tests will differ, so it is important that you attend the correct sections.

Course Staff - Lectures
Andrew M. Morgan, Lecturer.
Email: morgana@eecs.umich.edu
Section 7: MWF 8:30am - 9:30am, 1504 GGBrown
Office: 1215 EECS.
Office Phone: (734)763-4587
Office Hours: Monday and Wednesday 9:30-11:00

Course Staff - Graduate Student Instructors
Vikram Asrani.
Sections: TBA
Email: vikram@engin.umich.edu
Office Hours: TBA

GSI To Be Announced
Sections: TBA
Email: vikram@engin.umich.edu
Office Hours: TBA

Course Email
You will need to subscribe to the course email list immediately! Very important course information will be provided to you via email. This may include office hour cancellations, project specification clarifications, exam locations, etc. Please check the course web page for detailed instructions on how to join the list. Do this within the first few days of the semester to be sure you get all the information you need.

Course Textbooks
Required: "C++: How to Program", by Deitel and Deitel, published by Prentice Hall.
Additional Reference: "On to C++" by Winston, published by Prentice Hall.
Additional Reference: "Inside the C++ Object Model", by Stanley B. Lippman, published by Addison Wesley.
Additional Reference: Practical C++ Programming, by Steve Oualline (the chipmunk book), published by O'Reilly and Associates.

Course Goals
1. Learn methods for problem decomposition and program design. This consists of analyzing problem requirements, breaking the problem down, and designing an algorithm for each part of the problem.
2. Learn the C++ language, including many of the object-oriented features.
3. Learn the basics of writing good code (software engineering), especially code that can easily be read and modified by others, and using the debugger.
4. Learn how to construct medium-sized programs for various applications, including those that require some basic knowledge of linked lists, searching, and sorting techniques.
5. Learn the concepts and usage of many different data structures, and learn the benefits each has to offer.

Attendance
It is strongly recommended that you attend every lecture and your discussion section. Lectures may contain information that is not found in the textbooks, and this material is considered testable, whether or not you were in class when it was presented. In addition, there may also be some material from the assigned readings that do not get significant coverage in lecture, but is still considered testable. This information can be obtained by reading the assigned text, and may also be addressed in your discussion section.

Course Grading
Your final grade will be determined using the following criteria:

Preliminary Background Exam:5%(Friday, January 7, in class)
Midterm Exam:20%(Wednesday, March 8, 7:00pm-8:30pm)
Final Exam:25%(Tuesday, April 18, 1:30pm-3:30pm)
Programming Project 1:5%(Due Wednesday, January 26)
Programming Project 2:10%(Due Wednesday, February 9)
Programming Project 3:10%(Due Wednesday, February 23)
Programming Project 4:10%(Due Wednesday, March 22)
Programming Project 5:15%(Due Friday, April 7)
Total: 100%

The goal is to have the final grade assigned as follows:
90% or better:A (A+, A, A-)
80% to 89.9%:B (B+, B, B-)
70% to 79.9%:C (C+, C, C-)
60% to 69.9%:D (D+, D, D-)
Less than 60%:F

If this appears unreasonable at the end of the course, it will be adjusted accordingly, but adjustments will only be beneficial to you. Under no circumstance will your final grade be lowered by any "curve".

Programming Projects - Collaboration
All programming projects are to be done individually. While it is acceptable, and often helpful, to discuss program requirements and basic strategies, or even request help with a specific syntax error in your program, all work must be completed individually. As this is an engineering course, all engineering students are bound by the Honor Code. All non-engineering students who take EECS/CS courses are also bound by the Honor Code. If we detect or suspect any form of unacceptable behavior (cheating, fraud, forgery, etc), we will submit a report to the proper disciplinary body of the LSA or Engineering College, which will make an independent decision and take action that is determined appropriate.

Please note: We use a very sophisticated method to analyze programs for unacceptable collaboration. Every semester, we find several cases which are sent to the honor council and harsh penalties are usually given. Even if you think your method of cheating is clever, I will almost guarantee you will be caught. Based on the penalties students usually face, I urge you to do your own work. This also means keeping your assignments in a safe place where others can not get ahold of it with or without your knowledge.

Programming Projects - Submission and Late-Days
All programs will be submitted electronically, via e-mail. Therefore, the time the programs are due is at 11:59pm on the due date. Programs that are submitted anytime after 11:59pm on the due date will be considered late. A day is considered one calendar day. Weekends, holidays, etc, all count as normal days. A program that is due on Friday, that is turned in on Monday at noon is 3 days late (and unacceptable, as you will read below). See below for details on late submission. Electronic submission is the only form of program submission that will be accepted. No program should be handed in via campus mail, department mailboxes, or by sliding it under the door of a staff member's office. Note that equipment failure (network failures, etc) may strike at any time, and these failures are not acceptable reasons for turning a program in late. Waiting until 11:59pm to submit your program may not always be the best strategy.

In order to avoid hundreds of requests for turning a program in late, each student will get a total of three "no-questions-asked" late days. That is, over the course of the semester, you can use these late days to turn in a program late without penalty. Please note, however - absolutely no program will be accepted more than two days after the due date. In other words, you cannot use all three of your late days on one project. Also, you cannot use two late days, and then start taking penalized late days (see below).

If a program is submitted late, and you have run out of late days, penalties will start to accrue. One day late will result in a deduction of 15%. Two days late will result in a deduction of 30%. These penalties are a percentage of the maximum number of points possible, not your score on the project. For example, lets say a program has a maximum of 100 points, and you score a 40. If a 30% late deduction is taken, your final score will be 10. (Note: it is NOT 28.) Anything over two days late will not be accepted under any circumstance.

Please note - late days are given so you can use them as needed. If you use all your late days on projects 1 and 2, and then you have a conflicting job interview (or any other reason) on the due date of a later project, extensions will not be given. In other words, use the late days wisely, and remember that projects get more challenging as the semester goes on.

Project Grading
Projects are graded for correctness, style, documentation, and efficiency. Whether your program works or not is an important factor in grading, but correctness is only one factor. If you submit a program that produces the correct results under all circumstances, but your style is inconsistent, or your code is not well documented or reasonably efficient, you should not expect to earn full credit on the project. You can choose a good programming style by looking at examples in lecture, discussion, or in the textbooks.

There are very specific submission instructions that must be followed in order for your program to be accepted. These instructions will be on the course webpage.

Exams
Exam dates will be announced early in the course, and you are expected to be able to attend the exams at the announced day and time. As we will provide you with these dates early, you should be able to schedule other events accordingly. Unexcused absences from an exam will result in a grade of 0 on the exam. Documented medical problems or personal emergencies will be the only considerations given for missing or rescheduling an exam. Please note: This includes the final exam. You are expected to attend the final exam at the time it is scheduled. Do not schedule a trip home (i.e. buy airline tickets, etc) before the scheduled exam time, because it is often costly to try to change your travel plans at the last minute.

Office Hours
Office hours will be held at designated times by all staff members. You may attend the office hours of any staff member, and need not feel like you have to attend the office hours that your Graduate Student Instructor holds if another set of office hours is more convenient for you.