Download Course syllabus - UUM - Universiti Utara Malaysia

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Stream processing wikipedia , lookup

Join-pattern wikipedia , lookup

Flow-based programming wikipedia , lookup

Logic programming wikipedia , lookup

Design Patterns wikipedia , lookup

C Sharp syntax wikipedia , lookup

Scala (programming language) wikipedia , lookup

Programming language wikipedia , lookup

Functional programming wikipedia , lookup

Java (programming language) wikipedia , lookup

Falcon (programming language) wikipedia , lookup

Corecursion wikipedia , lookup

Exception handling wikipedia , lookup

Java performance wikipedia , lookup

Java ConcurrentMap wikipedia , lookup

Go (programming language) wikipedia , lookup

Reactive programming wikipedia , lookup

C++ wikipedia , lookup

Structured programming wikipedia , lookup

Object-oriented programming wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Abstraction (computer science) wikipedia , lookup

Transcript
UNIVERSITI UTARA MALAYSIA
COLLEGE OF ARTS AND SCIENCES
CODE
COURSE
PRE-REQUISITE
1.0
:
:
:
STIW5024
ADVANCED PROGRAMMING
NONE
SYNOPSIS
By the end of this course, students should be familiar with advanced programming
concepts within Java; should be able to carry out the construction of software
artefacts utilising these concepts; and should be capable of carrying out the
development of complex elements. The course emphasises on modular program
construction: how to get the modules right and how to organize a program as a
collection of modules. The kinds of abstractions most useful to programmers, i.e.
procedures; iteration abstractions; and, most critically, data abstractions are
discussed in this course.
2.0
OBJECTIVES
At the end of the course, the students should be able to:
2.1
Understand advanced programming language features within the context
of a high-level programming language (Java).
2.2
Acquire knowledge and necessary skills by applying the programming
language features in algorithms in a contemporary software setting.
3.0
LEARNING OUTCOMES
Upon the completion of the course, student will be able to:
3.1
Explain the characteristics of object oriented approach and advanced
programming features (C2, A3, P2).
3.2
Compare the advantages and limitations of the advanced programming
features (C2, A4, P2).
3.3
Apply the syntax and semantics of an object oriented programming
language and its programming processes (C3, A4, P4).
3.4
Develop software solutions using different kind of abstractions and
complex elements(C5, A4, P5).
4.0
REFERENCES
Liskov, B. & Guttag, J. (2000). Program
Development in Java: Abstraction,
Specification, and Object-Oriented Design. Indianapolis: Addison-Wesley.
Liang, Y.D. (2011). Introduction to Java Programming Comprehensive. Pearson.
1
Bloch, J.
(2008). Effective Java. Upper Saddle River: Addison-Wesley.
Hubbard, J.R. (2004). Schaum's Outlines: Programming with Java. New
York:McGraw-Hill.
5.0
COURSE CONTENT
No.
1
Topic
1.
Introduction


Decomposition and Abstraction
Abstraction
o Abstraction by Parameterization
o Abstraction by Specification
o Kinds of Abstractions
2
2.Understanding Objects in Java
 Program Structure
 Packages
 Objects and Variables
o Mutability
o Method Call Semantics
 Type Checking.
o Type Hierarchy
o Conversions and Overloading
 Dispatching
 Types
o Primitive Object Types
o Vectors
 Stream Input/output
 Java Applications
3
3. Procedural Abstraction
 The Benefits of Abstraction
 Specifications
 Specifications of Procedural Abstractions
 Implementing Procedures
 Designing Procedural Abstractions
4
4. Exceptions
 The Java Exception Mechanism.
o Exception Types
o Defining Exception Types
o Throwing Exceptions
o Handling Exceptions
o Coping with Unchecked Exceptions.
 Programming with Exceptions
2
Hour


o Reflecting and Masking
Design Issues
o When to Use Exceptions
o Checked versus Unchecked Exceptions.
Defensive Programming
5
5. Data Abstraction

Specifications for Data Abstractions
 Using Data Abstractions
 Implementing Data Abstractions
 Properties of Data Abstraction Implementations
o Benevolent Side Effects.
o Exposing the Representative
 Reasoning about Data Abstractions.
o Preserving the Rep Invariant
o Reasoning about Operations
o Reasoning at the Abstract Level
 Design Issues
o Mutability
o Operation Categories
o Adequacy
 Locality and Modifiability
6
6. Iteration Abstraction
 Iteration in Java
 Specifying Iterators
 Using Iterators
 Implementing Iterators
 Rep Invariants and Abstraction Functions for Generators
7
7. Type Hierarchy

Assignment and Dispatching
o Assignment
o Dispatching
 Defining a Type Hierarchy
 Defining Hierarchies in Java

Simple Example
 Exception Types
 Abstract Classes
 Interfaces
 The Meaning of Subtypes
o Methods Rule
o Properties Rule
o Equality
8
8. Polymorphic Abstractions
 Polymorphic Data Abstractions
 Using Polymorphic Data Abstractions
 Equality Revisited
 Polymorphic Procedures
3
9
9. Specifications
 Specifications and Specific and Sets
 Some Criteria for Specifications
o Restrictiveness
o Generality
o Clarity
10
10. Design Patterns
 Flyweights
 Singletons
 State Pattern
 Bridge Pattern
 Composites
 Publish/Subscribe
 Abstracting Control
5.0 TEACHING METHOD
Lectures, discussion, assignments, tutorial, self-directed learning and
presentations.
6.0 ASSESSMENT
Coursework
70%
- Project (team of 2-3 students) 30%
- Assignment (team of 2-3 students) 20%
- QUIZ, Mid Exam (individual) 20%
Final Exam
30%
Adib M.Monzer Habbal, MIEEE
Email: [email protected]
Ext: 04 928 4650
Room No.: 3072
Consultation Day: Sunday 2PM – 5PM
4