Students

COMP332 – Programming Languages

2013 – S2 Day

General Information

Download as PDF
Unit convenor and teaching staff Unit convenor and teaching staff Unit Convenor
Anthony Sloane
Contact via anthony.sloane@mq.edu.au
E6A315
Monday 11-12, Friday 11-12, or by appointment
Credit points Credit points
3
Prerequisites Prerequisites
39cp and (COMP225(P) or COMP229(P))
Corequisites Corequisites
Co-badged status Co-badged status
Unit description Unit description
The study of programming languages is important because of the central role that programming, of one form or another, plays in computing. This unit aims to provide students with a comprehensive view of the features of modern programming languages, and to introduce students to the implementation of these languages. The two aims are pursued in parallel; the syntax and semantics of programming languages are discussed at the same time as the necessary implementation techniques. These lectures are supplemented by practical exercises in language implementation.

Important Academic Dates

Information about important academic dates including deadlines for withdrawing from units are available at https://www.mq.edu.au/study/calendar-of-dates

Learning Outcomes

On successful completion of this unit, you will be able to:

  • Understand the role that languages play in software development and be familiar with a spectrum of software languages that are in current use.
  • Express properties of software languages using formal notations.
  • Translate formal notations of software language properties into implementations of language processors.
  • Demonstrate that a language processor is operating correctly by construction and use of appropriate test cases.

Assessment Tasks

Name Weighting Due Groupwork/Individual Short Extension AI Approach
Weekly Exercises 10% Weeks 2-13 No
Assignment Three 10% Week 13 No
Final Examination 45% Exam Period No
Assignment One 10% Week 5 No
Assignment Two 10% Week 9 No
Mid-Semester Exam 15% October 3 No

Weekly Exercises

Due: Weeks 2-13
Weighting: 10%
Groupwork/Individual:
Short extension 3: No
AI Approach:

You will be asked to submit solutions to one or more short written exercises or programming problems. Your tutor will assess your solutions and provide comments in the next class.


On successful completion you will be able to:
  • Understand the role that languages play in software development and be familiar with a spectrum of software languages that are in current use.
  • Express properties of software languages using formal notations.
  • Translate formal notations of software language properties into implementations of language processors.
  • Demonstrate that a language processor is operating correctly by construction and use of appropriate test cases.

Assignment Three

Due: Week 13
Weighting: 10%
Groupwork/Individual:
Short extension 3: No
AI Approach:

The three assignments involve specifying, implementing, testing and documenting parts of a programming language implementation. The third assignment focuses on translating a language into some other form, such as another structured language (e.g., translating a programming language into a lower-level form such as bytecode or assembly language).


On successful completion you will be able to:
  • Understand the role that languages play in software development and be familiar with a spectrum of software languages that are in current use.
  • Express properties of software languages using formal notations.
  • Translate formal notations of software language properties into implementations of language processors.
  • Demonstrate that a language processor is operating correctly by construction and use of appropriate test cases.

Final Examination

Due: Exam Period
Weighting: 45%
Groupwork/Individual:
Short extension 3: No
AI Approach:

The final examination will be a three-hour examination held during the usual University examination period and together with the mid-semester examination will cover all topics.


On successful completion you will be able to:
  • Understand the role that languages play in software development and be familiar with a spectrum of software languages that are in current use.
  • Express properties of software languages using formal notations.
  • Translate formal notations of software language properties into implementations of language processors.

Assignment One

Due: Week 5
Weighting: 10%
Groupwork/Individual:
Short extension 3: No
AI Approach:

The three assignments involve specifying, implementing, testing and documenting parts of a programming language implementation. The first assignment focuses on processing the syntax of a language to obtain a representation that the rest of the implementation can use.


On successful completion you will be able to:
  • Understand the role that languages play in software development and be familiar with a spectrum of software languages that are in current use.
  • Express properties of software languages using formal notations.
  • Translate formal notations of software language properties into implementations of language processors.
  • Demonstrate that a language processor is operating correctly by construction and use of appropriate test cases.

Assignment Two

Due: Week 9
Weighting: 10%
Groupwork/Individual:
Short extension 3: No
AI Approach:

The three assignments involve specifying, implementing, testing and documenting parts of a programming language implementation. The second assignment focuses on the semantics of a language by processing the representation produced by syntax analysis to check language rules and provide information needed for later processing.


On successful completion you will be able to:
  • Understand the role that languages play in software development and be familiar with a spectrum of software languages that are in current use.
  • Express properties of software languages using formal notations.
  • Translate formal notations of software language properties into implementations of language processors.
  • Demonstrate that a language processor is operating correctly by construction and use of appropriate test cases.

Mid-Semester Exam

Due: October 3
Weighting: 15%
Groupwork/Individual:
Short extension 3: No
AI Approach:

The mid-semester examination will be held in the week 8 lecture block. This examination will test your understanding of the material from weeks 1-5, and will be 60 minutes long.


On successful completion you will be able to:
  • Understand the role that languages play in software development and be familiar with a spectrum of software languages that are in current use.
  • Express properties of software languages using formal notations.
  • Translate formal notations of software language properties into implementations of language processors.

Delivery and Resources

CLASSES

Each week of COMP332 has three hours of lecture and a two hour mixed class. The mixes classes will require a mixture of tutorial-style and practical work. Mixed classes start in Week 1.

REQUIRED AND RECOMMENDED TEXTS AND/OR MATERIALS

There is no required text for COMP332. We will provide notes or references to freely available materials where relevant.

Students may find it useful to consult one of the many books that are available on the programming lanugages topic. The following books are among those that are available in the Macquarie University Library:

  • Programming Language Pragmatics. Scott.
  • Principles of programming languages: design, evaluation, and implementation. MacLennan.
  • Programming languages: design and implementation. Pratt and Zelkowitz.
  • Concepts of programming languages. Sebesta.
  • Programming languages: concepts and constructs. Sethi.
  • Introduction to compiler construction. Waite and Carter.
  • Compilers: principles, techniques and tools. Aho, Sethi, and Ullman.
  • Modern compiler implementation in Java. Appel.

UNIT WEBPAGE AND TECHNOLOGY USED AND REQUIRED

COMP332 Web Home Page: http://www.comp.mq.edu.au/units/comp332/

COMP332 uses iLearn for delivery of class materials, discussion boards, online selftests, submission of assessment tasks and access to marks and comments. Students should check the iLearn site regularly for unit updates.

Questions regarding the content of this unit, its tutorials or practicals should be posted to the appropriate discussion board on iLearn. In particular, any questions which are of interest to all students in this unit should be posted to one of these discussion boards, so that everyone can benefit from the answers.

The practical work in this unit involves programming in the Scala language (http:// www.scala- lang.org) which will give students experience with modern programming language features that we expect to see in mainstream languages in the future.

We will also use the Kiama language processing library (http://kiama.googlecode.com) that is being developed by our Programming Languages Research Group. Kiama provides high-level facilities for writing processors such as compilers in Scala and makes it possible for students to implement of a language from scratch within the semester.

Instructions will be provided on how to use Scala and Kiama on the laboratory machines and how to download it for use on your own machines.

 

Unit Schedule

Week Topic
1 Introduction
1-2 Syntax
3 Names
4 Semantic analysis
5 Functional programming 
6 Types
7 Transformation; compilation
  Lecture Recess - Two Weeks
8 Mid-semester exam; Language runtimes; interpretation
9-12

Software languages: including scripting languages, web languages and domain-specific languages.

13 Review, Exam Discussion

Policies and Procedures

Macquarie University policies and procedures are accessible from Policy Central. Students should be aware of the following policies in particular with regard to Learning and Teaching:

Academic Honesty Policy http://www.mq.edu.au/policy/docs/academic_honesty/policy.html

Assessment Policy  http://www.mq.edu.au/policy/docs/assessment/policy.html

Grading Policy http://www.mq.edu.au/policy/docs/grading/policy.html

Grade Appeal Policy http://www.mq.edu.au/policy/docs/gradeappeal/policy.html

Grievance Management Policy http://mq.edu.au/policy/docs/grievance_management/policy.html

Special Consideration Policy http://www.mq.edu.au/policy/docs/special_consideration/policy.html

In addition, a number of other policies can be found in the Learning and Teaching Category of Policy Central.

Department of Computing Special Consideration Policy

If you apply for Special Consideration and it is judged by the Department of Computing that your performance on an examination has been affected adversely by the circumstances documented in the consideration request, you will be required to sit a Supplementary Examination. The Supplementary Examination will normally be scheduled after the official examination period, but may be earlier in the case of a mid-semester examination. For details see the Special Consideration policy specific to the Department of Computing.

Student Support

Macquarie University provides a range of Academic Student Support Services. Details of these services can be accessed at: http://students.mq.edu.au/support/

UniWISE provides:

  • Online learning resources and academic skills workshops http://www.students.mq.edu.au/support/learning_skills/
  • Personal assistance with your learning & study related questions.
  • The Learning Help Desk is located in the Library foyer (level 2).
  • Online and on-campus orientation events run by Mentors@Macquarie.

Student Services and Support

Students with a disability are encouraged to contact the Disability Service who can provide appropriate help with any issues that arise during their studies.

Student Enquiries

Details of these services can be accessed at http://www.student.mq.edu.au/ses/.

IT Help

If you wish to receive IT help, we would be glad to assist you at http://informatics.mq.edu.au/help/

When using the university's IT, you must adhere to the Acceptable Use Policy. The policy applies to all who connect to the MQ network including students and it outlines what can be done.

Graduate Capabilities

Discipline Specific Knowledge and Skills

Our graduates will take with them the intellectual development, depth and breadth of knowledge, scholarly understanding, and specific subject content in their chosen fields to make them competent and confident in their subject or profession. They will be able to demonstrate, where relevant, professional technical competence and meet professional standards. They will be able to articulate the structure of knowledge of their discipline, be able to adapt discipline-specific knowledge to novel situations, and be able to contribute from their discipline to inter-disciplinary solutions to problems.

This graduate capability is supported by:

Learning outcomes

  • Understand the role that languages play in software development and be familiar with a spectrum of software languages that are in current use.
  • Express properties of software languages using formal notations.
  • Translate formal notations of software language properties into implementations of language processors.
  • Demonstrate that a language processor is operating correctly by construction and use of appropriate test cases.

Assessment tasks

  • Weekly Exercises
  • Assignment Three
  • Final Examination
  • Assignment One
  • Assignment Two
  • Mid-Semester Exam

Critical, Analytical and Integrative Thinking

We want our graduates to be capable of reasoning, questioning and analysing, and to integrate and synthesise learning and knowledge from a range of sources and environments; to be able to critique constraints, assumptions and limitations; to be able to think independently and systemically in relation to scholarly activity, in the workplace, and in the world. We want them to have a level of scientific and information technology literacy.

This graduate capability is supported by:

Learning outcomes

  • Understand the role that languages play in software development and be familiar with a spectrum of software languages that are in current use.
  • Express properties of software languages using formal notations.
  • Translate formal notations of software language properties into implementations of language processors.
  • Demonstrate that a language processor is operating correctly by construction and use of appropriate test cases.

Assessment tasks

  • Weekly Exercises
  • Assignment Three
  • Final Examination
  • Assignment One
  • Assignment Two
  • Mid-Semester Exam

Problem Solving and Research Capability

Our graduates should be capable of researching; of analysing, and interpreting and assessing data and information in various forms; of drawing connections across fields of knowledge; and they should be able to relate their knowledge to complex situations at work or in the world, in order to diagnose and solve problems. We want them to have the confidence to take the initiative in doing so, within an awareness of their own limitations.

This graduate capability is supported by:

Learning outcomes

  • Express properties of software languages using formal notations.
  • Translate formal notations of software language properties into implementations of language processors.
  • Demonstrate that a language processor is operating correctly by construction and use of appropriate test cases.

Assessment tasks

  • Weekly Exercises
  • Assignment Three
  • Final Examination
  • Assignment One
  • Assignment Two
  • Mid-Semester Exam

Creative and Innovative

Our graduates will also be capable of creative thinking and of creating knowledge. They will be imaginative and open to experience and capable of innovation at work and in the community. We want them to be engaged in applying their critical, creative thinking.

This graduate capability is supported by:

Learning outcomes

  • Express properties of software languages using formal notations.
  • Translate formal notations of software language properties into implementations of language processors.
  • Demonstrate that a language processor is operating correctly by construction and use of appropriate test cases.

Assessment tasks

  • Weekly Exercises
  • Assignment Three
  • Assignment One
  • Assignment Two

Effective Communication

We want to develop in our students the ability to communicate and convey their views in forms effective with different audiences. We want our graduates to take with them the capability to read, listen, question, gather and evaluate information resources in a variety of formats, assess, write clearly, speak effectively, and to use visual communication and communication technologies as appropriate.

This graduate capability is supported by:

Learning outcomes

  • Express properties of software languages using formal notations.
  • Translate formal notations of software language properties into implementations of language processors.
  • Demonstrate that a language processor is operating correctly by construction and use of appropriate test cases.

Assessment tasks

  • Weekly Exercises
  • Assignment Three
  • Final Examination
  • Assignment One
  • Assignment Two
  • Mid-Semester Exam

Assessment Standards

COMP332 will be assessed and graded according to the University assessment and grading policies.

SUBMISSION DEADLINES

Assessment deadlines are strict, unless an application for special consideration is received (preferably in advance) accompanied by appropriate documentary evidence. Late submissions will be penalised at the rate of 20% of the full marks for the assessment per day or part thereof late.

STANDARDS

The following general standards of achievement will be used to assess each of the assessment tasks with respect to the letter grades. 

Pass: Can correctly reproduce facts and definitions across a breadth of concepts, but lacks depth of understanding. Can use notations to specify familiar language concepts in ways that are close to those discussed in lectures or notes. Can implement and test the basic features of a programming language similar to examples provided. Uses basic standards for code comprehension such as variable naming or documentation. Adheres to basic standards for presentation of written work. Can produce a basic description of the main aspects of a software system. Can describe basic test cases for software under study.

Credit/Distinction: As for Pass plus: Exhibits breadth and depth of understanding of concepts. Can use terminology accurately in new contexts. Can express ideas in their own words and has an understanding of the limits of their understanding. Can apply formal notations to describe language concepts that have not previously been seen. Can use provided general techniques to implement language concepts whose detailed implementation in code has not previously been discussed. Has well-developed skills for writing comprehensible, modular and well-documented code. Able to describe all or relevant aspects of a software system to an appropriate level of detail. Can articulate the principles behind the design of a suite of test cases.

High Distinction: As for Credit/Distinction plus: Is aware of the context in which the concepts are developed and their limitations. Able to generate and justify principles and hypotheses for existing or new concepts. Can recognise the limitations of formal notations for specifying some language concepts and is able to propose alternatives. Can develop new techniques to implement language concepts beyond those provided. Can critically evaluate aspects of the software system under study and the appropriateness of testing as a method for demonstrating software correctness.

ASSESSMENT PROCESS

These assessment standards will be used to give a numeric mark out of 100 to each assessment submission during marking. The mark will correspond to a letter grade for that task according to the University guidelines. The final raw mark for the unit will be calculated by combining the marks for all assessment tasks according to the percentage weightings shown in the assessment summary.

We will look at your overall performance on all assessments when determining your final grade. A total raw mark of at least 50% and a mark of at least 50% on the examinations taken together will be sufficient to pass the unit. Students who do not meet this cut-off will be examined on a case-by-case basis.

On occasion your raw mark for the unit may not be the same as the Standardised Numeric Grade (SNG) which you receive as the result. Under the Senate guidelines, raw marks may be scaled to ensure that there is a degree of comparability across the university, so that units with the same past performances of their students should achieve similar results.

 

 

 

Changes since Last Offering

This offering of COMP332 changes the emphasis of the unit somewhat away from standard programming languages and compilers as taught in previous offerings. We still cover programming language topics, but consider them from the perspective of software languages in general. Instead of spending a lot of time discussing different programming language features we focus on the basics in the unfamiliar setting of functional programming languages. New topics discuss important classes of modern languages such as scripting languages and languages used in web technology.