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-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.
- The exam will take place on 17 January (Fri), 14:00--19:00, in MA:10 G-J
- Allowed tools for the exam are:
- 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).
- While you may bring a pocket calculator, I expect that you will not need one, as any arithmetic needed for the exam will be limited to integer arithmetic between -10 to 10.
- Extra paper will be provided, as needed.
- Since this is the first exam in this class, there are no reference exams. For examples of questions, you can instead look at this worksheet. Note that the worksheet was designed with somewhat different content (for a different university), but you 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)
- You are guaranteed a passing grade if you achieve 50% of the maximum total points in the exam.
- Syntax errors will not count as mistakes, unless:
- The syntax error makes the answer ambiguous or unclear
- The question directly relates to syntax and you are given a BNF grammar of the language that you are 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.