INF329 / Selected topics in programming theory
ContentsThere is a common understanding that current software is brittle:
it is difficult to develop, understand and modify.
Tools that help us work with software are still rudimentary, in spite
of the general ideas being known for decades.
What are the reasons for this?
The main reason is perhaps historical. Most major programming languages
and concepts were conceived before the central programming notions
were fully understood. This meets us everywhere, from arrays in C/C++
(being modelled on 1960's hardware implementation rather than being a type)
and a horrendous variation in parameter passing mechanisms (motivated by
efficiency concerns in the 1970's), to the mix-up between the notions of
specification and implementation and the related confusion between code
reuse, typing disciplines and pointers in object-oriented programming.
In this course we will reexamine our knowledge about programming,
and put the notions we need together in such a way that we achieve
- a formal understanding of specification and programming concepts,
- a notation easy to analyse by tools and understand by humans,
- a specification and programming flexibility beyond the syntactic
confines we are locked in today,
and such that it all readily links up with the pragmatics of efficient,
ObjectivesTeaching in special topics at Master- and PhD-level.
Course offered (semester)Occasionally.
Language of InstructionNorwegian. English if required.
Assessment / Examination FormatWritten exam. If less than 20 students are taking the course, it can be oral exam.