COURSE PASSPORT

Object-Oriented Programming (C++)

NETB151 and NETB161

Lecturers: Nikolay Kirov, Emil Kelevedzhiev
e-mail: nkirov@nbu.bg, keleved@math.bas.bg

1. COMPETENCES:

    Students successfully finished this course will:
1) know:
- Pointers and Memory Allocation and Deallocation
- Inheritance, Base and Derived Classes, Polymorphism
- The Inheritance Hierarchy of Stream Classes, String Streams, Random Access
- The Software Life Cycle, Relationships between Classes, Implementing Associations, Examples
- Basic Sorting Algorithms, Analyzing the Sorting Algorithms
- Linked Lists
- Operator Overloading, Automatic Memory Management, Templates, Nested Classes and Name Spaces, Exception Handling
2) be able to:
- Testing and Debugging
- Using Pointers
- Writing classes
- Reading and Writing Text Files
- Making Object Oriented Design, Software Life Cycle, CRC Cards, Implementing Associations
- Writing and Analyzing Sorting Algorithms
- Implementing Linked Lists, Stacks and Queues


2. MAIN TOPICS

1. Testing and Debugging
Unit Tests, Selecting Test Cases, Test Case Evaluations, Assertions, Program Traces, The Debugger, Strategies, Debugger Limitations
2. Pointers
Pointers and Memory Allocation, Deallocating Dynamic Memory, Common Uses for Pointers, Arrays and Pointers, Pointers to Character Strings
3. Inheritance
Base and Derived Classes, Calling the Base-Class Constructor, Calling Base-Class Member Functions, Polymorphism
4. Streams
Reading and Writing Text Files, The Inheritance Hierarchy of Stream Classes, String Streams,  Command Line Arguments, Random Access
5. Object Oriented Design
The Software Life Cycle, CRC Cards, Cohesion, Coupling, Relationships between Classes, Implementing Associations, Example: Printing an Invoice, Example: An Educational Game
6. Recursion
Triangle Numbers, Permutations, Thinking Recursively, Recursive Helper Functions, Mutual Recursion, The Efficiency of Recursion
7. Sorting and Searching
Selection Sort, Profiling the Selection Sort Algorithm, Analyzing the Performance of the Selection Sort Algorithm, Merge Sort, Analyzing the Merge Sort Algorithm, Searching, Binary Search, Searching and Sorting Real Data
8. An Introduction to Data Structures
Linked Lists, Implementing Linked Lists, Stacks and Queues, Other Standard Containers, Standard Algorithms
9. Advanced C++ Topics
Operator Overloading, Automatic Memory Management, Memory Management for Linked Lists, Templates, Nested Classes and Name Spaces, Exception Handling

3. RECOMMENDED TEXTBOOKS

 Cay Horstmann, Computing Concepts with C++ Essentials, Third Edition, Wiley, 2003.

4. TEACHING FORMS

Each topic includes one or two lectures.

5. FORM OF EVALUATION AND COMPETENCE ASSESSMENT

NETB151

Tests
Homeworks
Practice
Written exam
Oral exam
Curren evaluation
40%
30%
30%
0%
0%
Exam
40%
0%
20%
20%
20%
NETB161


Homeworks
Practice
Curren evaluation

30%
70%

Exam

30%
70%


6. CURRENT CONTROL AND SCHEDULE  



Points for NETB151
current 
evaluation
Points for NETB161
current 
evaluation
Week No,
after topic
Points for NETB151
exam
Points for NETB161
exam
Test 1 NETB151 10 - 5, Inheritance
- -
Test 2 NETB151 10 - 10, Recursion
- -
Final Test NETB151 20 - 15, Advanced C++ Topics
40 -
Homework 1 NETB161 10 10 4-5, Inheritance - 10
Homework 2 NETB161 10 10 8-9, Object-Oriented Design - 10
Homework 3 NETB161 10 10 14-15, Advanced C++ Topics - 10
Exam of practice 1 NETB161 10 10 6, Inheritance - -
Exam of practice 2 NETB161 10 10 11, Recursion - -
Final exam of practice NETB161 10 50 15, Advanced C++ Topics 20 70
Written exam NETB151 - - - 20 -
Oral exam NETB151 - - - 20 -
Extra points* both till 5 till 5 -  -  -
Total:
100 100 - 100 100
Points (or %) Grade
90-100 Excellent 6
76-89 Very good 5
60-75 Good 4
50-59 Satisfactory 3
0-49 Poor 2

7. ADDITIONAL EXPLANATION ON THE EXAMINATION MATERIALS AND EVALUATION CRITERIA

Obliged attendance of the lessons – minimum 80% (24 hours per each subject = 48 hours from 60)  
http://www.math.bas.bg/~nkirov/2005/netb151

/N. Kirov/