For MSIS22:198:605 Fall2002, Computer Technology (JAVA & Object Oriented Programming)

Last changed: 11/28/2002, 13:48:50

Overview: Our goal in this course is to learn in some depth the principles of programming and software development using the language Java. The emphasis will be on object oriented (OO) style. In particular we will study the principles of object oriented design using the UML modeling language. We will cover the OO principles such as inheritance, polymorphism, encapsulation, modularity, and OO patterns

Text Book: Deitel & Deitel, "Java, How to Program", 4th edition, Prentice Hall, 2002.

Prerequisites: No previous knowledge of programming languages is required. However those of you that are familiar with some other language, particularly C or a C derivative, will have an easier ride in the first few weeks. You need to have access to a personal computer (Windows, Mac or Unix will all work.) You need to be able to download and install software on this machine. You also need to have access to internet.

Home works, exams and grading: We will have one mid term exam (25% of your grade) and one final exam (30% of your grade). The remaining 45% is determined by the programming projects. Please note: Programming projects are the heart and soul of this course. Without doing them you will not be able to learn anything from this course. Therefore, I insist that you make your best efforts to do them all. To enforce this we have the following rule:

No one will be able to pass this course if they fail to hand in more than one homework assignment. Furthermore no one will pass the course if their cumulative point from programming assignments is less than 60% of total possible points. In other words if the maximum possible points from programs is, say 400, then you can not pass the course if your score from these programs is less than 240. These rules stand regardless of your score from the exams.

Attendance: is required. You are responsible for all information that is communicated in class whether procedural (such as changes in due dates, exam dates, etc. ) or course contents (lectures, changes in syllabus, corrections, etc.) If you think you will miss more than two lectures you should reconsider registering for this course.

Tentative List of Topics

As of 11/28 (Final revision)

Topic 1

Introduction to Computers Programming and Java compiling: 0.5 lecture)

    Computer architecture: CPU, memory, disks, peripherals, networks

    Programming languages: machine/assembly language, high level language, compilers, Java virtual Machine

    Installing Java and related software

    Files, folders, editors

    .java and .class files, write and execute a java program

    Read: Chapter 1

As of 11/28 (Final revision)

Topic 2

Anatomy of Java Programs: (0.5 lecture)


    Data and fields



    Dissection and detailed examination of simple java program

    Read: sections 2.1-2.3, and 6.1-6.7 . For the preliminary notions of class and objects, public and private fields and methods read section 8.1-8.4, 8.6. Also carefully study java code examples given in class, in particular example codes , and onlineStats.javaand the comments in them for creating new objects and static fields and methods.

As of 11/28 (Final revision)

Topic 3

Memory Concepts, variables, simple types, expressions, assignments: (1 lecture)

    Notion of memory, variables and declarations

    Numerical types/operations/expressions

    Character types/ operations/expressions

    Boolean types/expressions/operations + truth tables

    Introduction to Strings

    Final variables

    Read: sections 2.6-2.8 (don't worry about the stuff on Joption and graphical user interface in these examples. Just concentrate on memory concepts and variables and expressions and types and operations and the like.)

As of 11/28 (Final revision)

Topic 4

Control structures: (1 lectures)

    if and if/else statements

    while and do/while statements (not covered yet and not in mid term exam)

    for statement

    Code blocks and scope of variables

    Read: sections 4.1-4.6, 4.11-4.13, 5.3-5.4, (Again in the text's examples don't worry too much about the graphical user interface aspects like JOption class and its methods. Concentrate on the if, if/els and for statements and their use.)

Topic 5

Arrays: (0.5 lecture)

    Contiguous blocks of data and their use

    Declaration and initialization of arrays

    Looping over arrays

    Multi-dimensional arrays

    Read: Chapter 7.1-7.6

Mid Term Exam on October 10 in class (includes topics 1 through 5)

As of 11/28 (Final revision)

Topic 6

Methods in depth: (1 lecture)

    Definition, parameters, return values, void type

    Notion of call by value, final parameters

    Invoking methods others have written, invoking Java API, Math class

    Notion of modular design

    Method overloading and use


    Read: Chapter 6.1-6.15

Examples: (insertions and quicksort, methods, sequential and binary search (with and without recursive calls, see JavaCode page)

As of 11/28 (Final revision)

Topic 8

Classes and objects, Object oriented Programming (1.5 lectures)

    Declaration of classes

    Fields, methods, scope

    Constructors, and initialization: new

    The encapsulation principle in object oriented programming

    Packages and their use

    Private, package and public protection of data and methods

    declaring objects of a class

    UML notation for classes the Argo/UML package

    static/class members and methods and their use

    Examples: (Employee, linked list, serial numbers)

    Read: Chapter 8

As of 11/28 (Final revision)

Topic 9

Inheritance and polymorphism: (2 lectures)

    Subclassing and inheritance

    The object Class

    Protected members and methods

    Overriding methods, final methods

    Polymorphism and dynamic method binding

    Inner classes

    Final classes

    Type casting

    Declaring objects like: SupClass x=new Subclass();

    UML diagrams and inheritance and composition

    Code reuse

    Introduction to patterns (singleton and immutable patterns)

    Read: Section 9.1-9.22, 9.24

Examples (polymorphism via simple employee class, Detailed analysis of sorting program independent of type)

As of 11/28 (Final revision)

Topic 10

Abstraction: (1 lectures)

    Abstract classes and methods


    Multiple inheritance via interfaces

    Marker interfaces and their use

    instanceOf method

    Wrapper classes

    Read: sections 9.14-9.22

Examples (Queue and stack declaration using interfaces)


Topic 11

Exception handling: (0.5 lecture)

    Read: To be determined later

As of 11/28 (Final revision)

Topic 12

Strings: (0.5 lecture)

    toString method and concatenation

    Read: section 10.1-10.5, also review the Object class's toString method in 8.2

As of 11/28 (Final revision)

Topic 13

Graphics and GUI: (2 lectures)

    Graphics class and paint()/repaint() methods

    Color and font manipulations

    Various drawings: drawLine, drawString, etc.

    Graphics2D API


    Swing package and use of Jbuilder software to build GUIs:


    Model/view/controller framework and UI Delegate

    Events and event handling

    Organization of Swing classes

    Jbutton and action events

    Jtextfield/JPassword and related events

    JcomboBox, Jlist,

    Mouse events


    Layout management

    Panels and Panes

    Read: sections 12.1-12.7, 12.11, 12.13,12.14, 12.15)

Examples: (GUI for sort, other examples in JavaCode page)


Topic 14

Data structures and Java Collections framework: (1 lecture)

    Notion of data structures

    Review of Lists, adding and deleting from lists

    Stacks and queues, push and pop, add and take

    Binary search trees and tree searching

    Brief discussion of hash table and notion of hashing

    Java Collections framework

    Collection, Set and Map interfaces

    Abstract and concrete classes

    Iterators (iterator pattern)

    Algorithms in Collection class

    Read: Chapter 22, chapter 24 and sections 23.8-23.9

As of 11/28 (Final revision)


Final exam