Computer Science 3mi3 - Principles of Programming Languages
(year TBD) Course Homepage

Table of Contents

Communication

This homepage is now under construction for future versions of the course.

Notes

Lecture slides

The slides are available as

  • Online reveal.js 2-dimensional slideshows,
  • printable PDFs, or
  • text-editor friendly plaintext Org files.

Lecture hand-written notes

In some cases, some handwritten notes accompany the slides during lecture.

When necessary and possible, those notes are scanned and made available here. If any are missing that you would like to see, please ask.

Literate programs

Tutorial sessions and the last lecture of each week are usually hands-on live programming sessions. Partial notes will usually be posted ahead of time, with some parts code snippets usually excluded to be filled in during the session.

Literate copies of the programs developed in those lectures and tutorials are available here. In some cases the same notes are used for both a lecture and then a tutorial, in which case there will likely be updates and additions between the two.

Particularly relevant portions of raw code may also be tangled (extracted) into separate files, and then linked to directly here.

Homework

Current homeworks

Unit testing policy

The unit testing policy for homeworks and assignments is laid out in appendix 4, under “Automated unit testing policy” and is repeated below.

Policy

Automated unit tests will be provided for all assignments, and whenever possible and practical, they will also be provided for each homework.

You should not submit the testing files with your assignment contents; it will not cause any problems, but testing files will be ignored and overwritten before testing.

Alongside the files for unit testing, a Docker image will also be provided, in order to ensure that you are able to run the tests in the exact same environment that the course staff will use.

Passing the provided tests is mandatory, but does not guarantee a passing grade (both for homeworks and assignments.)

  • Assignments will undergo a code review by the course staff, and your grade will be influenced just as much or more by your code's approach and style as by passing of tests.
  • Homeworks will undergo a similar, but much more cursory, code review. Barring any obvious issues, you should receive a passing grade if your code passes the tests.

Submissions which do not pass all or a majority of the tests may not be considered for grading at all, at the discretion of the course staff.

During marking, we will typically add some additional tests, often constructed to test what we consider to be more “extreme” cases than are covered by the the provided tests, possibly including interesting edge cases.

  • You are encouraged to try and think of these cases yourselves, and add appropriate tests to the provided ones in order to better check your solutions.
  • You are not expected to submit any updates or additions to the testing files; as mentioned, any submissions of testing files will be ignored and overwritten.

Previous homeworks

Assignments

Current assignments

Literate documentation policy

The literate documentation policy for assignments is laid out in appendix 4, under “Assignment literate documentation” The policy itself is repeated below. Style and content guides can be found in the appendix.

Unit testing policy

The unit testing policy for homeworks and assignments is laid out in appendix 4, under “Assignment literate documentation” The policy is repeated below. Style and content guides can be found in the appendix.

Policy

Automated unit tests will be provided for all assignments, and whenever possible and practical, they will also be provided for each homework.

You should not submit the testing files with your assignment contents; it will not cause any problems, but testing files will be ignored and overwritten before testing.

Alongside the files for unit testing, a Docker image will also be provided, in order to ensure that you are able to run the tests in the exact same environment that the course staff will use.

Passing the provided tests is mandatory, but does not guarantee a passing grade (both for homeworks and assignments.)

  • Assignments will undergo a code review by the course staff, and your grade will be influenced just as much or more by your code's approach and style as by passing of tests.
  • Homeworks will undergo a similar, but much more cursory, code review. Barring any obvious issues, you should receive a passing grade if your code passes the tests.

Submissions which do not pass all or a majority of the tests may not be considered for grading at all, at the discretion of the course staff.

During marking, we will typically add some additional tests, often constructed to test what we consider to be more “extreme” cases than are covered by the the provided tests, possibly including interesting edge cases.

  • You are encouraged to try and think of these cases yourselves, and add appropriate tests to the provided ones in order to better check your solutions.
  • You are not expected to submit any updates or additions to the testing files; as mentioned, any submissions of testing files will be ignored and overwritten.

Previous assignments

Course outline

Outline

The course outline is available as

  • a printer friendly PDF,
  • a screen friendly webpage, or
  • a text-editor friendly Org file.

The webpage is also embedded here for convenience.

Appendices

These appendices complement the other course documents, providing key information both in terms of the content of the course and its administration.

In many cases, information from these appendices will be imported into the other course documents, usually with a note and a link back to the appendix.

Appendix 1 – Notation and conventions

Appendix 2 – Software and tools

Appendix 3 – External resources

Appendix 4 – Assessment policies

Language information

This tab would be used for information regarding the first programming language used in the course. Other such tabs would be added as the course goes on.

Tidbits

Answers to some common or interesting questions that have come up regarding the use of (first language, TBD) in this course can be found in the (first language, TBD) tidbits file,

which will be made available here.

Resources

Herein are collected some general resources for (first language, TBD). These resources may be particularly useful to learn more about the language than what we cover in this course.

Installation instructions

Author: Mark Armstrong

Contact: markparmstrong@gmail.com

Original date:

Last updated: 2021-08-17 Tue 17:31

Created using Emacs 28.0.50 (Org mode 9.4.6)

Validate