COURSE ABBREVIATION                        CSCI 2900J Special Topics (Java)


CREDIT HOURS                              3


COURSE TITLE                               Introduction to Java Programming


PREREQUISITES                             CSCI 1301, with a C or better, or permission from the instructor.


CATALOG DESCRIPTION             The computer programming language Java is presented with a focus on platform-independent algorithm design and implementation.  Topics include Java history, data structures, applets, graphical stand-alone programs, widgets, visual design, events and actions, and exception handling.  Course project included.




Completing this course with a grade of C or better, the student will:


1.                  Know that Java is a 100% object-oriented programming environment.

2.                  Know the history of Java.

3.                  Know how Java is related to the Internet.

4.                  Know what makes Java platform-independent.

5.                  Know how to design algorithms for implementation in Java.

6.                  Know how to build an applet.

7.                  Know how to build a Java stand-alone program.

8.                  Have a general knowledge of the classes and their uses in the standard packages in Java.

9.                  Build Java code to read data from, and write data to, a data file of any type using file streams.

10.              Be able to compare and contrast text files and binary files.

11.              Be able to compare and contrast static and dynamic memory allocation.

12.              Be able to design and develop a Graphical User Interface using applets and stand-alone Java programs.

13.              Be able to develop Java code to handle user, as well as system, created: events, actions, and exceptions.

14.              Implement and understand the theory behind the following programming concepts: multi-threaded, independent threads, and grouping of threads.

15.              Choose and manipulate appropriate abstract data structures such as lists, stacks, queues, and trees.

16.              Compare and contrast abstract data types versus objects.

17.              Demonstrate an understanding of polymorphism and inheritance for objects by using them appropriately in a program.

18.              Describe the appropriateness of sorting and searching algorithms in a given context.

19.              Analyze and determine the efficiency of a specific algorithm using algorithm analysis techniques and tools such as O(n), q(n), and W(n).




I           This course addresses the general education outcome relating to communications as follows:


1.      Students develop their reading comprehension skills by reading the text and handouts.


2.      Students will further develop their communication and critical thinking skills by reading, interpreting, and implementing program requirements to create a well-behaved software system.


3.      Students develop their listening skills through lecture and small group problem solving.  Lecture material is presented that is not included in the text or handout material and is included as part of the tests or assignments.


4.      Students develop their reading and writing skills through the use of problems and activities, including development of computer programs and documentation, designed specifically to enhance their understanding of computer science principles and programming language skills.  Students provide written or oral solutions to these problems in either individual or group format.  They must also answer short-answer type questions on course exams.


II          This course addresses the general education outcome relating to problem-solving and critical thinking skills through programming assignments that take the student through the programming process from understanding the problem all the way to finalizing a correct program solution to the problem.


III        This course addresses the general education outcomes relating to mathematical concept usage and scientific inquiry as follows:


            1.         Students apply mathematical concepts in the development of computer programs by creating mathematically based solutions to the assigned problems and communicating the results of those solutions to the program user.


            2.         Students apply the scientific method in the set-up and solution of the problems presented to illustrate computer programming principles.


IV.       This course addresses the general education outcome relating to organization and analysis of information using a computer by using a modern, fully-capable programming language in the solution of problems designed to illustrate the concepts and principles of computer programming.




Students entering this course will meet the expected educational outcomes of CSCI 1301.




I)                   Introduction to Java

i)        History

ii)       Platform independence

iii)     Java and the Internet

iv)     Applets and stand-alone applications

v)      The Java engine/virtual machine

vi)     The visual development environment


II)                 Java Programming

i)        Problem solving

ii)       Java syntax

iii)     Method definition

iv)     Package organization and use

v)      Classes

vi)     Simple I/O

vii)   Importing packages

viii)  Applets

ix)     Vectors


III)              Object-Oriented Design

i)        Classes

ii)       Class member

iii)     Instance of classes

iv)     Modular programming

v)      Encapsulation

vi)     Inheritance

vii)   Visibility

viii)  Packages

ix)     Polymorphism

x)      Abstract classes

xi)     Multiple inheritance and interfaces


IV)              Applet Development

i)        Web programming

ii)       Client/server model

iii)     Panels

iv)     Containers

v)      Components

vi)     Introduction to threads and events

vii)   Browser/applet interaction

viii)  Graphical User Interface development

ix)     Buttons, boxes, and lists


V)                Data Structures

i)        Recursion: math models

ii)       Stacks

iii)     Vectors

iv)     Strings

v)      Binary search

vi)     Linked lists

vii)   Queues

viii)  Binary trees

ix)     Binary search tree


VI)              Algorithm Analysis

i)        Big-Oh

ii)       Big-Theta

iii)     Big-Omega

iv)     Analysis of stacks, queues, general trees, binary trees, and general sorting and searching


VII)           Course Project

i)        A program will be developed that will require the use of at least two data structures studied in class.

ii)       The project will require the development of applets or stand-alone programs that will interact with the user allowing the user to:

(1)   Input data into fixed length records containing more than one data type and/or structure.

(2)   Sort fixed length records.

(3)   Search fixed length records.

(4)   Append data to file(s) residing on external storage.

(5)   Store user input in primary memory until the user wants it saved.




A.                 COURSE GRADE


Exams, assignments, and a final exam prepared by individual instructors will be used to determine the course grade.  The course grade must weigh examinations for at least 30% of the grade and programming assignments for 30% of the grade.  Five to seven student programming projects must be assigned.  Testing must consist of at least two one-hour examinations and a comprehensive final examination.  The final examination must be weighted at 25%.  The remaining 15% is at the discretion of the instructor.




            CSCI 2900J Special Topics (Java) will be assessed every five years. The assessment instrument will be determined by the CSCI course committee and will consist of a common project and a set of free response questions that will be included as a portion of the final examination for all students taking the course.




The CSCI Committee, or a special assessment committee appointed by the Executive Committee of the Mathematics Academic Group, will analyze the results of the assessment and determine implications for curriculum changes. The committee will prepare a report for the Academic Group summarizing its finding.