Programming Languages and Implementation, CSE3322,
Semester 2, 2006
-
| 2006 Summary |
| year-page | exam |
| 2007 | sample Qs |
| 2006
|
exam
Results summary:
109 students at Clayton and .my:
HD 14 (13%),
D 25 (23%),
C 26 (24%),
P 20 (18%),
N with complete assessment 7 (6%),
N incomplete assessment 14 (13%)
(4 no exam, 1 confiscated; 5 one prac, 8 no prac),
WH 1 (1%),
DEF 2 (2%),
--11/2006.
|
| 2005 | exam |
| 2004 | sample exam |
| 2003 | sample exam |
| 2002 | |
| 2001 | |
- Lectures:
Clayton,
Mon. 1pm 11/H4,
Wed. 9am 11/H4,
as of 4/7/2006.
- Practical assignments:
Read the submission instructions carefully and
also see [assessment] below.
- Week 1, 17-21 July
- L1: History
[notes(click)]
- L2: ML1
[notes(click)]
- Week 2, 24-28 July
(tutorial 1)
- L3: ML2
- L4: ML3
- Week 3, 31 July - 4 August
(tutorial 2)
- L5: ML4
- L6: ML5
- (practical assignment 1 [click], due Fri 4pm)
(see solution [here])
- Week 4, 7-11 August
- L7: ML6
- L8: ML7, e.g.,
[functors, signatures, structures]
- Week 5, 14-18 August
(tutorial 3)
- L9: ML8, e.g. implementing [laziness] in SML.
- L10: ML summary
- Week 6, 21-25 August
(tutorial 4)
- L11: Con1
[notes(click)]
- L12: Con2
- (practical assignment 2 [click], due Fri 4pm)
(see solution [here])
- Week 7, 28 August-1 September
- L13: Con3
- L14: Con4
- Week 8, 4-8 September
- L15: Imp1
[notes(click)]
- L16: Imp2
- Week 9, 11-15 September
- L17: Imp3
- L18: Imp4
- Week 10, 18-22 September
(tutorial 5)
- L19: Imp5.
Order modified,
check [here]
- L20: Imp6
-- semester break, 25-29 September --
- Week 11, 2-6 October
(tutorial 6)
- L21: Imp7
- L22: Imp8
- (practical assignment 3 [click], due Fri 4pm)
(see solution [here])
- Week 12, 9-13 October
(tutorial 7)
- L23: Imp9
- L24: Imp10
- Week 13, 16-20 October
(tutorial 8)
- (practical assignment 4 [click] due Mon 4pm)
(see solution [here])
- L25: [revision]
- Check [news (click)].
|
|
| ML | -- the functional programming language ML (SML). |
| Con | -- Programming language concepts. |
| Imp | -- Implementation of programming languages. |
|
- Dr. Lloyd Allison (.au),
- Dr. Lim Tong Ming (.my),
- NB. Mail must contain "CSE3322" in the
subject line and come from your monash email account or it may be
misdirected or treated as spam.
- Tutes, Clayton
-
[Cameron McCormack]
- www.csse.monash.edu.au/courseware/cse3322/2006/index.shtml
- Final exam (70%), assignments (30%)
- Exam: Closed book, 3 hours.
- Practical work:
- The assignments will be available through the unit's home page.
- Assignment 1: basic ML: Fri 4 Aug (5%),
[solution].
- Assignment 2: advanced ML: Fri 25 Aug (10%),
[solution].
- Assignment 3: implementation-1 : Fri 6 Oct (10%),
[solution].
- Assignment 4: implementation-2 : Mon 16 Oct (5%),
[solution].
Assignments must be received on or before the due date and time.
Late submissions will be penalised at a 5% penalty per day or part thereof.
They will not be accepted more than one week after the due date.
If you believe that your assignment will be delayed because of
circumstances beyond your control, such as illness, you must apply
for an extension before the due date.
Medical certificates or certification supporting your
application will be required.
Assignment Preparation Guide
Unless otherwise advised, your assignment marks for
the unit may be posted on the 3rd-year notice board,
and/or on a unit web-page, next to your student-ID.
Your name will not be on the list, only your ID and
assignment mark. If you do not wish your
mark and student ID to appear on this list please contact
the general office by
Tuesday of week-3 of semester to make alternative arrangements.
Programs required by an assignment must work according to
the given specifications, and must be commented in a clear and thorough way.
If possible you should get your assignment marked by the
tutor in one of the optional tutorial classes for the unit.
If you cannot attend a tutorial, or if the assignment requires it,
then you must submit your
assignment electronically using /cs/cc/bin/submit.
Carefully follow all instructions in
the assigment description.
Furthermore, your submission must include the
following declaration at the top of
the submitted file(s):
Line-1: Line-2: Line-3: ...etc.
|
(* #YOUR_NAME#,
#YOUR_ID_NUMBER#,
#YOUR_MONASH_EMAIL#,
Monash University, Student Declaration for CSE3322 Submission.
I declare that this submission is all
my own work and has not been copied from any other source without attribution.
I acknowledge that severe penalties exist for any copying of code without
attribution including, but not limited to, a mark of zero for this assessment.
*)
|
If any of these requirements is not satisfied,
your assignment will not be marked and
you will receive zero for the assignment.
Plagiarism
It is important that your solutions to the assignment
questions be your own work. It is perfectly acceptable to seek
help and advice when completing the assignments, but this must
not be taken to the point where what is submitted is in part
someone else's work.
Please note that, since the assignments are used in assessing
your final grade in this subject, the following Faculty policy applies.
"Students should note that cheating is regarded as a very
serious offence which is likely to lead not only to failure
in the subject concerned but also to additional penalties
including exclusion. Students should carefully note that
the taking of any unauthorised material into examinations
such as notes and unauthorised dictionaries will be regarded
as cheating. Students should also note that essays,
assignments and other work are generally understood to be
the student's own work and where such work is identical
with, or similar to, another student's work, an assumption
of cheating may arise. Where students wish to undertake work
in conjunction with other students, it is suggested that the
matter be discussed with the lecturer concerned."
Faculty of Computing and Information Technology Handbook
Please consult the Faculty web site for the policy on Academic Cheating.
- The following topics must already be known,
they will not be covered again in CSE3322.
-
- Elementary data structures including lists and binary trees.
- Familiarity with an object-oriented programming language.
- Deterministic and non-determinstic finite state automata.
- Completion of
CSE2303,
CSE2304, and
CSE2305 or
equivalent subjects, is also required.
- Four main textbooks for this subject:
- J.D. Ullman. Elements of ML Programming (2nd Ed.). Prentice Hall, 1998.
- A.V. Aho, R. Sethi and J.D. Ullman. Compilers: Principles, Techniques and Tools. Addison-Wesley, 1986.
- D. Watt. Programming Language Design Concepts. Wiley, 2004.
- A.W. Appel. Modern compiler implementation in ML. Cambridge U. Press, 1998.
-
- Additional reading:
- M. Felleisen and D. Friedman. The Little MLer. MIT Press, 1997.
- L.C. Paulson. ML for the Working Programmer (2nd Ed.). Cambridge U. Press, 1996.
- T.W.Pratt and M.V. Zelkowitz. Programming Languages: Design and Implementation (4th Ed). Prentice Hall, 2001.
- J.C. Mitchell. Concepts in Programming Languages. Cambridge U. Press, 2003.
- R. Sethi. Programming Languages: Concepts and Constructs. Addison-Wesley, 1989.
- R. Wilhelm and D. Maurer. Compiler Design. Addison-Wesley, 1995.
"Here is a language
[Algol-60] so far ahead of its time, that
it was not only an improvement on its predecessors, but
also on on nearly all its successors." --
C. A. R. Tony Hoare,
`Hints on Programming Language Design',
Stanford AI Lab.,
Memo AIM-224, STAN-CS-73-403, Dec. 1973.
Introductory Information

Just a few languages.
|
Welcome
to CSE3322 Programming Languages and Implementation.
The following guide is
given so that you can have a productive semester and so that you can complete
the unit successfully.
Subject Structure
In this subject we will:
Overview the programming language landscape and
the four major language paradigms
--procedural, object-oriented, functional and logic--
and examine functional programming in detail;
Discuss implementation of programming languages
and compiler-generation
tools, such as flex and bison, which facilitate this process.
The lectures will cover the following information:
- Overview and motivation for unit; Brief history of programming languages (1 lecture)
- The functional programming language,
ML (9 lectures)
- Introduction to ML; Arithmetic and Boolean types; Functions
- Characters and strings; Built-in coercion functions; Lists
- Tuples; Pattern-matching
- Matches; Simple Output; Exceptions; Polymorphism
- Type definitions; Datatype definitions
- Higher-order functions; Currying
- Records; Structures; Signatures; Functors; Abstract types
- Built-in libraries; Input/Output; Destructive update of value bindings;
Review the functional programming paradigm.
- Review of ML: Homework answers and assignments
- Programming language concepts and issues (4 lectures);
- Variables: Lifetime; Garbage Collection; Binding mechanisms; Scope
- Types and type systems: Subtypes; Kinds of Polymorphism; Coercion; Checking
and Inference
- Abstraction mechanisms: Procedural abstraction including parameter passing
mechanisms; Abstract data types; Modules; Objects
- Main programming paradigms: Imperative,
Object-oriented; Functional; Logic; Possible new
paradigms--DNA computing.
- Implementation of programming languages (10 lectures).
- Overview of programming language implementation: Interpretation vs
compilation; Main phases in a compiler; Virtual/abstract machines.
- Lexical analysis: Regular expressions; Converting NFA to DFA; DFA minimisation;
Lexer tools.
- Syntax analysis I: Context-free grammars; Top down vs bottom up
parsing; Recursive descent
parsing; Left-recursion removal and left-factoring
- Syntax analysis II: Table-driven predictive parsing; First and
Follow sets; Construction of table; LL(1) grammars
- Syntax analysis III: Table-driven bottom-up parsing; LR parsing.
- Syntax analysis IV: Construction of SLR parsing table;
Parser generators.
- Syntax analysis V: Generic bottom-up parsing--The CKY algorithm;
Chomsky Normal Form (CNF); Conversion into CNF; Assignment
- Semantic analysis I: Attribute grammars
- Semantic analysis II: Type inference; Common program optimisations
- Code generation: Run-time system; Intermediate code; Abstract
machine; Code selection Register allocation; Compilation of object-oriented languages.
In addition there may be one or two revision lectures.
Lloyd Allison,
B. Computer Science,
B. Software Engineering,
B. Science (Computer Science), &
related double degrees,
Faculty of Information Technology (Bldg#75, Clayton),
Monash University,
Australia 3800.
Created with "vi (Linux & Solaris)",
charset=iso-8859-1.
Last modified Thursday, 21-Dec-2006 16:18:05 EST,
www.csse.monash.edu.au/courseware/cse3322/2006/index.shtml,
fetched Sunday, 08-Nov-2009 07:22:35 GMT.