Carnegie Mellon University

Java Programming Course

95-707 Java Programming

Schedule, Syllabus, Assignments and Grading

The Fall of 2000 is the first time this "virtual version" of the course is being taught at Heinz so the following schedule and descriptions are tentative and therefore subject to change based on student progress. Throughout the semester, the information will be updated.

Electronic lectures and on-line tutoring systems are incorporated into the course. So even on holidays, material will be made available electronically for your review at a time that works best for you.


Date Unit Description Handouts Due dates
1. Aug 28 1 Introduction; GridCity Basics by Virtual lecture see list
2. Aug 30 1 Terminology and Methods by Virtual lecture see list
Sep 1 1 Review by Active Tutor 1.2.1 through 1.2.5 see list
3. Sep 4 1 Classes and inheritance by Virtual lecture see list Mini-assignment 1
4. Sep 6 1 Conditionals by Virtual lecture see list Mini-assignment 2
Sep 8 1 Quiz #1 covering lectures 1 and 2 and Active Tutor 1.2.1-1.2.5 Quiz1
5. Sep 11 1 Loops and more terminology by Virtual lecture see list Mini-assignment 3
6. Sep 13 1 Loops as tools; Recursion by Virtual lecture see list
Sep 15 1 Review session
7. Sep 18 1 static, dot (.) operator and more OOP; overriding; specializing behavior by Virtual lecture see list Mini-assignment 4
8. Sep 20 1 Interfaces; threads; HTML; applets by Virtual lecture see list
Sep 22 1 Quiz #2 covering lectures 1 through 6 Quiz2
9. Sep 25 2 Java computing environment; computers; literal strings, System.out, overloading; global methods; binary numbers by Virtual lecture see list Mini-assignment 5
10. Sep 27 2 Numeric types; variables; numeric operations; relationals, casting; numeric literals; constants by Virtual lecture see list
Sep 29 2 Review session
Oct 2 2 Catch-up Break! Mini-assignment 5 (Extended date)
Oct 4 2 Catch-up Break!
Oct 6 2 Review session
11. Oct 9 2 Math class; bitwise operators; for() loop by Virtual lecture see list Mini-assignment 6
12. Oct 11 2 Mixed practice with static, classes and interfaces; software engineering, practice by Virtual lecture see list
Oct 13 2 Review session
13. Oct 16 2 import; Monte-Carlo methods; switch() by Virtual lecture see list
14. Oct 18 2 Unary operators, logical simplifications, error checking, Javadoc by Virtual lecture see list Mini-assignment 7
Oct 20 3 Quiz #3 covering lectures 1 through 11. Take Home, optional Quiz3
15. Oct 23 3 Scope, return values and parameter passing by Virtual lecture see list
///// /////// //// //////////////////////////////////////////// //////// ///////////////
16. Oct 25 3 ASCII, char, Java classes for primitive types, comma operator by Virtual lecture see list Mini-assignment 8
Oct 27 3 Review session
Nov 3 3 Review session
Nov 10 3 Review session
17. Nov 15 3 Keyboard reading, exceptions and error handling by Virtual lecture see list
Nov 17 3 Review session
18. Nov 20 3 Loops and streams by Virtual lecture see list Mini-assignment 9
19. Nov 22 3 Recursion revisited; Practice with exceptions by Virtual lecture see list Mini-assignment 9Extra, Mini-assignment 10
Nov 24 3 Review session
20. Nov 27 3 Rest of object oriented programming by Virtual lecture see list
21. Nov 29 4 Arrays, vectors, char arrays; String and StringBuffer classes by Virtual lecture Mini-assignment 11a, Mini-assignment 11b
Dec 1 4 Review session
///// /////// //// //////////////////////////////////////////// //////// ///////////////
20a. Dec 4 3 Enrichment: File reading and writing by Virtual lecture
23. Dec 6 4 Multi-dimensional arrays; threads revisited; Vectors, lists, Sets, Stack, Hashtable
Dec 8 4 Review session
24. Dec 11 4 Recursive structures
Dec 14 5 Final Exam at 8:30AM in Hamburg Hall 1000 Practice Exam with solutions
Dec 15 5 Mini-assignment 13extra
Jan 5 Student demonstrations. Refreshments served. Mini-assignment 12none


This course is divided in five sequential and tightly integrated units. The overall objective of each unit is briefly described below. Following that is a more comprehensive list of topics expected to be covered in each unit. Unit 1: Grid City provide a careful introduction to object-oriented thinking and Java programming

Unit 2: Working with numbers

extend the concepts learned in Unit 1 by using numbers in the richer (and more complex) computational environment of today's computers

Unit 3: Working with flows of information

examine programming manipulations for handling the smallest "bit" of information through the constant flow of "bits" from files and other streams.

Unit 4: Working with lots of objects

expand fundamental programming knowledge by looking at ways to work with many instances of the same kind of objects and as well as with many diverse kinds of objects

Unit 5: Working on the cutting edge

explore Java programming with respect to the Internet, the World Wide Web and database-back websites

Topics in Unit 1, Grid City, include: Secondary coverage of: searching, sorting or binary tree Topics in Unit 2, Working with numbers, include: Secondary coverage of: examine computer architecture, random number generators. Topics in Unit 3, Working with flows of information, include: Secondary: cryptography or text search Topics in Unit 4, Working with lots of objects, include: Secondary: sorting, data mining or trees. Topics in Unit 5, Working on the cutting edge, include: Secondary: cryptography (purchases, contract signing), email-to-HTML, web detective, groupware (todo list), hospital information system or web-based calendar program.


Programming is a learned skill. That means in order for you to master it, you must do it. No one has found a magic implant that can provide you with the knowledge and experience that comes from programming without having you actually spend time programming. Therefore, in practice, progamming courses require a lot of work and time.

In order to help you through the learning process, I have carefully constructed a curriculum I believe provides comprehensive coverage without overwhelming you. In addition, I have split what would have been 3 or 4 assignments into about 10 smaller mini-assignments in order for you to gain experience shortly after being introduced to the material in class. This should improve your ability to master the material on a timely basis.

Grading Policy

Your final grade in this course is based on:

  1. 50% mini-assignments and quizzes
  2. 50% final exam

In addition, there will be lots of extra credit possible. Grades are determined on a flexible, but somewhat absolute scale; basically this means that if you earn the points, you get the grade. Therefore, you are not in relative competition with each other as much as with your own performance. Frankly, it is my sincere desire that you each master this material and earn an A.

Summer 2000
95-707 Java Programming [] Last Revised 11/30/99 Sweeney.