This paper deals with the design, implementation and use of programming languages. Topics will be selected from the following:
- the history and future of programming languages
- grammars and parsing techniques
- language implementation issues (interpreters, compilers, garbage collection)
- practical language semantics
- language support for object-orientation
- declarative programming languages
Students will be able to:
- write programs in at least one functional language, which will mean solving computational problems and using such a language to define functions and modules which express those solutions;
- describe what functions are defined by a piece of code in this language;
- explain what those functions do;
- compare and evaluate different solutions to problems written in different languages;
- express the standard semantics for common imperative language constructs
- write a simple interpreter for an imperative language in a functional language./li>
COMP200 Computer Systems and one of
COMP203 Programming with Data Structures or
COMP241 Software Engineering Development
Official Timetable Information
On average you should expect to spend 12-14 hours per week on this course, in the following proportions: Lectures:3, Reading:2, Practicals:7-9.
This is an open-source textbook---we will be working through some of it during the course.
"The Haskell School of Expression", Paul Hudak, Cambridge University Press.
"Programming in Haskell", Graham Hutton, Cambridge University Press.
"The Denotational Description of Programming Languages", Michael Gordon, Springer-Verlag
The paper will be supported in Moodle.
Programming work will be done in lab 6 (though this is yet to be confirmed).
Assignments must be submitted, via Moodle, by the due date. All assignments must be submitted as as plain text since we will want to run your programs etc. We will not mark submissions in any other format. We will try to get assignments marked within two weeks.
Internal assessment/final examination ratio 1:0
Internal assessment will consist of several individual programming assignments, and some tests.
An overall mark of 50% is required for a pass.
Lecture attendance is expected. The course handouts provided are not comprehensive (they are really to guide me through the material—I'll say and do much more in the lectures than is written on the handouts), so additional material will be covered in the lectures. You are responsible for taking note of all material covered in the lectures.
Follow this link for Academic Integrity information and this link for detailed explanation of How to prevent plagiarism in Computer Science assessment items.
Follow this link for information on Performance Impairment.
Student Concerns and Complaints
Follow this link for Student Concerns and Complaints information.
Application for Extension
Follow this link for information on applying for an Extension.
Review of Grade
Follow this link for information on applying for a Review of Grade.
Your attention is drawn to the following regulations and policies, which are published in the University Calendar: