Back to Modules
IS442

Object Oriented Programming

1 CreditsBoth

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

Requisites

Prerequisites: IS111/SMT111/CS101/COR-IS1704 - Pre-req

Co-requisites: None

Anti-requisites: IS442/ CS102 - Mutually Exclusive

Attributes

Department: SCIS

Course Level: Undergraduate

Tracks: IS Major: Software Development Track IS/T4BS: Product Development Track

Areas: Business Options Econ Major Rel/Econ Options Grad Req - Dig Tech/Data Ana (Intake 2024 onwards) Information Systems Electives Social Sciences/PLE Major-related

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.

Graduate Learning Outcomes

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

Competencies

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