ID1218 Applied Programming 7.5 credits
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.
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 cycleFirst cycle
Main field of studyTechnology
Grading scaleA, 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.
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.
Mark Allen Weiss, C++ for Java Programmers, Prentice Hall, 2004.
Concurrent Programming in Erlang, Prentice Hall, 2001 (elektronisk version).
- 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)
ICT/Software and Computer system
Johan Montelius <firstname.lastname@example.org>
Course syllabus valid from: Autumn 2008.
Examination information valid from: Autumn 2007.