#acl beatrice,henrikbe:read,write,delete,revert,admin All:read = Dynamic Programming Languages = == Requirements == == Aim == Having successfully completed the course with grade E or higher, a student should be able to: 1. use at least one dynamic language (such as Ruby and Python), or scripting language, in program development, both as application languages, as embedded languages and scripting tools. 2. quickly pick up other dynamic programming languages with imperative core. 3 use prototype-based programming languages. 4. reason about the effects of choosing a dynamic programming language over a systems programming language (or vice versa), for a project with respect to design, programming, testing, static checking, maintenance, memory, speed and safety. 5. reason about the philosophy of the languages used in the course, how this philosophy is affected by language change and additions, enough to interact with communities around dynamic programming languages. 6. use metapogramming and reason about the effects of using metaprogramming instead of "traditional programming" in a project. 7. analyse her own beliefs and preconceptions about dynamic programming languages, their underlying rationale and criticise them. 8. discuss current trends in the programming language developing communities and research community such as gradual typing and relate these to more mature concepts such as duck typing and structural typing. == Syllabus ==