Dansk - English

Kort version - Fuld version


C++ for Java programmører (Data Structures and Algorithms using C++) (Forår 2008)

Kursuskode : EJ2C++-U1
ECTS Point : 7,5 Status : Obligatorisk
Revideret : 06/02 2008 Oprettet : 23/06 2005
Placering : 5. semester Timer pr. uge : 4
Længde : 1 semester Undervisningssprog : Dansk og engelsk

Målsætning : Through this course the student will
• Know about well-known data structures as those
listed below. You will be able to implement these
structures as classes in C++
• Be able to analyse algorithms with respect to
efficiency
• Determine which structure are appropriate in
various situations
• Be confident in learning new structures beyond
what’s presented during this course
Another goal is to handle C++ especially
concerning the many choices this language
enables you to use. But more important the
fundamental knowledge of data structures
transcends to any other language or operating
system. Twenty years from now you will still be
using the data structures that you learn this
semester.

Learning outcomes
(i) Ability to
define and identify basic datastructures and algorithms
define and identify efficiency of a simple algorithm used with a specific datastructure
define and identify the basic differences between Java and C/C++
define and identify the basic pitfalls using C/C++
define and identify basic distinctive features in C/C++
identify examples of. 4. and 5. in the students own solution
(ii) Ability to
analyse and compare advantages and disadvantages of the different data structures
analyse and compare strength and weekneses of basic sorting algorithms
analyse algorithms with respect to efficiency
analyse examples of 1. and 3. in the students own solution
(iii) Ability to
discuss solutions involving items listed in the Principal Content
estimate efficiency of an algorithm with worst, average, and best case
estimate and analyse a specific solution
estimate and summarize efficiency measurements
reflect on a data structure application
discuss quibbling pitfalls in C/C++
Evaluation

02: if the student fulfils the criteria from (i)
7: if further the criteria from (ii) are met
12: if all critertia from (i), (ii), and (iii) are met
Hovedindhold : Data Structures
• Precondition and postcondition specifications
• Time analysis strategies
• Algorithms and their efficiency
• Standard Template Library (STL)
• Dynamic arrays
• Linked lists
• Iterators
• Stacks and queues
• Recursive thinking
• Set and maps
• Hash tables and hash functions
• Heap structures; priority queues
• Graphs; traversing graphs
• Spanning trees; shortest path
• Searching and sorting techniques
C++
• Compilers, linkers, and precompilers.
• Copy constructor, copy assignment operator, and destructor (“big three”).
• Handling of memory. Heap and stack.
• Pointers.
• Templates; Generic programming.
• Operator overloading
• Exceptions
• Polymorphic behaviours; virtual functions
Undervisningsform : The lessons consist of theory combined with practical exercises and course assignments. During the semester the student will have to hand in a number of mandatory course assignments. These assignments are used as a base for the oral examination.
Krævede forudsætninger : Documented knowledge corresponding to OOP2.
Anbefalede forudsætninger : You are already competent at programming in Java. You may have some experience in C. You should feel confident in design and implement programs using classes and methods. You have used some basic structures like arrays and Arraylists in Java.
Relationer : -
Prøveform : Mundtlig evaluering på grundlag af kursusopgaver
Censur : Intern
Bedømmelse : 7-trinsskala
Bemærkninger : Internal, oral examination based on asignments.

7-step scale

02: if the student fulfils the criteria from (i)
7: if further the criteria from (ii) are met
12: if all critertia from (i), (ii), and (iii) are met

Through the course the students will have to solve a number of compulsory course assignments. To be admitted for examination all compulsory assignments have to be handed in within the time limits indicated in the assignment. Furthermore all assignments have to be approved.
Undervisningsmateriale : Supplementary literature:
Mark Allen Weiss: ”C++ for Java Programmers”, Pearson Prentice Hall, 2004,
ISBN: 0-13-191163-5, and
William Ford & William Topp: ”Data structures with C++ using STL”, Second Edition, Prentice Hall, 2002, ISBN: 0-13-085850-1.
Ansvarlig underviser : Henrik Kold Mikkelsen , hokm@dtu.dk