COSC 210

Object Oriented and GUI Programming

Syllabus of Record

 

 

I. Catalogue Description

 

COSC 210 Object Oriented and GUI Programming                                                                           3 credits

                                                                                                                                                                 3 lecture hours                                                                                                                                              0 lab hours

                                                                                                                                                                 (3c‑0l‑3sh)

 

Prerequisite: COSC110

An in‑depth introduction to the Object Oriented Programming (OOP) paradigm. The focus will be on designing, implementing, and using objects. We will cover function and operator overloading, templates, inheritance and polymorphism. This course will also include an introduction to Graphical User Interface (GUI) design and  programming.

 

II. Course Objectives

 

The student will:

 

1. Learn the fundamental concepts of the OOP paradigm.

2. Implement object definitions.

3. Incorporate objects and arrays of objects in application programming.

4. Use overloading, templates, and inheritance when designing, implementing, and using objects.

5. Design Object Oriented applications.

6. Learn the fundamental concepts of GUI design.

7. Develop and test object‑oriented GUI programs.

 

III. Course Outline

 

A. Introduction to the Object Oriented Programming Paradigm                                                                     2 hours

1. Overview of the fundamental concepts of OOP

2. Object model terminology

3. Introduction to the language and programming environment

B. (C++) Programming Basics                                                                                                                               4 hours

1. Data representation and standard types

2. Literals and literal types

3. Namespaces

4. Input and output (I/O)

5. Operators and expressions

6. Control flow constructs

7. Functions and return types


8. User defined data structures

9. Static and dynamic arrays

10. Structs and unions

11. Memory allocation

12. Debugging techniques

C. Defining Objects                                                                                                                                                4 hours

1. Encapsulation

2. Constructors and destructors

3. Member variable and functions

4. Accessor and modifier functions

5. Public, protected, and private declarations

6. Object initialization

D. Overloading                                                                                                                                                        3 hours

1. Function overloading

2. Overloading resolution

3. Operator overloading

4. Friend functions

E. Using Objects                                                                                                                                                     4 hours

1. Scoping

2. Static and dynamic objects

3. Arrays of objects

F. Object Design                                                                                                                                                     3 hours

1. Goals of Object Oriented Software

G. Templates                                                                                                                                                            4 hours

1. Template functions

2. Simple sorting techniques (exchange, insertion, selection)

3. Template object definitions

H. Inheritance                                                                                                                                                          4 hours

1. Derived types

2. Virtual functions

3. Declarations

4. Single and multiple inheritance

5. Public vs. private inheritance

6. Virtual Derivations

I. Run‑Time Type Identification                                                                                                                           2 hours

1. Polymorphism

J. Exception Handling and Debugging                                                                                                                3 hours

1. Exception handling functions

2. Expected and unexpected exceptions

3. Using a debugger

K. Graphical User Interface Design                                                                                                                     2 hours

1. Goals of GUI software

L. Implementing GUIs using Object Oriented Programming                                                                            5 hours

1. Concepts and terminology

2. Dialogue Interface

3. Single Document Interface

4. Multiple Document Interface

 


IV. Evaluation Methods

 

Evaluation:

Exams: 3 (50-60%) (including final)

Projects: 5‑6 (30-40%)

Quizzes, Homework, and Lab Exercises: (10-20%)

Grading Scale:

                The standard grading scale will be used.

90-100% : A; 80-89% : B; 70-79% : C; 60-69% : D; below 60% : F.

Attendance policy:

The attendance policy will conform to the University wide attendance criteria.

 

 

 

 

 

Samples of projects assigned to help students fulfill course objectives: 

 

Project 1. Develop a new numerical class such as rational, complex, or Roman. This project will introduce the students to the class syntax, private and public attributes and methods.

 

Project 2. Expand the class developed for project 1 to incorporate operator overloading. This project will include the syntax for operator overloading and friend functions.

 

Project 3. Develop a template container class. This project will include template syntax, and the use of dynamic arrays.

 

Project 4. Develop a hierarchical set of classes such as quadrilaterals. This project will include inheritance, polymorphism, protected attributes and methods and overloading.

 

Project 5. Develop a Dialog Based Graphical User Interface application. This project will introduce the concepts of GUI design and development. The project will also include the use of a large library of predefined classes.