15-111: Syllabus
Sections A & B


Schedule
of classes:

   Days   Lec/Sec  Time Room
 Lectures    MWF    Lec 1     10:30am - 11:20am     1112 Doherty Hall  
  Recitations     Thursday    Sec A     09:30am - 10:20am     5419-B Wean Hall 
 Sec B     10:30am - 11:20am     5419-B Wean Hall 

Staff:
 Name David Kosbie  Alex Galperin    Dhiren Bhatia  
Position Lecturer CA / Sec A CA / Sec B
 Email  koz AT andrew.cmu.edu  agalperin AT cmu.edu   dhirenb AT andrew.cmu.edu 
 AIM  koz15111  alex15111ca   dhiren15111ca 
 Office Hours  MWF 11:30am - 12:30pm
4301-D Doherty Hall
Th: 10:30 - 11:30 AM
Wean PC Cluster
Th: 11:30 AM - 12:30 PM
Wean PC Cluster
Required
Textbooks:
Java by Dissection, 2nd Edition
by Ira Pohl and Charlie McDowell
Download the pdf for $5 (you may also buy the printed book for about $25) at:
     http://www.lulu.com/content/267149
You can find all the example code online at:
     http://www.soe.ucsc.edu/~charlie/java/jbd/
Introduction to Programming Using Java, 5th Edition
by David Eck
This is a free online textbook, originally called "javanotes".  Access it here:
http://math.hws.edu/javanotes/
Optional
Textbooks:
General Programming and/or Data Structures texts:
  • Carrano and Savitch, "Data Structures and Abstractions With Java", 2nd Edition, Prentice Hall, 2006, ISBN: 013237045X
         Less focus on core language, more advanced coverage of data structures.  700 pages.
  • Horstmann, "Big Java", 2nd Edition, John Wiley & Sons, 2006, ISBN: 0471697036.
         Strong coverage of core language, decent coverage of data structures.  1216 pages.
  • Lewis and Loftus, "Java Software Solutions", 4th Edition, Addison-Wesley, 2005, ISBN: 0321322037.
         Very clear coverage of Java programming and some (but not all) data structures.  910 pages.

Topic-specific Guides:

  • Bloch, "Effective Java", Addison-Wesley, 2001, ISBN: 0201310058.
         A treasure trove of great advice to improve your Java programming.  252 pages.
  • McLaughlin and Flanagan, "Java 1.5 Tiger: A Developer's Notebook", O'Reilly, 2004, ISBN: 0596007388.
         For those who know Java 1.4, a fine, concise guide to 1.5's new features.  177 pages.
  • Vermeulen, et al, "The Elements of Java Style", Cambridge Univ. Press, 2000, ISBN: 0521777682.
        A great little guide to Java style.  128 pages.
Required
Software:
We will use Java 1.5_10.  Given the sometimes subtle inconsistencies between Java versions, it is advised that you remove any other versions of the JDK that you may have on your machine (though this is not a requirement).

We will also use Eclipse as our IDE.  This is a loose requirement, in that you may elect to use another IDE, or even just the command-line.  On the course resources page, we also offer links to other IDE's which may have certain advantages over Eclipse in some circumstances.
Course
Requirements:
Participation in this course consists of the following activities
  • Attending and participating in lectures and recitations.
  • Reading the printed and online notes and other assigned readings.
  • Carrying out homework assignments.
  • Taking the quizzes, midterms, and final.
  • Attendance is strongly encouraged. You will be responsible for all materials presented in lectures and recitations. You should not expect that all lecture or recitation materials will be given to you in written form, nor should you expect that lectures or recitations will be drawn from the textbook.

    Assessment:  Any material covered in lecture, in recitation, in assigned readings, or in homework assignments may be included in any future homework assignment, quiz, or test.

    Grading:
     Course Component    Weight 
    Final Exam   20%  
    Midterms   20%  
      Quizzes    10%  
    Homework   50%  

    Each homework, quiz, midterm, and final will be graded on a standard scale:
       A: 90 - 100
       B: 80 - 89
       C: 70 - 79
       D: 60 - 69
       R:  0 - 59

    Semester grades will be determined first by computing the individual averages for homeworks, quizzes, and midterms, then combining these with the final exam according to the weighting table above.  At that point, half-point rounding will be used, so 89.5 will round up to an A, but 89.499 will remain a B.  Finally, we will look closely at every marginal case (within one point of the next higher grade), taking participation and extra credit into account so that grades may be adjusted nominally upwards in some exceptional cases.  To help set expectations for marginal cases, it would be expected that about 10 hours of extra credit would roughly warrant consideration for a half-point increase.

    Exams: Final Exam:
    There will be a common departmental written exam.  The exam will be administered on Thursday, May 10, 8:30am-11:30am.

    Midterm Tests:
    There will be 2 or 3 midterm tests that typically consist of a programming part and a written part.  The programming part will be given in recitation.  The written part will be given either in lecture or recitation.  No late / make-up quizzes or tests will be administered, except in the case of medical or family emergencies.

    Quiz
    Retakes:
    If you score below 60 (the minimum D- score) on a quiz, you will have an opportunity to retake the quiz within 2 weeks of the original quiz date and improve your score to the smaller of 60 or 5 times your original score (thus, you cannot use this policy to retake quizzes on which you score a zero).  To earn this opportunity, you must first invest 1 hour of 1-on-1 review of the quiz material with either a CA or the instructor, and then you must invest at least another 2 hours of studying that material (on honor code, of course) before taking the retake. The retake itself will probably be an oral exam, though it may be a traditional written quiz, and it will be based on the topics of the original quiz. You may even take a retake of the retake (after 3 more hours of prep, as above), if within the original 2-week window.

    Note #1: This is only for quizzes. There are no retakes of tests under any circumstances.

    Note #2: This policy is intended to help hard-working students who did not sufficiently learn the material on their first attempt by incenting them to go back and better master the material. Please do not abuse this privilege by not studying appropriately for each quiz in the first place!

    Note #3: It is entirely your responsibility to find time with your CA or instructor for the hour of 1-on-1 review. Conflicting schedules will not be cause for extensions beyond the 2-week window.

    Written
    Work:
    Some homework assignments, and most quizzes and tests, will include some written work (meaning:  work that is not performed with access to Java or an IDE or a calculator (unless otherwise noted), whether or not it involves programming).  In order to receive credit for these problems, you must show your work.  Correct answers without supporting documentation will not be given any credit.  Some questions may not require work to be shown (eg:  "Name three software companies in Silicon Valley"), but most questions assuredly do.  When in doubt, show your work.
    Programming
    Assignments:

    The programming assignments are a critical part of the course. Experience has shown that the concepts covered in this course are best learned by direct engagement -- in our case by applying them to example problems or by implementing them in computer programs.

    Programming assignments will be graded based on style (modularity, effective use of data abstraction, readability, commenting, etc.) and functionality (correctness and efficiency of the program on the test inputs).  A working program is not sufficient for full credit. Make sure you do a thorough data validation. Your code should be properly annotated with comments that are well-placed, concise, and informative. Your assignments will be graded by your CA.

    Late
    Homework:
    Homework is due at a specified date and time, and is marked late in one-day increments (so, for example, if it is due at the start of class (10:30am), do not come late to class just to finish your assignment, since at 10:31am it is one day late anyhow).  Written solutions are submitted in class, and programming solutions are submitted according to the online submission process.

    We will usually post solutions to homework assignments at 5pm the day after the assignment is due.  For this reason, homework will be accepted up until that 5pm deadline (even if solutions are not posted at that time) with a 10-point late penalty.  No homework will be accepted after 5pm the day after it was due.

    For late written work, if you cannot find any course staff and the next-day-5pm deadline is looming, you can submit your homework to Angie Brookins or Heather Browne, whose offices are in the Wean Hall 5100 corridor.  If you do this, be certain that you place "To:  David Kosbie" very clearly at the top of your assignment so it will be properly routed.  Also, be sure to contact your CA by email or AIM at that time to let them know your late work was submitted.

    Note that each student shall automatically receive one (and only one) Late Bye for the semester -- that is, each student can turn in one assignment late (up until the next-day 5pm deadline, that is) without any 10-point penalty.  Even with a Late Bye, assignments will not be accepted after the next-day 5pm deadline.

    Cheating
    and
    Collaboration:

    Unless otherwise noted, for homework assignments, students are encouraged to talk to each other, to the course staff, or to anyone else about the assignments. This assistance, though, is limited to the discussion of the problem and perhaps sketching of general approaches to a solution. Each student must develop his or her own solutions to the homework. Consulting another student's solution is prohibited, and submitted solutions may not be copied from any source.

    Specifically:  do not look at other students' code or written answers, and do not show them your code or written answers, until after an assignment has been submitted and graded.  Also, if you find a reference (say, in an optional textbook or some online source) that contains code or a written solution that is identical or overtly similar to an assigned problem, then you are required to not look at that code or written solution!  You may still refer to supporting figures and explanatory text, but you may not look at or copy the code.

    The issue of cheating will be taken seriously by the instructor and CA's, and homework assignments will be routinely checked for violations, which will be handled in accordance with the University regulations.

    Pair
    Programming
    Lite
    TM
    Some assignments may be denoted as "Pair Programming Lite".  These are meant to give you the myriad educational benefits of working in small (two-person) groups, but to give you flexibility in how you approach the assignment.  Here are the rules for these assignments:

    1.  Everyone can have one partner, who must also be in this class (though you can work across sections of this class).  The intention is that you and your partner will share the load roughly equally.  So:  by submitting an assignment with a partner, you are implicitly stating that you did in fact work roughly equal amounts.  If this is not the case, you must explicitly and clearly state so, both in your program and in a separate email (sent prior to the submission deadline) to your CA and instructor, clearly indicating what percentage of effort you contributed.  Note that you must do this whether your contribution was more or less than half, so in each such case we should receive two emails (one from each partner).  Further note that your grade will be adjusted accordingly in this case.  If you do not work in roughly equal amounts and you do not inform your CA and instructor of this situation, then you are in violation of academic honesty provisions.

    2.  While we recommend working with a partner (since it has no downsides the way this policy is designed, and lots of upsides), you do not need to have a partner.  You can basically ignore this policy and treat the assignment as a normal programming assignment.

    3.  If you have a partner, send email to your CA indicating this (as early as possible), and also be sure to include your partner's name in a comment at the head of your code.

    4.  Everyone is solely responsible for their own code.  You do not submit anything with your partner.  You submit your own program just as usual, and your program gets graded independently of your partner's code.

    5.  However:  subject to the equal-effort clause, everyone can work without restrictions with their partner.  You can show them your code, look at their code, copy-and-paste code between your programs (even turn in exact duplicates of each other), whatever you want, no restrictions.  This is just for the specific assignment and just with your partner -- otherwise, all standard collaboration rules apply.