EDAP05 Concepts of Programming Languages
Credits:7.5 hp, Advanced level
Study period: LP2 2019
Locations and times: MA:3 (Mondays, 15:15–17:00) / MH:Gårding (Tuesdays 13:15–15:00)
Start: First class on 4 November, 15:15
Labs: 08:15–10:00 (Thursdays and Fridays, two labs each), 13:15–15:00 (Thursdays, one lab) (labs are over now)
Course responsible: Christoph Reichenbach
TAs: Noric Couderc, Alexandru Dura
Office hours: Wednesdays 13:30 to 15:00 except for week 48; Monday after the lecture until 18:00 in week 48. Location is E:2112b.
Student representatives: Henrik Olsson (henrik.olsson.761 at student...) , Idriss Riouak (idriss.riouak at cs.lth dot se)
Final Exam:17 January (Fri), 14:00--19:00, in MA:10 G-J
Formal course plan: In English and in Swedish.
- 2020-03-28 Re-Exam information (COVID-19 version).. The re-exam will take place on the 14th of April in digital form. From 08:00 to 11:00 you will have a digital quiz in the form of our homework assignments. You will also receive a 20 minute oral exam slot later in the same week. You must pass both. Following university guidelines on COVID-19 examinations, you cannot take the exam for plussning purposes (i.e., to improve your grade after passing earlier).
- 2020-03-09 Exam inspection on 2020-03-12, 09:30 to 11:00 in E:2112B.. Contact the instructor if you want to inspect your exam outside of those hours.
- 2020-02-24 Exam inspection postponed due to illness. New date will be up ASAP.
- 2020-02-07 Exam graded, grades will be up ASAP. Exam inspection will be on 25 February, 14:00 to 17:00. Contact me if this date does not work for you.
- 2020-01-09 Exam information added
- 2019-12-17 Office hours on the 18th will be from 13:00 to 14:00; other office hours available on request on that day.
- 2019-12-17 Labs for the rest of this week are cancelled due to a lack of demand.
- 2019-12-16 We have relaxed the passing requirements so that only the average of all homework grades must be 50%. The requirements for exam bonus points are unaffected..
- 2019-11-20 Due to technical issues, the second homework will be delayed for a few hours; we hope to release it during the day of the 20th.
- 2019-11-08 The online course system is now available. You can use it form a group and select your lab preferences. Use your account token (handed out during class), or contact the instructor if you did not receive one.
- 2019-11-05 Lab session signup will be available on Friday through the Course System. You must form a group first (also in the online system).
- 2019-11-03 The lecture on Monday, 2019-11-04 is cancelled due to sickness. The lecture on the following Tuesday will take place.
- Here is a copy of the exam.
- The exam took place on 17 January (Fri), 14:00--19:00, in MA:10 G-J
- Allowed tools for the exam were:
- One A4 page of hand-written notes (double-sided)
- A non-programmable and non-internet-connected pocket calculator.
- Writing utensils. No red pens/pencils. I recommend black or blue ink (e.g., ballpoint pens, felt pens, fountain pens).
- Participants were permitted a pocket calculator (without wireless connectivity or programmability). These were largely not needed, as any arithmetic needed for the exam was be limited to integer arithmetic between -10 to 10.
- Extra paper was be provided, as needed.
- Since this is was first exam in this class, there were no reference exams. For examples of questions, participants were advised toinstead look at this worksheet. Note that the worksheet was designed with somewhat different content (for a different university), but participants were advised that they should be able to solve the following questions:
- 1 (with "Scala" as an option)
- 4 (a, b, d)
- 9 (substitute "operational semantics" for "denotational semantics")
- 11 (referring to the DivAdd language)
- Students wereguaranteed a passing grade if they achieved 50% of the maximum total points in the exam. Since this was the first ever iteration of the course, the limit was later lowered to 45%.
- Syntax errors did not count as mistakes, unless:
- The syntax error made the answer ambiguous or unclear
- The question directly related to syntax and the exam participants were given a BNF grammar of the language that they were working with
When existing software doesn't provide what we need, programming
langauges are the principal tools that we have to create new
software and understand and adapt existing software. However, these
languages come in many forms and flavours, often with large
communities advocating their use. This can make it hard to
understand what the right language for a given task might be.
In this course, we will explore key concepts that underly the
programming languages of today to better understand what the common
features among today's languages are. The intent of the course is
to help you
- lean new languages more quickly
- compare the suitability of languages for a given task, and
- understand key considerations of language design
The textbook for the course will be Robert Sebesta's Concepts of Programming Languages, which you can find e.g. here (stores listed in alphabetical order):
Older versions of the book may work, but references may be off.
For a more detailed overview of the material that we will be
covering, please have a look at the tentative
list of skills.
To pass the course, you are expected to complete all of the lab
exercises (achieving an average of 50% or more of the maximum points
in each lab exercise, averaged over the five lab exercise scores)
and the exam. For exchange students only, there will be an
alternative option to taking the exam, in that you will have to
complete a side project, write a report, and briefly present your
results in the final class.