Lectures | Tuesday/Thursday 13:00 - 14:20 ITC317 |
Professor | David Bremner |
Office | ITC321 |
Phone | 447-3300 (This will go straight to voicemail, email is faster) |
bremner ATSIGN unb.ca |
Lectures | Tuesday/Thursday 13:00 - 14:20 ITC317 |
Professor | David Bremner |
Office | ITC321 |
Phone | 447-3300 (This will go straight to voicemail, email is faster) |
bremner ATSIGN unb.ca |
Topic | Understand | Demonstrate |
Operational Semantics | Semantics of simple languages using interpreters or abstract machines. | Define evaluation functions for simple languages. Trace the execution of code including scoping, recursion, conditionals. |
Syntax | EBNF or equivalent notation for grammars. Concrete and abstract syntax | Parse using a grammar. Define and use a data type for abstract syntax. Use pattern matching. |
Higher Order Programming | Functions as first class values. Function composition and combinators, generic functions. | Write folds and other generic functions. Implement simple list operations using folds. |
Scope | Lexical and dynamic scope. Environments. | Trace code using different scoping rules. Implement dynamic and lexical scope. |
Laziness | Eager and lazy evalution. Applications of infinite lists. Substitution and dataflow based laziness. | Trace code under lazy and eager evaluation. Implement lazy and eager evaluation. |
State and Mutatation | Appropriate uses for state. Modelling state. The store. Variables. References and aliasing. | Write non-trivial programs without mutation. Trace code under pass by value and pass by reference. |
Types | Types, basic type inference/checking | Deduce types of expressions, including function types. Structure code using variant types. Implement a simple type checker 1 |
Recursion | Iteration and Tail Recursion. Accumulators and Invariants. Recursive data structures (lists and trees). Let-over-lambda. Practical implementations for recursion. | Design and implement efficient recursive algorithms for lists and trees. Implement evaluators supporting recursive functions. |
Metacircularity and Embedding | Implicit and explicit influence of host language on target. | Explain dangers and benefits of re-using host language features. |
Memory Management | Manual and automatic memory management. Collector and Mutator. Roots. Liveness. Object Graphs. | Trace the life cycle of a linked set of language objects. |
Garbage Collection | Mark and Sweep. Compaction. Copying collectors. Generational Collectors. Reference counting. | Implement a simple garbage collector. |
The main course text will be Programming Languages: Application And Interpretation 3ed
Lab tutorials will be based the Functional Introduction to Computer Science
Later in the course we will look at memory management; the standard reference is The Garbage Collection Handbook
The Spritely Institute Scheme
Primer
that is something like a compressed version of this course. There is
a video on youtube
based on this scheme primer. In the video Christine uses guile, but it
shouldn't make much difference, except that the use-modules
are not
needed for us because racket has more things built in.
Component | Number | Subtotal |
SMoL Tutorials | 13 | 6% |
Programming assignments | 6 | 24% |
Quizzes | 2 | 20% |
Lab Tutorials | 10 | 10% |
Final Exam | 1 | 40% |
Logs of interactive tutorials will be handed in via D2L
There will be 6 programming assignments
There will be two quizzes held in class.
There will be a registrar scheduled final exam in this course. You must pass the final exam to receive better than a D grade in this course.
The following policy applies to all undergraduate and graduate courses taught by me in the current academic term.
Assignments will not be accepted after the posted date and time.
Tests must be completed at the scheduled time.
For the first test or assignment missed in the term for medical or compassionate reasons, a student declaration by email will suffice. Keep in mind that it is an academic offence to submit a false declaration.
For repeated or ongoing issues, or where the student is not comfortable explaining their situation to me, documentation should be obtained from Student Services. Currently, documentation is not required for COVID19 related absences.
In the case of appropriately documented medical or compassionate reasons, the weight of missed tests and assignments may, at my discretion, be redistributed to other components of the course. In general assignment marks will be distributed to assignments, and test marks to tests.
If you are going to miss a significant amount of lectures, an assignment or a test, contacting me by email beforehand will make things easier for both of us.
Unless otherwise listed in the course syllabus, for all courses I teach at UNB, the only supported hardware/software environment is the Faculty of Computer Science Linux Labs.
Currently several labs are available to students. You can use any of the ones marked "General Purpose Linux Lab" for your coursework. Renovations in GC112 are actually complete as of this writing, although that page is not updated.
Note that most labs have scheduled activities in them, so keep that in mind when planning your coursework.
Remote access to the labs is possible via remotelab
In general the software we use is free and quite portable, and you are welcome to install it on your own computer. I will answer questions about this on a best efforts basis.
Note that in particular, hardware, software, or network failure on non FCS facilities (e.g. your laptop) is not a valid excuse for late assignments.
NOTE: Consideration of a request to withdraw
from a course or courses involved in an academic offence will not
be given until the case is resolved.
Academic offences include, but are not limited to, the
following:
A. PLAGIARISM
Plagiarism includes:
NOTE: In courses which include group work, a
penalty may be imposed on all members of the group unless an act of
plagiarism is identified clearly with an individual student or
students.
Procedures
In the case of plagiarism, the instructor must make every reasonable effort to discuss the case with the student or group and follow one of two courses of action:
Penalties for Deliberate Plagiarism
In case of deliberate plagiarism, the penalties are:
First Offence: If the student does not appeal or if, on appeal, the Committee upholds the instructor's allegation:
Subsequent Offence: In cases where the Committee considers that the student has plagiarized again:
B. OTHER ACADEMIC OFFENCES
Procedures
The instructor and, where applicable, the invigilator or other appropriate person shall, where practical, discuss the matter with the student concerned.
The instructor or the instructor's representative, if satisfied that an academic offence has been committed, shall complete an academic offence incident report and shall submit it, together with attached information, to the Registrar. The Registrar shall report it to the Chair of the Department (where applicable) and the Dean of the Faculty concerned. Each case will be referred by the Registrar to the appropriate Committee for review and appropriate action. The Registrar shall inform the student by registered letter and/or electronic mail of the referral to the Committee, the student's right to respond, the wish of the Committee that the student be present when the case is heard, and the procedures involved. A copy of the academic offence report and attached information will be provided to the student in a timely manner. The student is urged to submit to the Committee a written statement regarding the case. A student responding to the decision, shall do so in writing within three weeks of the date of the Registrar's letter of notification.
Penalties
A student who is found guilty of an academic offence will have two penalties imposed:
C. GENERAL