Courses and Mentoring

Advanced C++
Advanced Java
C
C++
OOA&D with UML
Object-Relational Databases

All courses are normally held at customers' premises and assume that the students have access to the relevant development tools i.e. compilers, but can upon request be arranged to be held at other locations.

Programming courses are typically 3-5 days in length, of which one third of the time is devoted to lectures. The rest of the time is spent on exercises, i.e. small and progressive programming challenges.

Course lengths and contents are configurable depending upon the students' experience and knowledge, as well as the customer's need for the topics covered.

In the mentoring mode, course topic lectures are given as seminars at (ir-)regular intervals (typically once every 1-2 weeks), and students solve exercise problems at their own pace without hands-on assistance, but with e-mail assistance from the instructor.

 

Advanced C++

C++ has over the years been (rightly?) accused of not providing solutions to the problems of large-scale programming, one the one hand due to lack of support for some important mechanisms (garbage collection, serialization...), on the other hand due to complex syntax e.g. abstract data type definition.

This course teaches how some of the missing mechanisms can be implemented by means of advanced programming and discipline.

Additionally, how to design templates and abstract data types is taught as well as the "advanced" use of operators new and delete.

Prerequisites

Fluency in C++.

 

Advanced Java

Java is the favorite language on the server side and to some extent for embedded and mobile applications.

This course describes some language features not available in C or C++ that make Java shine also as a systems programming language. These features include dynamic class loading, on-the-fly byte code generation, reflection and the rich set of XML processing APIs.

Prerequisites

Fluency in Java.

 

C

C remains the preferred programming language within certain application areas because of the its assembler-like features e.g. bit manipulation, pointer arithmetic and pointers to functions.

For this reason, the main focus areas of this course are the low-level mechanisms, along with their relations to processor and memory, but a complete overview of the language can also be given.

Prerequisites

Some high-level programming language e.g. Java.

 

C++

As a hybrid between an assembly language and an OOPL, C++ provides the same advantages as C but with OO and abstract data type features added.

This course covers the OO features of C++ i.e. polymorphism and composition as well as the use of the standard template library.

Prerequisites

Working knowledge of C and some familiarity with the OO vocabulary.

 

OOA&D with UML

In order to understand and communicate modern software, the object-oriented vocabulary must be well understood.

This course explains the UML vocabulary and annotation by performing analysis and design of a fictitious software product. The importance of designing for testability is stressed and the UML's relation to software design processes e.g. RUP is presented.

Note that this course does not require any software, as the exercises can be performed using pencil and paper only.

Prerequisites

Some programming experience.

 

Object-Relational Databases

Relational database technology is the de-facto standard for managing large amounts of data.

This course gives an introduction to relational algebra, and an overview of SQL.

Furthermore, query complexity and optimization are analyzed while explaining the importance of proper indexing. The mapping of object models to relational tables is described and of course the object-relational model itself.

Optionally, should the Oracle™ RDBMS be of particular interest, some of this product's specific features can be highlighted.

Prerequisites

Some programming experience.

 

© Copyright 2004 by Johan Appelgren AB. All rights reserved.