Syllabus for 15-111: Intermediate / Advanced Programming
Summer 2007

      Instructor: Don Slater
email: dslater@andrew.cmu.edu
phone: x8-4370
office: 5115 Wean Hall
website: http://www.cs.cmu.edu/~djslater
course web site: http://www.andrew.cmu.edu/course/15-CSAP



Course Assistants: Astav Sacheti asacheti@amdrew.cmu.edu


Catalog Description

This course assumes prior programming experience in Java (at the level of 15-100) and is designed to expand students' knowledge of computer science and sharpen their programming skills. The course extends object-oriented programming techniques begun in 15-100 and covers Collections (or data aggregates), data structures (e.g., linked lists, stacks, queues, trees, and graphs), and an introduction to the analysis of algorithms that operate on those data structures. The course is currently taught in Java and, along with 21-127, serves as a prerequisite for 15-211. NOTE: students who receive a grade of C or less in 15-111 should discuss whether they are adequately prepared for 15-211 with their academic advisor.

Prerequisite: prior experience in Java at the level of 15-100. 

Course Material

  • Text Book:

    • Recommended: Objects, Abstraction, Data Structures and Design Using Java, by Koffman and Wolfgang, published by John Wiley & Son, Inc. (0-471-46756-1) 

  • Programming Environment: Eclipse - To be discussed in class

  • All other material is available through web and BlackBoard Course Info

Grading

Your grade in the course will be determined based upon the following activities. 

Coursework Grade

  • Coursework: (40%)

    • <>30% of the course grade will consist of  programming assignments and written homeworks
    • 10% of the course grade is based on recitation activities

  • Midterm (July 20): Written - 20% of the course grade

  • Written Final(August 7): Written - 20% of the course grade

  • Online Final (August 9): Online: 20% of the course grade

Late Policy

Homework and Lab assignments may be turned in within three days of the due date, but each day late results in a 10% deduction for each day. In other words, if a Lab or Homework is turned in within 24 hours of the submission date, and the lab is worth 10 points, the best you may earn on that assignment is a 9, 48 hours an 8, 72 hours a 7. If you do not turn in the assignment within three days, you will not be able to make it up. Exams may be rescheduled, as long as arrangements have been made with instructor 24 hours before the exam is given, or with appropriate medical documentation.

Grading Scale
 
 
Final Grade
Pct. Points Earned
A
90 -100
B
80-89
C
70-79
D
60 - 69
R
less than 60%

Exams
There will be 2 written exams, and a programming exam. The Midterm and Written Final exam will a written paper and pencil format. Each of these exams will be 75 - 90 minutes in length.

The Final is on online programming exercise. This exam will also be 75 - 90 minutes in length.

Each of these exams will be discussed in detail at the appropriate time.


Coursework

There are 5 weekly scheduled labs in this course, although this may be subject to change. There will also be written exercises, and/or smaller programming assignments. The programming assignments may be complete programs or tasks such as finding syntax errors, debugging code, and modifying existing code to make algorithms more efficient, code to understand concepts etc. It must be remembered that these are unsupervised activities, and that the grade given for these is not a measurement of what is learned but how well the specifications of the assignment have been met. There is no extra credit.

Quizzes
There may be unannounced quizzes during recitation, with a focus on the previous days work. These are part of the coursework grade.

Keeping Current

Your success in this course will mainly depend on your ability to keep current with material and projects. All programming courses are very time consuming. In addition to attending classes, you must be prepared to spend at least another 5 to 7 hours/week on reading and programming assignments. One of the common mistakes students make in this class is waiting till the last minute to start a programming assignment. Although many other course projects can be handled that way, programming projects are different. 

You are almost certain to run into 3 types of problems, technical, algorithmic and debugging. Technical problems frequently occur with computers you use. Computers often break. Therefore waiting till last minute may be hazardous to your health. 

Secondly most program algorithms are not trivial. They need back and forth discussions with your instructor, course assistants and your colleagues. Even if there are no technical or algorithmic problems, there is no guaranty that your program will work. Students frequently run into syntax and semantic problems in a program. 

Programs don’t always necessarily give the correct output. Making a program almost "perfect" requires much testing. Therefore START AND FINISH YOUR PROGRAMS EARLY. 

Working Hard

In the past, students have approached me about adjusting their final grade because "...this is the hardest they have ever worked in a class." I am sympathetic to the comment, but effort is not a factor I using in determining final grades. 

There is a difference between activity and achievement. As the course goes along, and you find that you are spending what you consider an extraordinary amount of time completing assignments, please get together with me or one of the TA's to discuss how you are working. Programming is a skill and with practice you should be developing some efficiency. We can provide insight and ideas if you think this is not happening.

Student Responsibilities

Certain constraints on behavior must be followed in any community of Individuals who share space and limited resources (with our apologies to the vast majority of responsible students). Please be aware of the following standards of behavior. 

Violations will not be tolerated. Appropriate disciplinary actions include loss of computing privileges, course failure, and ineligibility for subsequent courses offered by the Computer Science Department,dismissal from the University and/or criminal prosecution. At minimum, any student who violates these rules can expect to find his/her access to facilities revoked. Prohibited behavior includes but is not limited to

  • Theft, tampering, or other abuse of the system/network software;
  • Theft or tampering of other users' files or disks;
  • Disabling or damaging computers, drives, or other facilities/equipment;
  • Any action that compromises system/network performance, subjects other students to harassment, or otherwise adversely affects other students' work;
  • Smoking, drinking, and eating in Wean 5419/5336.

Cheating Policy

Be sure to review the Cheating Policy for this course, found on Blackboard. You are encouraged to complete your assignments individually, although you will be allowed to work with a partner on your labs. You both must still submit a project in this case. However you may discuss assignments with your colleagues if necessary. But you are asked to document the help that you have received on any assignment / project. In class quizzes, midterms and the final exam prohibits any open notes or other helpful material. 

Programming projects may be examined with a comparability checker that looks for similarities among different programs. Except for the case of working with a partner, make sure that the work you submit is your own work. 

WeH 5419 Clusters

Please refrain from behavior that is unduly loud and boisterous when using the facilities in Wean 5419. This room isn't a library and we want you to feel comfortable when you're there, but please respect the rights of your fellow students who are trying to concentrate. 

The tutors are in Wean 5419 are there to help you. Please don't make undue demands on them. There is a difference between asking questions versus expecting a tutor write your program for you. Since you are required to work with computers in this course, you must remember that computers frequently break. Also remember that the cluster is shared with the students from other courses and sections, so it is clearly to your advantage to complete labs and program assignments in advance of the due date. We will do everything reasonable to ensure a high level of support, but remember that occasions arise when the computers are simply not available, so we solicit your patience. If you notice a machine that is inoperable, please inform the staff.