Course options and guidance for the Programming Languages topic area
What will I learn from courses in this topic?
Tom Ball and Benjamin Zorn of Microsoft Research recently argued that "industry is ready and waiting for more graduates educated in the principles of programming languages."
Programming languages are the means by which programmers communicate their intent to computers, and to each other. The field of programming languages connects theory with practice: for example, to implement a realistic compiler requires pragmatically realizing automata constructions, parsers, rewriting, and solving NP-complete problems such as graph colouring. Formal program verification draws on logic, type theory and efficient algorithms for symbolic model checking. Yet the discipline of programming languages remains firmly practical, relying on implementability and efficiency as key goals. Advances in programming languages, in the form of better compilers, cleaner programming abstractions, and smarter static analyses and verification techniques, have already had a dramatic impact on practice and offer the potential for major future gains.
The School of Informatics has an international reputation in all of these areas, and researchers at Edinburgh have made many contributions to logic programming, functional programming, types, interactive theorem proving, model-checking, and parallel programming. Courses in this topic are taught by leading researchers in the field, and students undertaking them will be in an excellent position either to work in industry or pursue PhD study.
What background is typically needed?
Most of the courses will assume a good command of the material in the first two (English or European three-year bachelor's) or three (Scottish or American bachelor's) years of a computer science degree. If you don't have this, then don't worry too much: as long as you have good foundation in programming and familiarity with relevant theory (such as languages and automata), most PL courses can be done, though it will be harder work, as you'll have to learn many new concepts.
What courses are available?
Level 11 (MSc) courses
- Secure Programming (10 credits)
- Categories and Quantum Informatics (10 credits)
- Parallel Programming Languages and Systems (10 credits, Semester 2)
Level 10 courses
- Compiling Techniques(20 credits, Semester 2 )