ST0244 Programming Languages (2023-2)

This page will be continuously updated during the course!


Course Information

Information from the coordination

Lecturer

Andrés Sicard Ramírez <asr(at)eafit(dot)edu(dot)co>
Office hours

Lectures

Class 4503, room 18-305
Tuesdays, 18:00 – 19:30
Fridays, 10:30 – 12:00

Dates and descriptions of exams and programming activities

Exam/Activity Week Date/Dealine Textbook material/Description
Exam 1 4th Tuesday, August 8 Ch. 1. Introduction
    § 1.1 Historical Perspective
    § 1.2 Models of Computation
    § 1.3 The Origins of a Few Programming Languages
    § 1.4 Language Implementation
    § 1.5 Types and Type Checking
Ch. 2. Syntax
    § 2.1. Terminology
    § 2.2. Backus Naur Form (BNF)
    § 2.3. Context-Free Grammars
    § 2.4. Derivations
    § 2.5. Parse Trees
    § 2.6. Abstract Syntax Trees
    § 2.13 Limitations of Syntactic Definitions
Exam 2 9th Tuesday, September 12 Ch. 4. Object-Oriented Programming
    § 4.1. The Java Environment
    § 4.2. The C++ Environment
    § 4.3. Namespaces
    § 4.4. Dynamic Linking
    § 4.5. Defining the Main Function
    § 4.6. I/O Streams
    § 4.7. Garbage Collection
    § 4.10. Inheritance and Polymorphism
    § 4.11. Interfaces and Adapters
    § 4.16. Exception Handling in Java and C++
Programming lab 1 10th Friday, September 22 (23:59) Java/C++ interoperability
Exam 3 15th Tuesday, Octuber 31 Ch. 5 Functional Programming
    § 5.1 Imperative Versus Functional Programming
    § 5.2. The Lambda Calculus
    § 5.3 Getting Started with with Standard ML (Haskell)
    § 5.4 Expressions, Types, Structures, and Functions
    § Parametric Polymorphism
    § 5.5 Recursive Functions
    § 5.6 Characters, Strings, and Lists
    § Lazy Evaluation
    § 5.7 Pattern Matching
    § 5.8 Tuples
    § 5.9 Let Expressions and Scope (Let Expressions and Where Clauses)
    § 5.10 Datatypes (Algebraic Data Types)
    § 5.12 Efficiency of Recursion
    § 5.13 Tail Recursion
    § 5.14 Currying
    § 5.15 Anonymous Functions
    § 5.16 Higher-Order Functions
    § 5.18 Input and Output
Programming lab 2 14th Tuesday, November 7 (23:59) Tic-Tac-Toe
Final project 18th Friday, November 24 (23:59) Formal verification of programs

Lectures Slides

Subject Slides
Introduction pdf ]
Syntax pdf ]
Object-Oriented Programming pdf ]
Functional Programming pdf ]
Logic Programming pdf ]

Source Code

Course repository.

Other