CM20318: Comparative Programming Languages
Unit Catalogue
CM20318
Some links
- Programming Languages Influence Network
- Another
network, more up-to-date
- Undefined Behaviour in
2017 Reflecting on the state of C/C++ with a list of about 200
places in C/C++ where behaviour is undefined
- More on undefined behaviour in C
- Functional
Programming on Wikipedia
- List
of functional languages
- Functional Programming
For The Rest of Us from a Java perspective
- Mostly
adequate guide to FP (in javascript)
- History
of Lisp by John McCarthy
- Structure
and Interpretation of Computer Programs full text
- Structure
and Interpretation of Computer Programs Video Lectures by Hal Abelson
and Gerald Jay Sussman
- Hyperpolyglot comparison
of Common Lisp, Scheme, Clojure and Emacs Lisp
- Haddocks' Eyes, with
some
explanation
- The Funarg
problem
- Technical
Issues of Separation in Function Cells and Value Cells Lisp-1 vs Lisp-2
- Boehm garbage
collector for C and C++. This contains several links to GC literature
- Visualizing Garbage Collection Algorithms
- Glasgow Haskell Compiler;
ghc and ghci interactive r-e-p loop
- Wikibook on Haskell
- Learn You a Haskell for
Great Good!
- Scala
an OO
functional language that uses the Java virtual machine
- Curry-Howard
Isomorphism
- Erlang Practical functional
- Rust A post-C language
- Go A post-C language
- Swift A post-C language
- Lua Scripting, procedural, functional,
bytecode
- OCaml Functional (and imperative and OO)
- The C Object System: Using C as a
High-Level Object-Oriented Language
- Compiler
error messages from the Apple MPW C compiler
- Ten
Things I Hate About Object-Oriented Programming
- C++ as a
Multiparadigm Language including reflections on why OO is not a
panacea
- Go and Rust - objects without
class
- Composition
over inheritance
- Entity-Component-Systems
- Resource Acquisition Is
Initialization (RAII)
- A
Brief, Incomplete, and Mostly Wrong History of Programming Languages
- Facebook's
New Spam-Killer Hints at the Future of Coding
using Haskell
- Rosetta Code
solutions to tasks in many languages
- Esolang an
esoteric programming languages wiki
- Use after free
and dangling pointers
- The
worst mistake of computer science about how NULL is a big problem
- Null References: The Billion Dollar Mistake
- The
Semipredicate Problem how to deal with errors
-
Wikipedia
list of programming languages
- Advice on avoiding basic errors in
C
C++
Java
- Comparing
implementations of a network driver in
C, Rust, Go, C#, Java, OCaml, Haskell, Swift, Javascript, and Python
- Object-Oriented
Programming - The Trillion Dollar Disaster Why it's time to move on
from OOP
- How Many Lines of C it Takes to Execute a + b in Python?
- Zero Overhead Principle
- Literate
Programming
Wikipedia articles tend to be fairly accurate in this area, but always treat
Wikipedia as the start, not the end, of your research.
The Exam
At the end of the Semester 2 (100%)
Online Past Papers
Past papers for CM20318.
Past
Papers for CM20253 are a good source for the kind of questions that might
appear in CM20318 (though the CM20318 paper will be answer three out of
a choice of four).
Moodle
Not much on
the Moodle
page, anything interesting will be on this Web page.
Slides
These will be released after the relevant lecture: there is no
substitute to having the material go through your brain at least once!
Note that these slides are reminders to me as to what topics I should cover:
as with all units you are expected to read around the subject and refer to your
lecture notes. Don't treat the slides as the entirety of your study. Or as model
answers for the exam!
The file numbers don't correspond to anything in particular in terms of
lectures or subject covered.
I may have skipped some material in lectures: why not improve your general
education and read the extra too! The exam will only be set on material covered
in lectures and your lecture notes will tell you what
was covered in lectures.
slides01.pdf
slides02.pdf
slides03.pdf
slides04.pdf
slides05.pdf
slides06.pdf
slides07.pdf
slides08.pdf
slides09.pdf
slides10.pdf
slides11.pdf
slides12.pdf
slides13.pdf
slides14.pdf
slides15.pdf
slides16.pdf
slides17.pdf
slides18.pdf
slides19.pdf
slides20.pdf
slides21.pdf
slides01.docx
slides02.docx
slides03.docx
slides04.docx
slides05.docx
slides06.docx
slides07.docx
slides08.docx
slides09.docx
slides10.docx
slides11.docx
slides12.docx
slides13.docx
slides14.docx
slides15.docx
slides16.docx
slides17.docx
slides18.docx
slides19.docx
slides20.docx
slides21.docx