15-100:  Introductory/Intermediate Programming
APEA
Syllabus -- Summer 2009



Staff:
Name Andrew id
David Kosbie koz
Kelly Rivers krivers
Yiling Tay ytay
Schedule
of classes:
   Days  Staff Time Room
 Lecture

M-F

Kosbie

9:00am - 10:20am

5419B Wean Hall
 Lab M-F CA's 4:30pm - 5:50pm 5419B Wean Hall
Office Hours:
Day Time Staff Room
M-F 8:00am - 8:55am Kosbie 4126 Wean Hall
M-F 1:00pm - 2:00pm Kosbie 4126 Wean Hall
M-F 7:00pm - 9:00pm CA's Morewood Cluster
Required
Textbooks:
Java Software Solutions, Lewis and Loftus, 6th Edition, Addison-Wesley, 2008, ISBN: 0321532058.
Optional
Textbooks:
Here also are some free / low-cost alternatives:
 
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/

General Programming and/or Data Structures texts:

  • Horstmann, "Big Java", 3rd Edition, John Wiley & Sons, 2007, ISBN: 0470105542.
         Strong coverage of core language, decent coverage of data structures.  1248 pages.
     
  • 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.

Topic-specific Guides:

  • Bloch, "Effective Java", 2nd Edition, Addison-Wesley, 2008, ISBN: 0321356683.
         A treasure trove of great advice to improve your Java programming.  384 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 officially use Java 1.5 (because this is the most-recent version of most Macs).  You could use Java 1.6 without problems.  We will not explore any differences between Java 1.5 and Java 1.6.

For now, we will use 2 IDE's: DrJava and, for those using PC's (rather than Macs), JCreator (we like version 2.5 -- it's older, but it's simple and gets the job done).  This is a loose requirement, in that you may elect to use another IDE, or even just the command-line.
Course
Requirements:
Participation is required and consists of the following activities:
  • Attending and participating in lectures and recitations.
  • Reading the printed and online notes and other assigned readings.
  • Meeting with the course staff as needed or as directed.
  • Carrying out homework assignments.
  • Taking the quizzes, midterms, and final.
  • In particular, attendance is required.  We will not strongly enforce attendance, but it will be factored into grade decisions in marginal cases.  In any case, 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 (optional) textbook.  Note that missed quizzes and tests may not be made up in general (though certain exceptions are permitted -- see the relevant sections below).

    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 one-point increase.

    Bonus and Extra Credit: There are two flavors of bonus and extra credit.

    1)  On an assigned homework, quiz, or test:  these points are added directly to your score on that homework, quiz, or test.

    2)  As a standalone bonus project or bonus lecture:  these bonus points will be awarded at roughly 1 point per hour of time (and so they are also referred to as "bonus hours").  For example, attending a 2-hour bonus lecture will be rewarded with 2 bonus points.  The correlation to hours, though, is inexact, and some activities may receive more or less bonus points than the total number of hours students invest in those activities.

    As noted above, at the end of the semester, bonus points (of the second kind) are added to the semester grade, where each bonus point is worth one-tenth of a percent, and so 10 bonus points increases a grade by one percentage point.  There is a limit of 3 percentage points increase (representing 30 bonus hours) in any case.

    Exams: Final Exam:
    There will be a common departmental written exam for all 15-100 sections.

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

    Quizzes:

    Quizzes will be given approximately once per week in lecture or recitation.   No late / make-up quizzes or tests will be administered, except in the case of medical or family emergencies.

    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 full credit (and in some cases will not receive any credit at all).  Some questions may not require work to be shown (e.g.:  "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.  No late assignments will be accepted, except in the case of medical or family emergencies.  If for some reason you cannot attend lecture on a day when written work is due, you can submit your homework to Angie Brookins or Heather Carney, 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 at that time to let them know your late work was submitted.  This is only for unusual circumstances, and in general you are expected to submit written work in class.
    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 problems in general.  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 in whole or in part 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.

    In particular, for example, this prohibits students from helping other students debug their code, as that requires looking at their code, which is banned.  Instead, students should seek help from the course staff, who provide extensive support to all students via email, office hours, review sessions, and 1-on-1 tutoring by appointment.

    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.