CloseHelpPrint
Kies de Nederlandse taal
Course module: 201400173
201400173
Concepts of Programming Languages
Course info
Course module201400173
Credits (ECTS)5
Course typeCourse
Language of instructionEnglish
Contact personprof.dr.ir. M. Aksit
E-mailm.aksit@utwente.nl
Lecturer(s)
Lecturer
prof.dr.ir. M. Aksit
Contactperson for the course
prof.dr.ir. M. Aksit
Academic year2016
Starting block
1B
Application procedureYou apply via OSIRIS Student
Registration using OSIRISYes
Learning goals
After completing this course successfully, the student can independently:
  • understand some recurring complex modularization problems in modern software systems;
  • explain the characteristics of prevalent advanced modularization techniques in different programming languages;
  • identify software composition problems and construct solutions;
  • describe challenges and common pitfalls in designing software modularly;
  • design modular software and identify challenges in implementing the design;
  • describe the principle of different, state-of-the-art programming languages with advanced modularity concepts;
  • explain, analyse, evaluate and compare solutions using alternative programming language paradigms.

The course has some characteristics that the student should be aware of:
  • During the course, the performance of individual students and their groups will be followed closely for the purpose of increasing the performance of students, if possible.
  • The teaching method of this course adopts an interactive approach where the schedule of the lectures and project meetings are interchangeable so that the course is steered according to the performance of the students.
  • The course hours can be used interchangeably for lectures, presentations, project meetings, group meetings and/or for self-study; the schedule updates will be announced at least one week before the date.
  • The attendance is compulsory unless a permission is granted by the lecturer
Content
This course gives an overview of advanced modularization techniques in modern programming languages , focusing especially on the role of composition and compositionality in those paradigms. To cope with the increasing complexity of modern software systems, it is important to ensure a high modularity in the software design and implementation. This course teaches common challenges for developing modular software and programming language concepts that address these challenges. One particular category of problems, so-called crosscutting concerns, is inherently impossible to implement modularly in traditional programming language paradigms, such as object orientation, in which software can only be decomposed along one dimension.  After following this course, students can identify and understand these challenges in practice and can develop solutions using an advanced programming language or by emulating the learned concepts in a traditional language. After the course, the students will get a comprehensive overview of the field of language research and become aware of open research challenges.

The topics covered in this course are: Challenges in structuring modern software:
  • Multiple Views
  • Coordinated behaviour
  • Reuse challenges
  • Evolution challenges
  • Challenges in specific application domains
  • Advanced modularization techniques in languages such as object-oriented, aspect-oriented, reflective languages, dynamically typed languages, etc.
 
Assessment and Organization:
The assessment of this course will have the form of an essay: A set of problems and language modularization techniques will be provided to the students, each outlining a specific functionality or structure of a program and directions into which the program will evolve (e.g., which functionality will be added or modified). One or more challenges will be assigned to the students. Students have to decide which advanced modularization technique is best suited for an implementation and discuss this solution. Code examples should be used to illustrate the solutions, but these may be small or even pseudo code. The emphasis of this course is not on developing programs but on knowing the challenges, modularization techniques and their strengths and weaknesses, as well as on comparing the techniques, e.g., with respect to their support for extensibility and flexibility.

The course has some characteristics that the student should be aware of:
  • During the course, the performance of individual students and their groups will be followed closely for the purpose of increasing the performance of students, if possible.
  • The teaching method of this course adopts an interactive approach where the schedule of the lectures and project meetings are interchangeable so that the course is steered according to the performance of the students.
  • The course hours can be used interchangeably for lectures, presentations, project meetings, group meetings and/or for self-study; the schedule updates will be announced at least one week before the date.
  • The attendance is compulsory unless a permission is granted by the lecturer.
Assumed previous knowledge
-
PARTICIPATING STUDY
M-CSC
Required materials
-
Recommended materials
Course material
The course slides and a selected set of articles.
Instructional modes
Assignment

Lecture

Tests
Assignment

CloseHelpPrint
Kies de Nederlandse taal