ID1218 Applied Programming 7.5 credits

Tillämpad programmering

Please note

This course has been cancelled.

Software development today depends on a variety of programming models, concepts, languages, pragmatics, and environments. The ability to choose from this variety of aspects critically determines whether a programmer can solve real life programming
tasks successfully and efficiently.
Aim
The overall aim of the course is to provide the necessary knowledge in programming models, concepts, languages, and environments used in today's software construction such as in web-based systems, embedded systems, communication systems,
distributed systems, just to name a few.

  • Education cycle

    First cycle
  • Main field of study

    Technology
  • Grading scale

    A, B, C, D, E, FX, F

Last planned examination: spring 16.

At present this course is not scheduled to be offered.

Intended learning outcomes

The overall aim of the course is to provide the necessary knowledge in programming models, concepts, languages, and environments used in today's software construction such as in web-based systems, embedded systems, communication systems, distributed systems, just to name a few.

More specifically, after reading the course, students should be able to:

  • know basic characteristics and key concepts of common programming models (object-oriented, imperative, functional, and concurrent programming models) and know about common programming languages that implement these models.
  • analyze programming tasks and identify aspects of these tasks that make them suited for the above mentioned programming models.
  • apply object-oriented programming concepts from Java in C++: classes, inheritance, object-based polymorphism, and exceptions.
  • understand and apply the concepts of C++ as a language following the object-oriented and imperative programming model: parameter passing, pointers and references, explicit memory management, overloading, parametric polymorphism through templates.
  • configure, compile, and interface to software libraries in C++.
  • design, structure, debug, test, and profile medium-sized programs in C++.
  • apply basic functional programming techniques in Erlang: recursion, pattern matching, list processing.
  • understand and identify safety and liveness properties of concurrent programs.
  • apply mutual exclusion, message ordering, and concurrency adaptors as common synchronization patterns in concurrent programs.
  • structure concurrent applications into communicating and cooperating concurrent abstractions.

Course main content

  - Programming models and languages: imperative programming,   object-oriented programming, functional programming,   concurrent programming. Introduction to key properties, benefits,   and application areas.  

- Programming in C++: differential approach to Java. Key   differences. Relation to C. Basics: data types, control   structures, objects, classes, inheritance, object-based   polymorphism. Advanced: parameter passing, references, pointers   and explicit memory management, parametric polymorphism with   templates.  

- Concurrent programming: paradigms (shared data structures   versus message passing), techniques and concepts (safety,   liveness, concurrency control, services).  

- Functional and concurrent programming in Erlang: recursion,   list processing, pattern matching, message sending, safety   (mutual exclusion), liveness (concurrency adaptors, message   ordering).  

- Pragmatics: development tools and environments, testing,   debugging, profiling.

Eligibility

Completed upper secondary education including documented proficiency in Swedish corresponding to Swedish B and English corresponding to English A. For students who received/will receive their final school grades after 31 December 2009, there is an additional entry requirement for mathematics as follows: documented proficiency in mathematics corresponding to Mathematics A. And the specific requirements of mathematics, physics and chemistry corresponding to Mathematics D, Physics B and Chemistry A.

Recommended prerequisites

 ID1004, ID1005

Literature

Mark Allen Weiss, C++ for Java Programmers, Prentice Hall, 2004.

Concurrent Programming in Erlang, Prentice Hall, 2001 (elektronisk version).

Examination

  • LAB1 - Laboratory Work, 3.0, grading scale: P, F
  • TEN1 - Examination, 4.5, grading scale: A, B, C, D, E, FX, F

Requirements for final grade

Examination (TEN1; 4.5 hp)
Laboratory course (LAB1; 3 hp)

Offered by

ICT/Software and Computer system

Examiner

Johan Montelius <johanmon@kth.se>

Version

Course syllabus valid from: Autumn 2008.
Examination information valid from: Autumn 2007.