Skip to Main Content

IS442

Download as PDF

Object Oriented Programming

SCIS Sch of Computing & Info Sys

Course (UG/PG)

Undergraduate

Offering Unit/Department

Course Description

This course focuses on fundamental concepts of developing programs using an object orientated approach. There will be an emphasis on writing clean and efficient code, and the ability to use an appropriate data structure or algorithm to solve problems. The Java programming language will be taught in depth. Students are expected to have a strong foundation in programming.

This is a compulsory course for IS (Software Development Track) for 2017 intake and onwards.

Upon completion of the course, students will be able to:
1. Practice problem solving skills
2. Read UML sequence and class diagrams
3. Apply basic concepts of Object Orientation to a given scenario/context
4. Apply good programming practices and design concepts to develop software
5. Appreciate the role of algorithms and in problem solving

Course Learning Outcomes

1. Demonstrate understanding of abstraction:

a. Contrast concepts of a class and an object.

b. Write class definitions that represent abstract data types.

c. Write class definitions that properly handle a life-cycle of its instances: objects.

d. Write programs that safely utilizes data members (fields, attributes) and member functions (methods) associated with individual objects, or a class itself (static members).

2. Demonstrate understanding of encapsulation:

a. Write programs that properly use encapsulation to control visibility of public, private and protected members by applying correct access modifiers.

b. Write programs with packages that organize source code definitions.

3. Demonstrate understanding of inheritance:

a. Explain the benefits of inheritance.

b. Write a class which extends a parent class.

c. Contrast inheritance of implementation (extends) and inheritance of interface (implements).

d. Write programs that utilize inheritance to eliminate repetition by reusing member definitions from an existing data type to define new data types.

4. Demonstrate understanding of polymorphism:

a. Write a child class that overloads methods from a parent class (static polymorphism).

b. Write a child class that overrides methods from a parent class (dynamic polymorphism).

c. Write programs that utilize polymorphism to allow for data type generalization, specialization or interface implementation.

5. Demonstrate understanding of object-oriented design:

a. Sketch UML class diagrams and sequence diagrams.

b. Translate UML class diagrams and sequence diagrams into code.

c. Explain concepts of cohesion and coupling.

d. Explain concepts of an exception, and exception propagation.

6. Demonstrate ability to write programs in the Java programming language:

a. Write simple batch scripts to compile and run programs.

b. Explain the workings of CLASSPATH and write programs that use external libraries.

c. Apply fundamental and complex data types (arrays, lists, sets, maps) to solve basic problems.

d. Write programs that properly handle exceptions to safely perform I/O operations.

e. Write class definitions for custom exceptions.

Discipline-Specific Competencies

Software Design, Agile Software Development, Applications Development, Algorithm Analysis, Software Testing

SMU Graduate Learning Outcomes

Disciplinary Knowledge, Critical thinking & problem solving, Self-directed learning

Grading Basis

GRD - Graded

Course Units

1