Teamwork
exercise topic is published 9.3.2007
Basic information,
updated May 2, 2007 (Hannu
Laine)
C++-programming C0177 (CAP04S3)
This cource is basically
ment for third year students and the
prerequisite is the basic knowledge of C-language.
You have to register to the course using WinhaWille.
The identification code of the course is C0177 and the implementation
code
is CAP04S3.
The unit provides an introduction to
the use of object oriented programming in practical software
development
especially using C++-language. After completing the unit the student is
familiar with the role and application possibilities of object oriented
programming (OOP) in different areas of information systems
development. He
knows the principles and practices as well as tools of object-oriented
programming. The special emphasis is on the features of C++ that are
different
form Java-language. These kinds of things are for example the memory
usage and
management, using pointers to objects and using C++ standard template
classes
and template algorithms in program development. The subjects of the
course are
important and necessary base knowledge for example in Symbian
programming.
[ General
| Main
topics | Record | Course
material | Exercises |
Teamwork
excercise | Exam ]
General
information
- Lecturer: Hannu Laine
- The course is taught during the third and fourth period of the
third
year
- The course is worth of 5 study points ( ECTS)
- Lectures 2 h / week during the third and fourth period ( 28 hours
together)
- Labs 2 h / week during the third and fourth period (28 hours
together)
- One team work exercise ( 30 hours)
- Self study (estimated effort for student 31 hours)
- Exam at the end of the course (3 hours)
Main topics
The preliminary list of main topics is below.
- C/C++
- Object oriented paradigm and C++
- Classes and objects
- How to use classes and objects (examples)
- Build in Classses and objects in C++
- Constructors and destructors
- Operator overloading and other improvements
- Interaction and co-operation of objects
- Inheritance
- Changing properties of the class when inheriting
- Virtual methods
- Polymorfism
- Generic programming
- STL
- Useful design patterns
- Examples of design patterns
The history of
topics
of lectures
You can find the list of titles of topics, which have been discussed
each week in "theory" classes by clicking the following link.
Course
material
- Course text book: Deitel H, Deitel B : C++ How to
program
- Additional good books:
Lafore Robert: Object oriented Programming in C++
Richard Johnsonbaugh and Martin Keller : Object oriented
programming in C++
Pohl Ira Object oriented programminmg using C++
- The
following two books are classics and very suitable as a
referenvce
material
Bjarne Stroustrup : The C++ programming Language
Lippman, Jajoie : C++ Primer
- Notes taken during the lectures
- Lecture
transparencies
Part 1 a
Part
1 b (Differences between C and C++)
Part 2
(Introduction to the object oriented programming in C++)
Part 3
(Constructors and destructors)
Part 4
(Operator overloading)
Part 5 (Strings)
Part 6
(Static/dynamic arrays with object/pointer to object elements. Objects
further can have dynamic/static members)
Part 7
(Static members (keyword static) and different uses of const
specifiers)
Part 8
(Main component / sub component relation and association
relation)
Part 9a
Part 9 b (Inheritance)
Part10 a
Part
10 b (More about inheritance)
Part 11 (Function
templates and class templates. Introduction to STL: vector class and
iterators.
Exercises
There are about fourteen lab excercises during the course. Some of
them are voluntary additional tasks (marked with E, standing for extra)
Teamwork
Exercise
You can find the description of the
teamwork exercise
here. The
recommended number of students in one team is
three.
One goal of this is to exercise working in teams and working according
the principles of real project. It is necessary to divide the work
into pieces, which are relatively independent from each other. It is
also
necessary to compose a plan for the project to get it to proceed
smoothly. The plan contains at least a list of subtasks, the timetable
and responsibility chart (who is responsible for what task).
More
instructions for project work in this link.
Exam
The examination is held on Friday, May 11 at 10.00 in the room A1.127.
In the exam the understanding of the topics and the ability to
apply
them is tested. The final grade is based mainly to the exam. The
activity
in labs can have an effect of 20% in final grade (all compulsory lab
exercises
are required to be completed to get the course approved). The problems
to be solved in the exam have similarities with the problems worked out
in labs, but they don't give straight answers to questions in the exam.
Some potential types of questions in the exam are as follows:
Basically whatever topic studied during the course can be as a
question
in the exam. Some of the typical question types are described below.
Question type 1) Properties and behaviour of certain real world
objects
is described. Write the class definition and implementation of the
class
for those objects.
Question type 2) The class definition for class xxx (or class
definitions
for more than one class) is given. Write an application (main function)
that solves a certain problem or completes a certain task using
services
of the classes given.
Question type 3) The class definition for class xxx (or class
definitions
for more than one class) is given. Implement a new class that fulfils
certain
requirements using the classes given in a way or another (using sub
component
relation, inheritance relation or association relation).
Question type 4) You can find a program on the question paper. The
question
can be for example something like this. What is the problem, the
program
solves? What are the problems that arise when the program is running?
How
the program should be improved to make it better.
Question type 5) Generic programming is one of the key factors in
Object
oriented programming. It is almost a must that some of questions have
connections
to this question.
Question type 6) The question types 1 – 5 are very typical and
surely
at least two of the questions follow those principles. Then there is a
possibility that you can find questions that are not easily categorised
in any of these types.