Syllabus for CS-4000-1/5331-2
OO Programming in Java

Dr.  Michael Sobolewski
Room: CP-310
Office hours: Wednesday 4:00 p.m. to 6:00 p.m. or by appointment

Course Information
CS 4000-1/5331-2
OO Programming in Java
Location: CP204
Time:  3:00-3:50 p.m., MWF

Course webpage is We will make extensive use of the class WWW site. You should check the WWW page on a near daily basis for updates.

This course teaches you the fundamental concepts of good computer programming while introducing you to one of the most powerful and popular languages in use today—Java. It gives you an ideal balance between programming concepts and the details of Java. Our focus is on a subset of Java--a lean and practical core that is manageable, yet detailed enough to create powerful Java applets and servlets. And as you master the basics of Java, you'll be developing solid programming skills that will increase your effectiveness no matter which language you work with.

Learning Outcomes
Ability to:
1. distinguish OO programming from declarative and procedural ones
2. describe the Java Virtual Machine architecture and behavior
3. define and exemplify  secure classes and inner classes, objects and message passing
4. understand and implement applets, servlets, and thread save programs
6. compare and contrast inheritance and polymorphism
6. compare and contrast Java interfaces, abstract classes, and classes
5. write well-structured and documented OO applications with event-driven graphical  user interfaces and socket-based networking
7. master basic JAVA  library and tools at a depth that is sufficient to solve real-world programming problems

Methods of Assessment of Learning outcomes
a. Eight homework assignments to assess common Java concepts and terminology
b. Midterm exam
c. Four programming assignments
d. Cumulative final exam
e. CS5331: network-based project

[1] Java Concepts, Forth Edition,
Cay Horstmann, John Wiley & Sons, Inc., 2005, ISBN 0-471-69704-4

[1] Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes & Michael Kölling, 2nd ed, Prentice Hall / Pearson Education, 2004, ISBN 0-13-124933-9
[2] Thinking in Java, 3rd Edition, Bruce Eckel, Prentice Hall PTR; 3 edition, 2002, ISBN 0131002872

Tentative Course Outline

  1. Introduction
  2. Using and Implementing Objects
  3. Fundamental Data Types
  4. Applets and Graphics
  5. HTTP and Servlets
  6. Decisions
  7. Iteration
  8. Arrays, Vectors, and Array Lists
  9. Designing Classes
  10. Testing and Debugging
  11. Interfaces and Polymorphism
  12. Event handling
  13. Inheritance
  14. Graphical User Interfaces
  15. Exceptions Handling
  16. Files and Streams
  17. Object-Oriented Design
  18. Recursion
  19. Sorting and Searching
  20. An Introduction to Data Structures
  21. Advanced Data Structures
  22. Generic Programming

Course Delivery Format/Policies
This course consists of lectures, homework and programming assignments, two exams, and project (grad students only).

Homework assignments  will be submitted by email: The format and types of problems on homework will be similar to those on the midterm and final exams. Doing and understanding the homework assignments will help prepare for exams.

Programming Assignments will be submitted by email: Programs must compile and run using the PC version of Java 5.0.  Each programming assignment will receive points for #1- proper operation (75% of grade) and #2- structure, commenting, and style (25% of grade).

Please note the following programming style and coding guidelines:
  • Each source file must begin with a comment block identifying the programmer, project, last modification date.
  • The class file containing "public static void main()" must include a comment block (following the identification header comment), that briefly describes the purpose of the program and the primary data structures employed.
  • Each class method or property must be accompanied by a header comment that describes what the method or property does, the logical purpose of each passed parameter (including whether it is input, output, or input/output), the pre-conditions that are assumed, the post-conditions that are guaranteed, and the return value (if any).
  • Declarations of class level variables and finals (constants) must be accompanied by a brief description of purpose.
  • Major control structures, such as loops or selections, should be preceded by a block comment describing what the following code does.
  • Use a sensible, consistent pattern of indentation and other formatting style (such as bracket placement) to improve the readability of your code.
  • Identifier names (constants, variables, methods, properties, classes, etc.) should be descriptive.
  • When a final (constant) is appropriate, use a final (constant) instead of a "magic number". More explicitly, any constant value other than 0 or the empty string, "", should be a named constant.
  • Store character data (aside from single characters) in string objects, rather than char arrays.

Exams will be closed-book/notes. Material from handouts, textbooks and assignments will be included in the scope of the exams. The final exam is comprehensive.

Point Distribution CS4000:

Homeworks (8)15%
Programming Assignments (4)45%
Midterm Exam15%
Final Exam25%

Point Distribution CS5331:

Homeworks (8)10%
Programming Assignments (4)30%
Midterm Exam15%
Final Exam25%

Grading Scale:
Grades may be curved as necessary.

90 guarantees at least an A-
80 guarantees at least a B-
70 guarantees at least a C-
60 guarantees at least a D-
59 or less is F

Late Policy:
Late work will not be accepted. Each homework and programming assignment will have a posted deadline. Deadlines are absolute. Failure to submit an assignment by the deadline will result in a grade of 0. There are no exceptions. A written excuse from the dean or health office is the only acceptable form of excuse. This will result a minimum extension to the deadline to complete the assignment.

Questions about grades:
After each graded assignment is returned students will have one week following the return of the assignment to question the grade assigned with either the course instructor or TA. After one week has passed the grade becomes final and will not change. This applies to all programming assignments, homework and tests.

The purpose of these different instruments is to have a positive learning experience, critical thinking about Java programming, and some sound grasp of fundamentals. If you feel any of these instruments is not working for any reason, please send me email and I will consider a change in the format of delivery.

Student-teacher relationships are based on trust. Acts, which violate this trust, undermine the educational process. Your classmates and the instructor will not tolerate violations of academic integrity.(see Statement of Academic Conduct for Engineering Students, College of Engineering Texas Tech University).