Hide menu

TDDA69 Data and Program Structures

Activities

Submission instructions

To submit your exercises and labs:
  • First you will need to add the following two lines to your .bashrc file:

    alias start-tdda69="module add /courses/TDDA69/modulefiles/tdda69"
    alias stop-tdda69="module rm /courses/TDDA69/modulefiles/tdda69"

    To edit your .bashrc file you can do atom ~/.bashrc. After restarting the terminal, you can then load the environment for TDDA69 in your console with start-tdda69 and unload it with stop-tdda69. It enables a python environment which contains all the modules needed for the exercises and labs.
  • Create a git repository: git init TDDA69
  • In a terminal you can now:

    cd TDDA69
    jupyter notebook

  • Later when you are registered on webreg and you have received access to your gitlab repository you can do: git remote add origin git@gitlab.liu.se:tdda69-20XX/gr-XX.git git push -u origin master
  • Exercises should be put in the top folder of your repository.
  • For the labs, follow the instructions.
  • Download the submissions.txt file and save it in the root of your repository. Use that file to indicate when you are done with an exercise or a lab. Before submitting an exercise, make sure to select Kernel / Restart & Run All on thinlinc or a lab computer, as I will run this before looking at the exercise. For the labs, run the tests on thinlinc or a lab computer.

Teaching Activities

  • Lecture 1 Introduction (01_introduction.pdf)
    • Introduction the course
  • Lecture 2 Concepts and models of programming languages (video slides)
    • Recommended week: 3
    • Introduction to programming concepts (Chapter 1)
    • Exercise 1: Parsing Programming Languages Ex1.ipynb
  • Lecture 3 Declarative Computation Model (video slides)
    • Recommended week: 3
    • Declarative Computation Model (Chapter 2)
    • Substitution model (Section 1.1 and 4.2 of SICP)
    • Exercise 2: Substitution model Ex2.ipynb
  • Lecture 4 Declarative Programming Techniques (video slides)
    • Recommended week: 4
    • Declarative Programming Techniques (Chapter 3)
    • Exercise 3: Recursive functions Ex3.ipynb
    • Exercise 4: Tail-call Ex4.ipynb
    • Exercise 5: High-order functions Ex5.ipynb
  • Lecture 5 Declarative Computation Implementation (video slides)
    • Recommended week: 5-7
    • Substitution model (Section 1.1 and 4.2 of SICP)
    • Lab 1: Substitution Evaluator, normal order Lab1.pdf
    • Lab 2: Substitution Evaluator, applicative order Lab2.pdf
  • Lecture 6 Declarative Concurrency (video slides)
    • Recommended week: 7-8
    • Declarative Concurrency (Chapter 4)
    • Lab 3: Lazy variable Lab3.pdf
    • Exercise 6: Threading and synchronisation Ex6.ipynb
  • Lecture 7 Message Passing Concurrency (video slides)
    • Recommended week: 8
    • Message-Passing Concurrency (Chapter 5)
    • Exercise 7: Message Passing Ex7.ipynb
  • Lecture 8 Explicit State and Imperative Model (video slides)
    • Recommended week: 8-9
    • Explicit State (Chapter 6)
    • Environement Model of Evaluation (Section 3.2 of SICP)
    • python tutor
    • Exercise 8: Environment Model Ex8.ipynb
  • Lecture 9 Imperative Programming Techniques (video slides)
    • Recommended week: 9
    • Object-Oriented Programming (Chapter 7)
    • Exercise 9: Imperative Programming and Object Orientation Ex9.ipynb
  • Lecture 10 Imperative Programming Implementation (video slides SimpleBytecode.txt)
    • Recommended week: 10,15-16
    • Computing with Register Machines (Chapter 5 of SICP)
    • Lab 4: Bytecode executon Lab4.pdf
    • Exercise 10: Bytecode generation Ex10.ipynb
  • Lecture 11 Shared-State Concurrency (video slides)
    • Recommended week: 16
    • Shared-state concurrency (Chapter 8) and Distributed (Chapter 11)
    • Exercise 11: Shared-State Concurrency Ex11.ipynb
  • Lecture 12 Relational Programming (video slides)
    • Recommended week: 16-18
    • Relational Programming (Chapter 9)
    • Lab 5: SQpy Lab5.pdf
  • Lecture 13 Specialized Computation Models (video slides)
    • Recommended week: 17-18
    • Constraint Programming (Chapter 12)
    • Exercise 12: Deterministic Finite Automaton Ex12.ipynb
  • Lecture 14 Macro (video slides)
    • Recommended week: 18
  • Lecture 15 Running natively and JIT (video slides)
    • Recommended week: 18-19
  • Lecture 16 Garbage Collection (video slides)
    • Recommended week: 19-20
  • Lecture 17 Summary (video slides)

Activities from previous years


Page responsible: Cyrille Berger
Last updated: 2021-08-27