CSCI3180 Principles of Programming Languages


Course code CSCI3180
Course title Principles of Programming Languages
Course description This course introduces, analyses and evaluates the important concepts found in current programming languages. The concepts are illustrated by contrasting their appearances in different languages. Major topics include: concepts, paradigms and implementation techniques.
Unit(s) 3
Course level Undergraduate
Pre-requisite CSCI2100 or 2520 or ESTR2102
Exclusion ESTR3106
Semester 2
Grading basis Graded
Grade Descriptors A/A-:  EXCELLENT – exceptionally good performance and far exceeding expectation in all or most of the course learning outcomes; demonstration of superior understanding of the subject matter, the ability to analyze problems and apply extensive knowledge, and skillful use of concepts and materials to derive proper solutions.
B+/B/B-:  GOOD – good performance in all course learning outcomes and exceeding expectation in some of them; demonstration of good understanding of the subject matter and the ability to use proper concepts and materials to solve most of the problems encountered.
C+/C/C-: FAIR – adequate performance and meeting expectation in all course learning outcomes; demonstration of adequate understanding of the subject matter and the ability to solve simple problems.
D+/D: MARGINAL – performance barely meets the expectation in the essential course learning outcomes; demonstration of partial understanding of the subject matter and the ability to solve simple problems.
F: FAILURE – performance does not meet the expectation in the essential course learning outcomes; demonstration of serious deficiencies and the need to retake the course.
Learning outcomes 1. Exposure to, and understanding of all major programming paradigms;
2. The ability to assess new paradigms and languages;
3. The understanding of how to describe and read programming language syntax descriptions;
4. Knowledge of how syntax descriptions are processed by programming languages;
5. Understanding of the different kinds of PL semantic analysis approaches;
6. Ability to identify differences in different semantic analysis conventions;
7. Ability to consider how to design new programming languages;
8. Understanding of how to determine which principles drive which programming language, and how to carry those through to PL design. 
(for reference only)
Final exam: 40%
Project: 30%
Assignments: 30%
Recommended Reading List 1. PROGRAMMING LANGUAGES, Principles and Practices, By Louden.
2. Concepts of Programming Languages by Sebesta
3. Programming Languages, Design and Implementation, by Pratt and Zelkowitz


CSCIN programme learning outcomes Course mapping
Upon completion of their studies, students will be able to:  
1. identify, formulate, and solve computer science problems (K/S); TPM
2. design, implement, test, and evaluate a computer system, component, or algorithm to meet desired needs (K/S);
3. receive the broad education necessary to understand the impact of computer science solutions in a global and societal context (K/V);
4. communicate effectively (S/V);
5. succeed in research or industry related to computer science (K/S/V);
6. have solid knowledge in computer science and engineering, including programming and languages, algorithms, theory, databases, etc. (K/S); TPM
7. integrate well into and contribute to the local society and the global community related to computer science (K/S/V);
8. practise high standard of professional ethics (V);
9. draw on and integrate knowledge from many related areas (K/S/V);
Remarks: K = Knowledge outcomes; S = Skills outcomes; V = Values and attitude outcomes; T = Teach; P = Practice; M = Measured