Course Info
 
Announcements
 
Homeworks
 
Grades
 
Downloads
 
Links
 
Contact
 

OBJECTIVE
The main purpose of this course is to present intermediate programming techniques including basic data structures (arrays, lists, etc.) and fundamental algorithms (sorting, searching, etc.). A major emphasis will be given to object-oriented (O-O) programming in C++ language, in relation to O-O Design and O-O Analysis.

REFERENCES
• Mark Allen Weiss. 2006. Third Edition. Data Structures & Algorithm Analysis in C++. Addison Wesley.
• Stroustrup Bjarne. 1993. Second Edition. The C++ Programming Language. Addison Wesley.

OUTLINE
• Introduction
     • Basics
     • Flow Control
     • Functions
     • C++ Program Structure
• Structures
     • Struct
     • Class
     • Data Hiding
• Constructors and Destructors
• Pointers 1
     • Memory Allocation
• Object-Oriented Analysis Design 1
     • Concepts / Output
     • UML 1
• Pointers 2
     • Arrays
     • Multidimensional Arrays
     • Strings
• References
     • C++ Reference
     • Call by Reference / Value
• Polymorphism
     • Inheritance
     • Function Override
     • Abstract Classes
• Object-Oriented Analysis Design 2
     • UML 2
• Operator Overloading
• Templates
• STL
• Streams
     • Basics
     • File Operations
• Algorithms 1
     • Algorithm Analysis
     • Recursion
• Data Structures
     • Arrays
     • Lists
     • Trees
     • B-Trees
     • Hash Table
• Algorithms 2
     • Sorting

PROJECT
Preparing a term project will constitute a major portion of the expected course work. Teams of at least 3 students will be responsible of
     • writing a proposal to develop a software in C++,
     • writing an analysis report,
     • writing a design report,
     • and finally, developing the software and the appropriate user documentation.

GRADING
Homework 10%
Midterm 20%
Project 40%
Final 30%